目錄
📊?分布式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通過架構創新顯著提升性能邊界,是分庫分表等高并發場景的優選