ZooKeeper简介和概念知识
1. 簡介
ZooKeeper是一種分布式協調服務,用于管理大型主機。在分布式環境中協調和管理服務是一個復雜的過程。
ZooKeeper通過其簡單的架構和API解決了這個問題。ZooKeeper允許開發人員專注于核心應用程序邏輯,而不必擔心應用程序的分布式特性。
ZooKeeper框架最初是在“Yahoo!"上構建的,用于以簡單而穩健的方式訪問他們的應用程序。 后來,Apache ZooKeeper成為Hadoop,HBase和其他分布式框架使用的有組織服務的標準。 例如,Apache HBase使用ZooKeeper跟蹤分布式數據的狀態。
?
?
2. 概念知識
層次命名空間
下圖描述了用于內存表示的ZooKeeper文件系統的樹結構(ZooKeeper的數據保存形式)。ZooKeeper節點稱為?znode?。每個znode由一個名稱標識,并用路徑(/)序列分隔。
每個znode最多可存儲1MB的數據。
?
Znode的類型
Znode被分為持久(persistent)節點,順序(sequential)節點和臨時(ephemeral)節點。
- 持久節點?- 即使在創建該特定znode的客戶端斷開連接后,持久節點仍然存在。默認情況下,除非另有說明,否則所有znode都是持久的。
- 臨時節點?- 客戶端活躍時,臨時節點就是有效的。當客戶端與ZooKeeper集合斷開連接時,臨時節點會自動刪除。因此,只有臨時節點不允許有子節點。如果臨時節點被刪除,則下一個合適的節點將填充其位置。臨時節點在leader選舉中起著重要作用。
- 順序節點?- 順序節點可以是持久的或臨時的。當一個新的znode被創建為一個順序節點時,ZooKeeper通過將10位的序列號附加到原始名稱來設置znode的路徑。例如,如果將具有路徑?/myapp?的znode創建為順序節點,則ZooKeeper會將路徑更改為?/myapp0000000001?,并將下一個序列號設置為0000000002。如果兩個順序節點是同時創建的,那么ZooKeeper不會對每個znode使用相同的數字。順序節點在鎖定和同步中起重要作用。
Watches(監視)
監視是一種簡單的機制,使客戶端收到關于ZooKeeper集合中的更改的通知。客戶端可以在讀取特定znode時設置Watches。Watches會向注冊的客戶端發送任何znode(客戶端注冊表)更改的通知。
Znode更改是與znode相關的數據的修改或znode的子項中的更改。只觸發一次watches。如果客戶端想要再次通知,則必須通過另一個讀取操作來完成。當連接會話過期時,客戶端將與服務器斷開連接,相關的watches也將被刪除。
總結
以上是生活随笔為你收集整理的ZooKeeper简介和概念知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python的WeRoBot框架开发公众
- 下一篇: Kazoo安装和使用