ym-snowflake

1.0.1 • Public • Published

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用完向上借位

Readme

Keywords

Package Sidebar

Install

npm i ym-snowflake

Weekly Downloads

3

Version

1.0.1

License

ISC

Unpacked Size

4.56 kB

Total Files

5

Last publish

Collaborators

  • yyimen