美團雪花LEAF算法
leaf的優勢: 高可靠 低延遲 全局唯一
目前主流的分布式ID大部分基於 數據庫號段模式和雪花算法,美團2者兼具
leaf-segment模式
-
從數據庫獲取MAX_ID ,服務本地生成 相應步長的自增ID;
-
並不是號用完就去數據庫加載max_id;而是號段消耗10%后就去提前加載 做到無阻塞
leaf-snowflake
1 + 41(時間戳) + 5 機房 + 5 機器 + 12 seq = 64
根據zookeeper生成workId 也就是 機房+機器
leaf的workerId是基於zk的順序id來生成的,每個應用在啟動時都會在zk生成一個順序id,相當於一個機器對應一個順序節點
Leaf-snowflake
對Zookeeper是一種弱依賴關系,除了每次會去ZK拿數據以外,也會在本機文件系統上緩存一個workerID
文件。一旦ZooKeeper出現問題,恰好機器出現故障需重啟時,依然能夠保證服務正常啟動。