1. 唯一ID生成的核心挑战
在分布式系统中生成全局唯一标识符是个经典难题。我经历过多个千万级用户量的项目,深刻体会过ID冲突带来的数据混乱——去年某个电商促销日,就因订单ID重复导致87笔交易记录相互覆盖,团队花了整整36小时才完成数据修复。
传统方案各有局限:
- 数据库自增ID:单点瓶颈明显,分库分表时难以保证全局唯一
- UUID:无序且过长(36字符),不利于数据库索引效率
- 时间戳:高并发时极易重复
- 雪花算法:依赖机器时钟,时钟回拨会导致ID重复
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 现代唯一ID生成方案解析
2.1 雪花算法改进版
Twitter的雪花算法(Snowflake)经过我们团队改良后:
python复制import time
class Snowflake:
def __init__(self, worker_id):
self.worker_id = worker_id # 机器ID (0-31)
self.sequence = 0 # 序列号 (0-4095)
self.last_timestamp = -1 # 上次时间戳
def generate(self):
timestamp = int(time.time() * 1000)
if timestamp < self.last_timestamp:
raise Exception("时钟回拨异常")
if timestamp == self.last_timestamp:
self.sequence = (self.sequence + 1) & 0xFFF
if self.sequence == 0:
timestamp = self.wait_next_millis()
else:
self.sequence = 0
self.last_timestamp = timestamp
