登录
首页 >  数据库 >  MySQL

雪花算法(SnowFlake)

来源:SegmentFault

时间:2023-02-16 15:33:10 258浏览 收藏

怎么入门数据库编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《雪花算法(SnowFlake)》,涉及到MySQL、算法、Java、mybatis-plus,有需要的可以收藏一下

什么是雪花算法?

雪花算法:解决id应该怎么生成的问题,帮助我们自动生成id的一种算法。

原理:

生成一个 64 位的long类型的一个id。

  1. 最高1位符号位,固定为0,代表正数,1代表负数
  2. 后面41位存储一个毫秒级的时间戳2^41/(1000606024365)= 69.73年
  3. 后面10位机器标识,最多可以部署2^10=1024台机器
  4. 最后12位为自增的计数序列号,用于保证同一毫秒时间戳下、同一机器生成的id尽量不重复,最多各异存储2^12=4096个序列

优点:

性能强,每秒可生成百万个不重复 id。
毫秒数在高位,自增序列在低位,整个ID都是趋势递增的
不依赖第三方库或者中间件。
在内存中进行,效率高

缺点

机器时钟回拨时,会导致重复ID生成。

好了,本文到此结束,带大家了解了《雪花算法(SnowFlake)》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多数据库知识!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>