雪花算法理论

      雪花算法生成的最终结果其实就是一个long类型的Java长整型数字,这是一个大前提!
      生成一个long类型的数字id,其实就是对这64位的二进制形式里面填值,把这64位分成几个部分,彼此间互不影响,每部分都有自己的生成规则,这样在一定的简单的大前提下,能保证全局唯一。
      先说第一位,long类型的数字是有符号的,第一位是0就是正数,1是负数,我们生成的id必然要正数,所以第一位可以确定为0不变。
      剩下的63位分成三大部分!
      第一部分占41位,用来表示时间,什么时间后面会详细介绍。
      第二部分占10位,用来表示程序所在机器的信息。
      第三部分占12位,填充的是一个序列,可以理解为递增数字,这样前面的时间和机器数字如果都一样的话,用序列的区别来生成不同的id。
      上面的三大块信息转换成数字,填充到63位当中,基本可以保证任何时间任何机器生产的任何id不重复,可以推理出,时间和序列都是不可控的,但是机器信息是我们可以控制的,也就是说设置好机器信息是分布式id不重复的关键。

猜你喜欢

转载自blog.csdn.net/weixin_43562937/article/details/106493959