Snowflake 是 Twitter 开源的分布式 ID 生成算法,其结果为 long(64bit) 的数值。
其特性是各节点无需协调、按时间大致有序、且整个集群各节点单不重复。
该数值的默认组成如下(符号位之外的三部分允许个性化调整):
![img](https://i-blog.csdnimg.cn/blog_migrate/a2053172f1d0de58165b004947f709a7.jpeg)
- 1bit: 符号位,总是 0(为了保证数值是正数)。
- 41bit: 毫秒数(可用 69 年);
- 10bit: 节点ID(5bit数据中心 + 5bit节点ID,支持 32 * 32 = 1024 个节点)
- 12bit: 流水号(每个节点每毫秒内支持 4096 个 ID,相当于 409万的 QPS,相同时间内如 ID 遇翻转,则等待至下一毫秒)