雪花算法(Snowflake)是 Twitter 设计的一种分布式 ID 生成策略,用于在分布式系统中生成全局唯一的 ID。雪花算法生成的 ID 结构为 64 位,包含以下几部分:

  1. 1 位符号位:始终为 0,表示正数。
  2. 41 位时间戳:表示当前时间与某个固定时间点(如:2021-08-01 00:00:00)的差值,单位为毫秒。这部分可以表示约 69 年的时间跨度。
  3. 10 位机器标识:可以包括数据中心 ID 和工作节点 ID,用于标识不同的数据中心和工作节点。
  4. 12 位序列号:在同一毫秒内,同一个工作节点可以生成的不同 ID 的数量。

雪花算法的 ID 容量计算如下:

  1. 时间戳:41 位
  2. 机器标识:10 位
  3. 序列号:12 位

总容量 = 41 + 10 + 12 = 63 位

**,在实际应用中,通常会使用 64 位的 ID,其中 1 位符号位始终为 0,因此实际可用的 ID 容量为 64 - 1 = 63 位。这意味着雪花算法可以支持约 9.22 × 10^18 个唯一的 ID。这个容量足够满足大多数分布式系统中的 ID 生成需求。