全域性唯一ID在分布式系統中用來做什麼用?

時間 2021-05-11 23:41:53

1樓:姚維

uuid 還有乙個重要的問題就是...慢. 實際上在大多數場景中, 根本用不著uuid那種方式來保證唯一性, 可以有更簡單的辦法, 具體的可以參考mongodb的id生成跟twitter的snowflake

2樓:dongmao zhang

最簡單乙個例子,在paxos演算法裡面第一步prepare階段的時候,需要比較乙個proposal number,這個數字就要滿足

1. 集群內單調遞增的

2. 集群內全域性唯一的.

參考:Paxos (computer science)

只簡單生成uuid(man uuid)都不能滿足這個要求:-(, 其實可以有很簡單的演算法, 假設集群的伺服器節點固定(比如zookeeper), 每個伺服器有乙個唯一sid,  演算法就非常簡單

def _increase_proposal_number(self):

return self.sid += len(server_list)

比如有節點 A(sid=10), B(sid=11) , C(sid=12),

那麼生產的proposal number 就是如下表

A: 10, 13, 16, 19 ...

B: 11, 14, 17, 20 ...

C: 12, 15, 18, 21 ...

這樣proposal number不僅全域性唯一而且單調遞增

3樓:Ed Huang

單調遞增的 id 能幹的事可多了,可以用來實現資料庫的 MVCC,進而實現 ACID 事務,檢測衝突什麼的。在分布式系統中尤其重要,這個領域其實說白了就是不停在和不確定的 wall clock 作鬥爭...如何用更弱的約束達到更強的一致性,我覺得單調遞增的唯一 id 生成器是乙個利器

分布式深度學習系統與傳統的分布式系統的區別

我覺得沒法嚴格區分吧,傳統分布式維護資料一致性 資料重發 災備等等,任何資料對它來說都是一串二進位制編碼。分布式深度學習系統 或者分布式機器學習系統 是在一套傳統分布式系統基礎上,更關注與如何進行梯度同步 引數同步 如何將傳統優化演算法並行化 如何將不可並行的優化演算法偽並行化等等。 桂能 傳統分布...

分布式系統裡使用者ID生成有什麼好的方法和規則能滿足「唯一 盡量短 不能直接看出規則」這幾個條件

Twitter有個snowflake演算法。twitter snowflake 最高位不用,永遠為0,其餘三組bit佔位均可浮動,看具體的業務需求而定。預設情況下41bit的時間戳可以支援該演算法使用到2082年,10bit的工作機器id可以支援1023臺機器,序列號支援1毫秒產生4095個自增序列...

在分布式系統中,怎麼memcache實現分布式鎖,可以實現嗎?

啊峰鍋 最近我對分布式鎖有所學習和思考,redis的incr或許是個不錯的嘗試。我也寫了如下例子 xiaodan zhuang Tim 的文章寫的很清楚了 Memcache mutex設計模式 官方也有指導文件 慕容行者 memcached可以用incr decr獲得鎖,用get set獲得鎖是不安...