5.snowflake雪花算法生成ID这种方案大致来说是一种以划分命名空间(UUID也算,由于比较常见,所以单独分析)来生成ID的一种算法,这种方案把64-bit分别划分成多段,分开来标示机器、时间等,比如在snowflake中的64-bit分别表示如下图(图片来自网络)所示:
文章插图
41-bit的时间可以表示(1L<<41)/(1000L*3600*24*365)=69年的时间,10-bit机器可以分别表示1024台机器 。如果我们对IDC划分有需求,还可以将10-bit分5-bit给IDC , 分5-bit给工作机器 。这样就可以表示32个IDC,每个IDC下可以有32台机器,可以根据自身需求定义 。12个自增序列号可以表示2^12个ID,理论上snowflake方案的QPS约为409.6w/s,这种分配方式可以保证在任何一个IDC的任何一台机器在任意毫秒内生成的ID都是不同的 。
雪花算法ID优点:
- 毫秒数在高位,自增序列在低位,整个ID都是趋势递增的 。
- 不依赖数据库等第三方系统,以服务的方式部署,稳定性更高,生成ID的性能也是非常高的 。
- 可以根据自身业务特性分配bit位,非常灵活 。
- 强依赖机器时钟,如果机器上时钟回拨,会导致发号重复或者服务会处于不可用状态 。
作者简介陈睿|mikechen,10年+大厂架构经验,《BAT架构技术500期》系列文章作者,专注于互联网架构技术 。
阅读mikechen的互联网架构更多技术文章合集
Java并发|JVM|MySQL|Spring|Redis|分布式|高并发
【5种分布式ID生成方案 分布式ID详解】
推荐阅读
- aardio + Python 可视化快速开发桌面程序,一键生成独立 EXE
- .Net下的分布式唯一ID
- 迪奥999是什么色系的口红 迪奥999是什么色系
- 吃完羊肉千万别碰5种食物 羊肉和白萝卜能一起吃吗?
- 条形码生成器在线 条形码生成器
- 男生成熟稳重的说说 成熟稳重的说说
- 最新朋友圈点赞生成器 最新发朋友圈必赞的说说
- 电子公章在线生成 没有数字的公章有效吗?
- 刚注册的qq号忘了怎么办
- excel学生成绩表排名怎么做 Excel怎么给学生成绩表排序