谈谈常用的分布式 ID 设计方案

首先,分布式全局 ID 的解决方案有很多,比如:

  • 使用 Mysql 的全局表
  • 使用 Zookeeper 的有序节点
  • 使用 MongoDB 的 objectid
  • redis 的自增 id
  • UUID 等等
  • ......

这些方案只是解决基础的 id 唯一性问题,在实际生产环境中,需要构建一个全局唯一 id 还需要考虑更多的因素:

  • 有序性, 有序的 ID 能够更好地确认数据的位置,

以及 B+数据的存储结构中,范围查询的效率更高,并且可以提升 B+树数据维护的效率。

  • 安全性,避免恶意爬取数据造成数据泄露
  • 可用性,ID 生成系统的可用性要求非常高,一旦出现故障就会造成业务不可用的问题
  • 性能,全局 id 生成系统需要满足整个公司的业务需求,涉及亿级别的调用,对性能要求较高 因此,如果我们选择数据库的全局表,你每获取一次 id 就需要更新数据库,性能上限比较明显, 而且基于数据库构建高扩展和高性能的解决方案难度很大。

所以,目前市面上主流的解决方案是基于 Twitter 早期开源的 Snowflake 雪花算法(图片)。

它是由 64 位长度组成的全局 id 生成算法,通过对 64 位进行区间划分来表述不同含义实现唯一性。

它的好处是:

  • 算法实现简单
  • 不存在太多外部依赖
  • 可以生成有意义的有序编号
  • 基于位运算,性能也很好,Twitter 测试的峰值是 10 万个每秒。

另外,美团公司开源了一个全局唯一 id 生成系统 leaf,它里面也用到了雪花算法去构建全局唯一 id 并且在高性能和高可用方面,做了很多的优化,为美团内部业务提供了每天上亿次的调用。

相关推荐
星恒讯工业路由器9 小时前
分布式光伏站点分散难联网?4G/5G点对多点自组网方案解析
分布式·物联网·5g·分布式光伏·自组网·点对多点通信·4g/5g
qq_4523962310 小时前
第十一篇:《eBPF 进阶:自定义探针与生产级可观测性部署》
分布式
重庆小透明10 小时前
Kafka 完全指南:从基础组件到核心原理(包含面试题)
java·分布式·微服务·架构·kafka
一本正经的不务正业11 小时前
kafka与RocketMQ的不同
分布式·kafka·rocketmq
国科安芯13 小时前
基于抗辐射MCU的卫星分布式控制系统CANFD总线架构研究
网络·人工智能·分布式·单片机·嵌入式硬件·架构·抗辐射
深蓝电商API1 天前
Redis 在分布式爬虫中的作用
redis·分布式·爬虫
凤山老林1 天前
高可用分布式任务调度架构:Spring Boot 集成 PowerJob 实战指南
spring boot·分布式·架构
海宇数据1 天前
零信任架构实战:基于海宇运营商近3个月平均账单构建自动化分布式租赁网关
人工智能·分布式·架构·自动化
IT大白鼠1 天前
MySQL 分布式集群系列 · 第二篇:架构深度拆解--NDB 三大核心节点
分布式·mysql·架构
醉颜凉1 天前
Kafka ISR与AR深度解析:副本同步机制核心概念
分布式·架构·kafka·ar