ZooKeeper 是一個分布式的、開放源碼的分布式應用程序協調服務,是 Google 的 Chubby 一個開源的實現,是 Hadoop 和 Hbase 的重要組件。它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分布式同步、組服務等。ZooKeeper 支持大部分開發語言,除了某些特定的功能只支持 Java 和 C。python 通過 kazoo 可以實現操作ZooKeeper 。
這個簡單,使用 pip 命令安裝
pip3installkazoo
可通過 KazooClient 類直接連接 ZooKeeper ,支持多個 host ,端口默認 2181。
importjsonfromkazoo.clientimportKazooClientzk=KazooClient(hosts='10.1.44.55')zk.start()
先看下 create() 方法定義
defcreate(self,path,value=b"",acl=None,ephemeral=False,sequence=False,makepath=False)::parampath:Pathofnode.:paramvalue:Initialbytesvalueofnode.:paramacl::class:`~kazoo.security.ACL`list.:paramephemeral:Booleanindicatingwhethernodeisephemeral(tiedtothissession).:paramsequence:Booleanindicatingwhetherpathissuffixedwithauniqueindex.:parammakepath:Whetherthepathshouldbecreatedifitdoesn'texist.
我們來解釋下這些參數:
path: 節點路徑
value: 節點對應的值,注意值的類型是 bytes
ephemeral: 若為 True 則創建一個臨時節點,session 中斷后自動刪除該節點。默認 False
sequence: 若為 True 則在你創建節點名后面增加10位數字(例如:你創建一個 testplatform/test 節點,實際創建的是 testplatform/test0000000003,這串數字是順序遞增的)。默認 False
makepath: 若為 False 父節點不存在時拋NoNodeError。若為 True 父節點不存在則創建父節點。默認 False
舉個例子:
fromkazoo.clientimportKazooClientzk=KazooClient(hosts='10.1.44.55')zk.start()#創建節點:makepath設置為True,父節點不存在則創建,其他參數不填均為默認zk.create('/testplatform/test',b'thisistest!',makepath=True)#操作完后,別忘了關閉zk連接zk.stop()print(value)
KazooClient 類用提供get_children() 和get() 方法獲取 子節點 和 節點對應的值
fromkazoo.clientimportKazooClientzk=KazooClient(hosts='10.1.44.55')zk.start()#獲取某個節點下所有子節點node=zk.get_children('/testplatform')#獲取某個節點對應的值value=zk.get('/testplatform/mssql')#操作完后,別忘了關閉zk連接zk.stop()print(node,value)
更改上文創建的 node 值,使用 set() 方法
fromkazoo.clientimportKazooClientzk=KazooClient(hosts='10.1.44.55')zk.start()#更改節點對應的valuezk.set('/testplatform/test',b'thisisnottest')#獲取某個節點對應的值value=zk.get('/testplatform/test')zk.stop()print(value)
刪除上文創建的節點,使用 delete() 方法
fromkazoo.clientimportKazooClientzk=KazooClient(hosts='10.1.44.55')zk.start()#刪除節點對應的valuezk.delete('/testplatform/test',recursive=False)zk.stop()
參數 recursive:若為 False,當需要刪除的節點存在子節點,會拋異常 NotEmptyError 。若為True,則刪除 此節點 以及 刪除該節點的所有子節點
zookeeper 所有讀操作都有設置 watch 選項(get_children() 、get() 和 exists())。watch 是一個觸發器,當檢測到 zookeeper 有子節點變動 或者 節點value發生變動時觸發。下面以 get() 方法為例。
fromkazoo.clientimportKazooClientzk=KazooClient(hosts='10.1.44.55')zk.start()deftest(event):print('觸發事件')if__name__=="__main__":zk.get('/testplatform/test',watch=test)print("第一次獲取value")zk.set('/testplatform/test',b'hello')zk.get('/testplatform/test',watch=test)print("第二次獲取value")#輸出#第一次獲取value#觸發事件#第二次獲取value
看完上述內容,你們掌握zookeeper怎么利用python進行操作的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注本站行業資訊頻道,感謝各位的閱讀!
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
(資料圖)關于雪中悍刀行講的是什么的知識大家了解嗎?以下就是小編整理的關于雪中悍刀行講的是什么的介紹,希望可以給到大家一些參考,一起來了解下吧!1、該小說講述一個關于廟堂權爭與刀劍交錯的時代,一個暗潮涌動粉墨登場的江湖。2、初始版內容:有個白狐兒臉,佩雙刀繡冬春雷,要做那天下第一;湖底有白發老魁愛吃葷;缺門牙老仆背劍匣;山上有個騎青牛的年輕師叔祖,不敢下山;有個騎大貓扛向日葵不太冷的少女殺手。3、...
今日加拿大元對人民幣匯率表當前匯率5.1787加拿大元100人民幣517.8700Tips:100加拿大元兌換517.8700人民幣匯率更新時間:2022/10/99:21:482022年9月30日銀行間外匯市場人民幣匯率中間價為:1美元對人民幣7.0998元,1歐元對人民幣6.9892元,100日元對人民幣4.9276元,1港元對人民幣0.90444元,1英鎊對人民幣7.9481元,1澳大利亞元...
2022年4月20日0點起,騰訊視頻VIP和騰訊視頻超級影視VIP會員價格正式上漲。這是繼2021年4月10日零點騰訊對騰訊視頻VIP會員價格進行調整后,時隔一年再次漲價。其中,騰訊視頻VIP除了月卡價格未調整外,其余項目售價均有上漲。連續包月上漲5元至25元;連續包季上漲10元至68元;連續包年上漲5元至258元。月卡30元(未調整),季卡78元(上漲10元),年卡258元(上漲5元)。騰訊視頻...