雪花算法-snowflake

snowflake 算法

snowflake 算法是 twitter 开源的分布式 id 生成算法,就是把一个 64 位的 long 型的 id,1 个bit是不用的,用其中的 41 bit 做为毫秒数,用 10 bit 做为工做机器 id,12 bit 做为序列号。算法

  • 1 bit:不用,为啥呢?由于二进制里第一个 bit 为若是是 1,那么都是负数,可是咱们生成的 id 都是正数,因此第一个 bit 统一都是 0。
  • 41 bit:表示的是时间戳,单位是毫秒。41 bit 能够表示的数字多达 2^41 - 1,也就是能够标识 2^41 - 1 个毫秒值,换算成年就是表示69年的时间。
  • 10 bit:记录工做机器 id,表明的是这个服务最多能够部署在 2^10台机器上哪,也就是1024台机器。可是 10 bit 里 5 个 bit 表明机房 id,5 个 bit 表明机器 id。意思就是最多表明 2^5个机房(32个机房),每一个机房里能够表明 2^5 个机器(32台机器)。
  • 12 bit:这个是用来记录同一个毫秒内产生的不一样 id,12 bit 能够表明的最大正整数是 2^12 - 1 = 4096,也就是说能够用这个 12 bit 表明的数字来区分同一个毫秒内的 4096 个不一样的 id。
0 | 0001100 10100010 10111110 10001001 01011100 00 | 10001 | 1 1001 | 0000 00000000
相关文章
相关标签/搜索