分布式系统中设计分布式 ID 对于确保订单、用户或记录等实体的唯一性至关重要。
分布式 ID 的设计需求
- 唯一性:ID 必须在所有服务或系统中全局唯一。
- 可扩展性:系统应能够在高负载下以高吞吐量生成 ID。
- 排序性:在某些用例中,ID 需要是有序或大致按时间排序的(例如用于排序)。
- 避免碰撞:两个 ID 相同的概率应当极小。
- 去中心化:ID 的生成应不依赖单一的生成器,避免单点故障。
- 可用性:即使在网络分区时,ID 生成系统也应能正常工作。
- 紧凑性:ID 的格式应在存储时高效,特别是在数据库或日志中。
- 透明性:有时 ID 需要嵌入元数据(如时间戳或机器 ID )以便调试或追踪。