外观
一句话答案
64 位 ID:1 位符号 + 41 位时间戳(69 年)+ 10 位机器(1024 台)+ 12 位序列(4096/ms),注意时钟回拨问题。
核心要点
结构: 0(符号) | 41位时间戳(69年) | 10位机器(1024台) | 12位序列(4096/ms)
优点: 有序递增 / 高性能 / 不依赖第三方
时钟回拨问题: 机器时钟回拨会生成重复ID → 解决:拒绝/等待/备用机器ID
追问与易错
追问方向:
- 为什么 41 位时间戳?够用多久?
- WorkerID 怎么分配?
- 序列号 12 位够用吗?
易错点:
- ❌ 雪花算法全局递增——只是趋势递增
- ❌ 忽略时钟回拨问题
💡 记忆锚点
64位ID像身份证号的编码规则:1位固定0 + 41位时间戳(哪一毫秒生的,够用69年)+ 10位机器号(哪台机器生的,1024台)+ 12位序列号(同一毫秒第几个,最多4096个)。单机每秒可产400万ID,命门在时钟回拨——时钟倒退会撞号,必须检测并处理。