Curator: ZooKeeper的使用配方

Curator: ZooKeeper的使用配方

ZooKeeper 作爲分佈式的存儲方式, 有很多種使用場景, 把典型的使用場景提取出來, 成爲"配方", 方便用戶參考. Curator 作爲這些典型場景的具體實現框架, 進一步簡化了用戶的使用成本.

Curator 實現了 ZooKeeper 配方文檔中列出的所有配方(兩階段提交除外)。單擊下面的配方名稱以獲取詳細文檔。注意:大多數 Curator 配方將自動創建配方的路徑的父節點, 默認值爲 CreateMode.CONTAINER (即znode 爲容器節點, 用於鎖, 選舉等功能, 空容器可能會被節點刪除)。另請參閱有關“Curator Recipes Own Their ZNode/Paths”的技術說明7

選舉

  • 領導者閂鎖 - 在分佈式計算中,領導者選舉是指定單個流程作爲分佈在多個計算機(節點)中的某個任務的組織者的過程。在任務開始之前,所有網絡節點都不知道哪個節點將充當任務的“領導者”或協調者。然而,在運行了領導者選舉算法之後,整個網絡中的每個節點都將特定的唯一節點識別爲任務領導者。
  • 領導人選舉 - Curator 領導人選舉配方。

  • 共享重入鎖 - 完全分佈式鎖,全局同步,意味着在任何快照時,沒有兩個客戶端認爲它們具有相同的鎖定。
  • 共享鎖 - 與共享重入鎖類似,但不可重入。
  • 共享可重入讀寫鎖 - 可跨 JVM 運行的可重入讀/寫互斥鎖。讀寫鎖保持一對相關的鎖,一個用於只讀操作,一個用於寫入。只要沒有寫入時,讀鎖定可以由多個讀取器進程同時保持。寫鎖是獨佔的。
  • 共享信號量 - 一種適用於跨 JVM 的計數信號量。所有進程使用相同鎖定路徑的在全部 JVM 中的都將實現進程間有限的租約。此外,這個信號量大多是“公平的” - 每個用戶將按照要求的順序獲得租約(從ZK的角度來看)。
  • 多共享鎖 - 將多個鎖作爲單個實體進行管理的容器。調用acquire() 時,將獲取所有鎖。如果失敗,則釋放所有已獲取的路徑。類似地,當調用release() 時,將釋放所有鎖(忽略失敗)。

屏障

  • 屏障 - 分佈式系統使用屏障來阻止一組節點的處理,直到滿足條件,此時允許所有節點繼續運行。
  • 雙重屏障 - 雙重屏障使客戶端能夠同步計算的開始和結束。當足夠的進程加入屏障時,進程開始計算並在完成後離開屏障。

計數器

  • 共享計數器 - 管理共享整數。觀看相同路徑的所有客戶端將具有共享整數的最新值(考慮ZK的正常一致性保證)。
  • 分佈式原子長整形 - 一個嘗試原子增量的計數器。它首先嚐試使用樂觀鎖定。如果失敗,則採用可選的 InterProcessMutex。對於樂觀和互斥兩種情況,都有重試策略用於重試增量。

高速緩存

  • 路徑緩存 - 路徑緩存用於觀察 ZNode。每當添加,更新或刪除子項時,路徑緩存將更改其狀態以包含當前子項集,子項的數據和子項的狀態。Curator 框架中的路徑緩存由 PathChildrenCache 類提供。對路徑的更改將傳遞給已註冊的 PathChildrenCacheListener 實例。
  • 節點緩存 - 一種試圖保持本地緩存的節點數據的實用程序。此類將監聽節點,響應更新/創建/刪除事件,下拉數據等。您可以註冊一個偵聽器, 在發生更改時將收到通知。
  • 樹緩存 - 一種實用程序,它嘗試在本地緩存 Z K路徑的所有子節點的所有數據。此類將觀察 ZK 路徑,響應更新/創建/刪除事件,下拉數據等。您可以註冊一個將在發生更改時收到通知的偵聽器。

節點

  • 持久節點 - 嘗試一直保持在 ZooKeeper 中的節點,即使通過連接和會話中斷也是如此。
  • 持久性TTL節點 - 當您需要創建 TTL 節點, 但又不希望通過定期手動設置數據來保持其活動時非常有用。
  • 集團成員 - 集團成員管理。將此實例添加到組中,並在組中保留成員的緩存。

隊列

  • 分佈式隊列 - 分佈式隊列 ZK 配方的實現。保證排入隊列的項目(通過 ZK 的PERSISTENTSEQUENTIAL 節點)。如果單個消費者從隊列中取出物品,他們將按FIFO 排序。如果順序很重要,請使用 LeaderSelector 指定單個消費者。
  • 分佈式Id隊列 - DistributedQueue 的一個版本,它允許ID與隊列項相關聯。如果需要,可以從隊列中刪除項目。
  • 分佈式優先級隊列 - 一種分佈式優先級隊列 ZK 配方的實現。
  • 分佈式延遲隊列 - 一種分佈式延遲隊列的實現。
  • 簡單分佈式隊列 - ZK分發附帶的 DistributedQueue 的替代品。

Curator 名稱來源

策展人(curator)的產生於西方博物館、美術館體系的建立密切相關。英文“curator”一詞在英漢詞典中以前通常被翻譯成“博物館館長”、“掌管者”、或“監護人”等,和藝術關係最爲密切的大概是“博物館館長”。事實上,在西方語境中,“curator”作爲職業最早也主要是指16世紀以來隨着私人博物館的興起而出現的在館內負責藏品研究、保管和陳列的專職人員。在某些情況下,curator可能也就是館長(director),亦需負責博物館的行政管理、資金籌集和社會關係等。後來,隨着藝術品在館藏中數量增多和重要性上升,出現了專門負責館藏藝術品研究、保管和陳列的人員。

參考文獻

http://curator.apache.org/cur...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章