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),亦需負責博物館的行政管理、資金籌集和社會關係等。後來,隨著藝術品在館藏中數量增多和重要性上升,出現了專門負責館藏藝術品研究、保管和陳列的人員。