1.0.1 • Published 4 years ago

ym-snowflake v1.0.1

Weekly downloads
3
License
ISC
Repository
-
Last release
4 years ago

yimen 的雪花算法

前言

众所周知, 在分布式全局唯一ID生成器方案中, 由Twitter开源的SnowFlake算法对比美团Leaf为代表的需要部署的发号器算法, 因其有性能高, 代码简单, 不依赖第三方服务, 无需独立部署服务等优点, 在一般情况下已经能满足绝大多数系统的需求, 原生SnowFlake, 百度UidGenerator这类基于划分命名空间原理的算法已经积累了大量用户;

使用原生的雪花算法其默认生成的是64bit长整型 因为JS的Number类型精度最高只有53bit, 导致JS其最大安全值只有 2^53 = ‭0xFFFFFFFFFFFFF = 9007199254740992

原雪花算法的64bit分布

1 bit 不用 41 bit 毫秒值的时间戳 69 年的时间 10 bit 产生的机器id(一般5bit数据中心id 5bit机器id) 12 bit 序号

现设计兼容53bit的雪花算法

  • unix32位时间戳 存 1970-01-01的秒数 2038年用尽
  • 我们的时间戳 从2020-01-01开始 存30bit 0x3FFFFFFF 可存 34年
  • 17bit 顺序位
  • 1bit 时钟回拨问题启用位 若发现时间回拨
  • 5bit 机器位 snowWorkerID
  • 若1秒内17bit用完向上借位
1.0.1

4 years ago

1.0.0

4 years ago