在美團早期,有的業務直接通過 DB 自增的方式生成 ID,有的業務通過 Redis 緩存來生成 ID,也有的業務直接用 UUID 這種方式來生成 ID。以上的方式各自有各自的問題,因此美團實現了一套分佈式 ID 生成服務來滿足需求。具體 Leaf 設計文檔見: Leaf 美團分佈式 ID 生成服務
美團的 Leaf 也是一個分佈式 ID 生成框架。它非常全面,即支持號段模式,也支持 Snowflake 模式。
Leaf 中的 Snowflake 模式和原始 Snowflake 算法的不同點,也主要在 workId 的生成,Leaf 中 workId 是基於 ZooKeeper 的順序 Id 來生成的,每個應用在使用 Leaf-snowflake 時,在啓動時都會在 Zookeeper中生成一個順序 Id,相當於一臺機器對應一個順序節點,也就是一個 workId。
最後,附上 Github 地址:美團 Leaf