暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

雪花算法介绍

码上记录 2021-09-27
1183

雪花算法是Twitter开源的全局分布式ID算法。


在雪花算法中,ID有8个字节,64位。64位是怎么分配的呢?看一下下面这张图。


第1位表示符号位,Java中符号位为0表示正数,符号位为1表示负数。ID都是正数,所以符号位是0。


时间戳占41位,41位的时间戳可以表示毫秒级的时间,41的时间戳可以使用69年。


工作机器ID占10位,可以使用前5位作为IDC机房标识,后5位作为单机房机器标识。10位工作机器id总共可以表示1024(2的10次方)个机器。


序列号占12位,表示同一毫秒内同一节点可以生成4096(2的12次方)个序列号。


雪花算法可以在单台机器上运行,也可以在多台机器上运行,只要配置不同的工作机器ID就可以了。


但是雪花算法的缺点也很明显,它依赖时间戳,如果一台机器的时钟不准,当时钟发生回拨的时候会生成重复的ID。


目前雪花算法在github上已经不维护了。Twitter把它放在了snowflake-2010标签下,还是可以下载到源码的。


Twitter在github上的声明。



文章转载自码上记录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论