分布式ID生成方案小结

分布式ID生成方案

自增

数据库自增ID

  • 基于数据库自增ID

  • 性能低

    • 每次获取都要请求数据库
  • 可靠性差

    • 单机宕机不可用

数据库多主模式

  • 解决单机性能低和可靠性差问题

  • 单独给每个数据库实例配置不同起始值和步长

  • 扩展性差

    • 扩展多主集群时需重新规划起始值和步长,易出现重复ID

号段模式

  • 每次从数据库获取ID区间,本机缓存
  • 分布式ID生成服务宕机或重启导致ID区间丢失,造成ID空洞

Redis的incr命令

  • RDB持久化,重启Redis导致ID重复

滴滴TinyId

  • 号段模式基础上将自增逻辑转移到业务应用本地

雪花算法

long类型64bit

  • 标识位1bit
  • 时间戳41bit
  • 工作机器ID10bit
  • 序列号位12bit

百度(uid-generator)

  • workId占22bit

    • 自定义workId生成策略
    • 默认启动时数据库插入数据获取自增ID,数据由host和port组成
  • 时间占28bit(单位是秒)

  • 序列号位13bit

美团(Leaf)

  • 既支持号段也支持雪花算法
  • workId使用ZK顺序节点生成
分布式ID生成方案.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原创申明:本文由公众号【猿灯塔】原创,转载请说明出处标注 今天呢!灯塔君跟大家讲: 分布式ID生成方案总结 ID是...
    猿灯塔阅读 165评论 0 0
  • 一、为什么要用分布式ID? 在说分布式ID的具体实现之前,我们来简单分析一下为什么用分布式ID?分布式ID应该满足...
    码农小光阅读 7,108评论 3 169
  • ID是数据的唯一标识,传统的做法是利用UUID和数据库的自增ID,在互联网企业中,大部分公司使用的都是Mysql,...
    源码之路阅读 460评论 0 2
  • 一、为什么要用分布式ID?分布式ID应该满足哪些特征? 1️⃣什么是分布式ID?在业务数据量不大的时候,单库单表完...
    Djbfifjd阅读 544评论 0 2
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,588评论 16 22