文章最后更新时间:
【免责声明:本文由AI辅助生成,内容仅供参考,不构成专业建议。】
分布式ID生成方案指南
在分布式系统中,唯一ID生成是基础但关键的问题,需要兼顾唯一性、有序性和高性能。
常见方案对比
- UUID:128位全局唯一,无序,字符串存储开销大
- 数据库自增:简单可靠,性能瓶颈明显
- Snowflake:Twitter开源,64位,时间戳+机器ID+序列号
- Leaf:美团开源,号段模式+Snowflake模式
Snowflake实现
class Snowflake:
def __init__(self, machine_id):
self.machine_id = machine_id
self.sequence = 0
self.last_ts = 0
def next_id(self):
ts = int(time.time() * 1000)
if ts == self.last_ts:
self.sequence = (self.sequence + 1) & 0xFFF
else:
self.sequence = 0
self.last_ts = ts
return (ts << 22) | (self.machine_id << 12) | self.sequence
选型建议
- 单机小系统:数据库自增
- 分布式系统:Snowflake或Leaf
- 需要展示:自定义短码生成
更多技术文章:https://blog.hanyucloud.com | 客服:400-880-3980
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END

















- 最新
- 最热
只看作者