分布式 ID 生成算法 -- Snowflake
Snowflake 是 Twitter 采用的一种分布式 ID 生成算法。
核心
Snowflake 算法生成的 ID 包含四个部分:
-
最高一位
占用
1 bit,值始终是0,没有实际作用 -
时间戳
默认占用
41 bit,精确到毫秒,总共可以容纳约 69 年的时间 -
工作机器 ID
占用
10 bit,高位5 bit是数据中心 ID,低位5 bit是工作节点 ID,最多可以容纳1024个节点。 -
***
占用 12 bit,这个值在同一毫秒同一节点上从
0开始不断累加,最多可以累加到4095
因此 SnowFlake 算法在同一毫秒内在单一节点上可以生成 4096 个全局唯一 ID,考虑到最大 1024 个节点,因此 SnowFlake 算法在同一毫秒内可以生成 1024 * 4096 个全局唯一 ID。
除最高位外,其余三组占位均可浮动,视具体业务需求而定。
与 UUID 的对比
- UUID(Universally Unique Identifier),通用唯一识别码,占用 32 位的无序字符串,入库性能较差
转载于:https://my.oschina.net/u/3190679/blog/2208343