SnowFlake雪花算法

雪花算法很适合拿来生成订单id,因为其具有时间维度(时间戳),具有自增性

也因为其具有时间自增性,也比UUID更适合拿来做分库分表时的分布式id

雪花算法生成的id格式:64位(时间戳、机器号、序列号)

SnowFlake雪花算法_第1张图片

优点:

  • 高并发分布式环境下生成不重复 id,每秒可生成百万个不重复 id。
  • 基于时间戳,以及同一时间戳下序列号自增,基本保证 id 有序递增。
  • 不依赖第三方库或者中间件。
  • 算法简单,在内存中进行,效率高。

缺点:

  • 依赖服务器时间,服务器时钟回拨时可能会生成重复 id。(可以避免)算法中可通过记录最后一个生成 id 时的时间戳来解决,每次生成 id 之前比较当前服务器时钟是否被回拨,避免生成重复 id

你可能感兴趣的:(算法,分布式)