分布式之雪花算法 - Go语言中文社区

分布式之雪花算法


1.雪花ID的用途

雪花算法用来在分布式集群中生成唯一ID。即在需要在多台机器需要分别生成ID,又要保证生成的ID是唯一的、趋势递增的情况下使用的一种算法。

2.雪花ID的组成

雪花算法生成一个64位的ID,最高位固定为0,之后41位为时间戳,在之后的10位为机器编号,最后的12位为序号。

1.1为什么只可以使用69年

41位的时间戳即2^41毫秒,换算一下是69年。时间戳原本也是一个64位的数字,这里取了其低41位。从当前时间开始,到低41位开始出现重复需要69年。这就是为什么说雪花算法最多可以使用69年的原因。

1.2支持的机器个数

机器编号为10位,2^10=1024,所以雪花算法最多支持1024个机器。

1.3每台机器上可以生成的ID数

最后12位是一台机器上一毫秒可以产生的序号数,为212=4096个。即一台机器上一毫秒最多生成4096个不同的ID。而对于整个集群来说,如果1024个机器全部部署,最多是222个ID约419万。

3.雪花算法中ID生成步骤

1.获取时间戳
2.判断当前时间戳和上一次生成ID时的时间戳是否一致,如果一致则序号递增;
3.如果不一致,则序号从0开始。
4.时间戳左移22位,机器ID左移12位,序号左移0位,三者相或就是雪花ID。

4.为什么叫雪花ID

因为世界上不存在完全相同的两片雪花,而这里也不存在完全相同的两个雪花ID。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/vxzhg/article/details/125108979
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2023-01-02 12:16:30
  • 阅读 ( 260 )
  • 分类:算法

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢