雪花算法(Snowflake)是 Twitter 设计的一种分布式 ID 生成策略,用于在分布式系统中生成全局唯一的 ID。雪花算法生成的 ID 结构为 64 位,包含以下几部分:
- 1 位符号位:始终为 0,表示正数。
- 41 位时间戳:表示当前时间与某个固定时间点(如:2021-08-01 00:00:00)的差值,单位为毫秒。这部分可以表示约 69 年的时间跨度。
- 10 位机器标识:可以包括数据中心 ID 和工作节点 ID,用于标识不同的数据中心和工作节点。
- 12 位序列号:在同一毫秒内,同一个工作节点可以生成的不同 ID 的数量。
雪花算法的 ID 容量计算如下:
- 时间戳:41 位
- 机器标识:10 位
- 序列号:12 位
总容量 = 41 + 10 + 12 = 63 位
**,在实际应用中,通常会使用 64 位的 ID,其中 1 位符号位始终为 0,因此实际可用的 ID 容量为 64 - 1 = 63 位。这意味着雪花算法可以支持约 9.22 × 10^18 个唯一的 ID。这个容量足够满足大多数分布式系统中的 ID 生成需求。