生成全局唯一 ID(Distributed ID)是分布式系统中非常常见且关键的需求。一个优秀的分布式 ID 通常需要满足以下核心指标: 1. 全局唯一性:不能出现重复。 2. 趋势递增:通常用于数据库主键,利于 B+ 树索引性能(避免页分裂)。 3. 高性能:生成 ID 的延迟要低,并发要高。 4. 高可用:ID 生成服务不能挂,否则整个业务瘫痪。 以下是目前业界主流的几种方案及其优缺点深度解析: --- 1. 雪花算法 (Snowflake) —— 最主流的算法方案 Twitter 开源的算法,核心思想是利用 64位 long 型 的数字来存储 ID。 结构组成 (64 bit) 1 bit:不使用(符号位,始终为0)。 41 bits:毫秒级时间戳(可以使用 69 年)。 10 bits:机器 ID(5位数据中心 ID + 5位工作机器 ID),支持 1024 个节点。 12 bits:毫秒内的序列号,支持同一毫秒内生成 4096 个 ID。 优点 高性能:本地生成,无网络消耗,单机并发极高(理论上每秒几百万)。 趋势递增:基于时间戳,保证了 ID 是随时间递增的,对数据库...