2012-01-09 41 views
5

谷歌的Chubby分佈式鎖定管理器有一個叫做「音序器」的特性,我想用ZooKeeper來模擬。有沒有一種好的方法可以做到這一點?如何使用ZooKeeper實現Chubby風格的鎖定序列器?

定序器的工作原理如下:

  1. 客戶端獲取資源上的鎖
  2. 客戶端請求序爲它的鎖,這與一些元數據
  3. 客戶端的字符串進行調用到服務並將序列器作爲參數傳遞
  4. 該服務使用音序器驗證客戶端在處理請求之前仍保持鎖定

目標是防止客戶在撥打必須由鎖保護的遠程服務後死亡的情況。

Chubby的主要論文可在。排序器在2.4節中討論。

謝謝!

回答

6

zookeeper lock recipes都涉及鎖定過程創建一個sequential ephemeral znode。順序短暫znode的名稱將是唯一的,並且如果鎖定器會話由於鎖定器未在超時內發送有效心跳而過期,則znode將不再存在。

因此,鎖定過程只需傳遞它在鎖定到遠程服務時創建的順序短暫znode的名稱,並且遠程服務可以在處理之前檢查znode的存在。

您甚至可以讓遠程服務將節點添加到znode,並在znode被移除時收到通知。

+0

謝謝。不知何故,我錯過了序列號單調遞增的事實。 – 2012-01-11 07:36:08

+0

音序器是實現強制鎖定的一種方式嗎? – ady 2016-05-02 18:53:08