在分布式開發(fā)中,唯一主鍵的設(shè)計非常重要,我們今天來看看分布式ID的常用設(shè)計
首先我們先明確一下分布式ID的定義
1.全局唯一,不是單點系統(tǒng)的唯一,而是分布式系統(tǒng)的唯一
2.有序性,通常需要保證生成的ID是有序遞增的,比如在數(shù)據(jù)庫中,遞增有助于做分區(qū),提高查詢效率
典型的方案有很多
-基于數(shù)據(jù)庫自增序列的實現(xiàn),這種方式優(yōu)缺點都非常明顯,好處是簡單好用,但是在擴展性和可靠性方面存在局限性
-基于Twitter早期開源的Snowflake的實現(xiàn)以及相關(guān)改動方案,這是目前應用相對廣泛的一種方式,整體長度通常是64位(1位標示位+41位時間戳+10位WorkerID+12位序列),通常使用java 的long類型存儲
另外Redis、Zookeeper、MongoDB等中間件也都有各種唯一ID解決方案。