雪花算法(Snowflake)是一种用于生成唯一ID的算法,最初由Twitter提出。它生成的ID是一个64位的长整型数字,结构如下:
+----------------------+
| 41 |
| 0 |
+----------------------+
| 10 |
| 0 |
+----------------------+
| 13 |
| 0 |
+----------------------+
| 32 |
| 0 |
+----------------------+
| 0 |
| 0 |
+----------------------+
这64位ID结构如下:
- 1位符号位:始终为0,表示正数。
- 41位时间戳:表示当前时间与某个固定时间点(如:2021-01-01 00:00:00)的差值,单位是毫秒。这部分可以表示约69年的时间。
- 10位机器标识:用于标识不同的机器或服务实例。最多可以支持1024个节点。
- 13位序列号:在同一毫秒内生成的ID序列,最多可以生成4096个ID。
雪花算法生成的ID具有全局唯一性,且随着时间的推移,ID的生成速度会逐渐加快。这种特性使得雪花算法非常适合用于分布式系统中生成唯一ID的场景。