这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
雪花算法
雪花算法(Snowflake)是 Twitter 开源的分布式 ID 生成算法,它使用 64 位长整型生成全局唯一且趋势递增的 ID。这是目前最流行的分布式 ID 方案之一。
Snowflake 的核心是把一个 64 位整数拆成时间戳、机器 ID 和序列号。时间戳保证趋势递增,机器 ID 区分不同节点,序列号解决同一毫秒内的并发请求。应用实例可以本地生成 ID,不需要每次访问中心存储,因此性能高、延迟低。
本章会拆解每个字段的设计。时间戳起点会影响可用年限,机器 ID 位数决定最多支持多少节点,序列号位数决定单节点每毫秒生成上限。字段分配不是固定答案,应该根据业务规模、部署区域、峰值 QPS 和生命周期做容量估算。
雪花算法也会引入新问题。它依赖本机时钟,时钟回拨可能导致重复 ID;机器 ID 分配错误会让两个节点生成冲突 ID;多机房部署时,需要考虑区域编码和扩容规划。它看似无中心,实际上仍然需要机器身份治理和时间治理。
完成本章后,你会掌握 Snowflake 的设计逻辑,而不是只记住一个 bit 分配图。你应当能根据场景调整字段位数,并说明它为什么适合高并发、本地生成、趋势递增的业务主键。