当前位置: 首页 > web >正文

分布式ID方案

目录

📊 分布式ID方案核心指标对比

🔍 分方案深度解析

⚙️ 1. UUID (Universally Unique Identifier)

❄️ 2. Snowflake (Twitter开源)

☘️ 3. 美团Leaf

号段模式

Snowflake模式

🔄 4. 百度UidGenerator

🚀 5. CosId

💎 选型建议



📊 分布式ID方案核心指标对比

方案唯一性有序性吞吐量存储空间自治性典型场景
UUID全局唯一完全无序300万/秒128位完全自治会话ID、临时文件
Snowflake全局唯一趋势递增409.6万/秒64位依赖时钟订单ID、日志追踪
美团Leaf全局唯一本地单调递增5万+/秒 (远程)64位弱依赖DB金融交易、高可用系统
百度Uid全局唯一时间趋势递增600万+/秒64位依赖RingBuffer高并发写入场景
CosId全局唯一本地严格递增1.27亿+/秒64位灵活依赖存储分库分表、极致性能需求

🔍 分方案深度解析

⚙️ 1. UUID (Universally Unique Identifier)
  • 原理:基于MAC地址、时间戳、随机数拼接后哈希生成128位标识符(如 123e4567-e89b-12d3-a456-426614174000)。

  • 优点:无中心节点、生成简单、全球唯一。

  • 缺点

    • 长度大:128位存储效率低,数据库索引膨胀;

    • 完全无序:导致数据库插入频繁页分裂,性能骤降;

    • 安全隐患:版本1可能泄露MAC地址。

  • 适用场景:临时令牌、文件命名、非数据库主键场景。

❄️ 2. Snowflake (Twitter开源)
  • 官网:https://github.com/twitter/snowflake
  • 原理:64位ID = 时间戳(41位) + 机器ID(10位) + 序列号(12位),实现本地生成。

  • 优点

    • 趋势递增:利于数据库B+树索引优化;

    • 高性能:单机可达409.6万ID/秒。

  • 致命问题

    • 时钟回拨:服务器时间倒退导致ID重复(需人工干预);

    • 机器ID管理难:动态扩缩容时需保障ID唯一性。

  • 改进方向:Leaf-Snowflake 通过ZK缓存workerId弱依赖。

☘️ 3. 美团Leaf
  • 官网:Leaf:美团分布式ID生成服务开源 - 美团技术团队
  •  源码地址:https://github.com/Meituan-Dianping/Leaf
号段模式
  • 原理:预分配ID段(如[1,1000]),内存分发,异步更新数据库。

  • 优化演进

    • 双Buffer:DB故障时无缝切换备用号段,实现高可用5;

    • 动态Step:根据QPS自动调整号段长度(如QPS↑ → Step×2)。

  • 性能:远程调用QPS 5W+,TP99 <1ms。

Snowflake模式
  • 解决workerId依赖:ZK分配 + 本地缓存,宕机时降级使用历史workerId。

🔄 4. 百度UidGenerator
  • 源码地址:https://github.com/baidu/uid-generator
  • 核心改进

    • RingBuffer预缓存:提前生成ID填充环形队列,并发取号时无锁;

    • 借时机制:当前毫秒序号耗尽时,“借用”未来时间戳继续生成。

  • 局限

    • 默认时间戳仅支持8.7年(41位设计);

    • WorkerId复用策略缺失,扩容受限。

🚀 5. CosId
  • 官网:SegmentId | CosId
  • 源码地址:https://github.com/Ahoo-Wang/CosId

  • 架构创新

    • SegmentChainId:无锁号段链,基于饥饿状态动态扩容安全距离,吞吐达1.27亿/秒;

    • SnowflakeId增强:解决时钟回拨、机器号动态分配、分片不均问题;

  • 多存储支持:JDBC/Redis/ZooKeeper号段分发器,适配不同基础设施。


💎 选型建议

  • 简单轻量 → UUID(非数据库场景);

  • 有序性与性能平衡 → Snowflake/Leaf-Snowflake(需解决时钟问题);

  • 高可用容忍DB故障 → Leaf号段模式(双Buffer容灾);

  • 极致性能需求 → CosId(无锁号段链);

  • 长期运行系统 → 慎用百度Uid(注意时间戳耗尽问题)。

💡 分布式ID的本质是权衡:唯一性、有序性、性能与运维复杂度需结合业务流量、数据库架构及运维能力综合决策。新一代方案如CosId通过架构创新显著提升性能边界,是分库分表等高并发场景的优选

http://www.xdnf.cn/news/15168.html

相关文章:

  • 羊肚菌自动采收车设计cad【7张】+三维图+设计说明书
  • 什么?不知道 MyBatisPlus 多数据源(动态数据源)干什么的,怎么使用,看这篇文章就够了。
  • 目标检测中的评价指标计算
  • 从零搭建多商户商城系统源码:技术栈、数据库设计与接口规划详解
  • 好用研发项目管理软件对比:8Manage PM与飞书功能深度测评
  • 【网络安全】利用 Cookie Sandwich 窃取 HttpOnly Cookie
  • Canvas 状态管理 语法糖 canvas.withSave() {}
  • Houdini 分布式解算效率瓶颈突破:渲染 101 云集群实战指南
  • 【网络】Linux 内核优化实战 - net.ipv4.tcp_keepalive_probes
  • Docker 镜像加速站汇总与使用指南
  • GitHub上优秀的开源播放器项目介绍及优劣对比
  • iOS APP混合开发性能测试怎么做?页面卡顿、通信异常的工具组合实战
  • Apache Shiro 框架详解
  • K线连续涨跌统计与分析工具
  • 3D Surface Reconstruction with Enhanced High-Frequency Details
  • 快速上手MongoDB与.NET/C#整合
  • 大模型在膀胱癌诊疗全流程预测及应用研究报告
  • 大数据的安全挑战与应对
  • 【AXI】读重排序深度
  • 在 Ubuntu 上安装和配置 Kafka
  • 【MSSQL】如何清理SQL SERVER内存解决内存占用高的问题
  • vivo Pulsar 万亿级消息处理实践(3)-KoP指标异常修复
  • Qt 信号槽的扩展知识
  • 新手向:实现ATM模拟系统
  • Java线程池原理概述
  • K线涨跌概率分析系统
  • 【双目深度估计】9种立体匹配算法整合包一键运行,支持相机标定、目标检测和tensorrt加速
  • 力扣61.旋转链表
  • 【WEB】Polar靶场 Day7 详细笔记
  • 北京-4年功能测试2年空窗-报培训班学测开-第四十六天