分布式ID生成方案完全指南:Snowflake、Leaf等方案对比与实战

文章最后更新时间:2026-04-08 08:45:07

【免责声明:本文由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
喜欢就支持一下吧
点赞5 分享
评论 共3条

请登录后发表评论

    暂无评论内容