SnowFlake雪花算法

雪花ID生成的是一个64位的二进制正整数,然后转换成10进制的数。64位二进制数由如下部 分组成:

snowflake id生成规则

1位标识符:始终是0,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0, 负数是1,所以id一般是正数,最高位是0。

41位时间戳:41位时间截不是存储当前时间的时间截,而是存储时间截的差值(当前时间截 开始时间截 )得到的值,这里的的开始时间截,一般是我们的id生成器开始使用的时间,由我 们程序来指定的。

10位机器标识码:可以部署在1024个节点,如果机器分机房(IDC)部署,这10位可以由 5位 机房ID + 5位机器ID 组成。

12位序列:毫秒内的计数,12位的计数顺序号支持每个节点每毫秒(同一机器,同一时间截)产 生4096个ID序号