雪花算法的实现原理

SnowFlake算法是一种分布式ID生成方案,通过41位时间戳、5位机房ID、5位机器ID和12位序列号确保了ID的唯一性。该算法不依赖数据库,能每秒生成数百万个自增ID,适用于高并发场景。但其缺点是对系统时间一致性的依赖可能导致ID冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 第一部分1bit:0没有任何意义(因为二进制里第一个bit如果为1,那么都是负数,但是我们生成的ID都是正数,所以第一个bit统一都是0);
  • 第二部分41bit:表示时间戳(毫秒)(41bit可以表示的数字多达2^41 - 1,也就是可以标识2^41 - 1个毫秒值,换算成年就是表示69年的时间);
  • 第三部分5bit:表示机房ID(最多可以代表2^5=32个机房);
  • 第四部分5bit:表示机器ID(最多可以代表2^5=32台机器);
  • 第五部分12bit:表示序号,就是某个机房某台机器上这一毫秒内同时生成的ID序号(可以代表的最大正整数为2^12 - 1=4096,也就是说可以用这个12bit代表的数字来区分同一个毫秒内的4096个不同的ID)。

SnowFlake算法优点

  • 高性能高可用:生成时不依赖于数据库,完全在内存中生成;
  • 容量大:每秒钟可以生成数百万的自增ID;
  • ID自增:存入数据库中,索引效率高。

SnowFlake算法缺点

  • 依赖与系统时间的一致性,如果系统时间被回调,或者改变,可能会造成ID冲突或重复。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值