分布式之雪花算法

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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值