返回首页
Snowflake 算法 · 趋势递增 · 分布式唯一

Snowflake 64位结构

位段位数作用取值
符号位1位固定0,保证ID为正数0
时间戳41位自定义纪元起的毫秒数可用约69年
数据中心ID5位机房/数据中心编号0-31
机器ID5位节点/工作机器编号0-31
序列号12位同一毫秒内自增每毫秒4096个

优点:整体趋势递增(对数据库索引友好)、本地生成不依赖数据库、理论每秒单机可发 409.6 万个。纪元(EPOCH)可自定义,本工具使用 2020-01-01 00:00:00 UTC 作为起点。

常见问题

雪花ID会不会重复?
只要保证每台机器的 数据中心ID+机器ID 组合唯一,时钟不回拨,同一毫秒内序列号递增,就不会重复;生产环境需做好时钟回拨保护。
为什么用JS生成的ID和Java后端不一样?
雪花ID为64位长整型,超过了 JS Number 的安全整数范围(2^53),本工具用 BigInt 精确计算;后端传前端时建议用字符串,避免精度丢失末两位变0。
适合做订单号吗?
适合,趋势递增且不暴露业务量;但对C端展示的订单号常再混淆或加密,避免竞品通过ID推算单量。