中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

zookeeper怎么利用python進行操作

發布時間:2020-12-29 08:58:45 來源:億速云 閱讀:248 作者:Leah 欄目:開發技術

zookeeper怎么利用python進行操作?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

ZooKeeper 簡介

  ZooKeeper 是一個分布式的、開放源碼的分布式應用程序協調服務,是 Google 的 Chubby 一個開源的實現,是 Hadoop 和 Hbase 的重要組件。它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分布式同步、組服務等。ZooKeeper 支持大部分開發語言,除了某些特定的功能只支持 Java 和 C。python 通過 kazoo 可以實現操作 ZooKeeper 。

一、安裝

 這個簡單,使用 pip 命令安裝

pip3 install kazoo

二、連接 ZooKeeper 

 可通過 KazooClient 類直接連接 ZooKeeper ,支持多個 host ,端口默認 2181。

import json
from kazoo.client import KazooClient

zk = KazooClient(hosts='10.1.44.55')
zk.start()

三、創建節點

 先看下 create() 方法定義

def create(self, path, value=b"", acl=None, ephemeral=False,
        sequence=False, makepath=False):
 
    :param path: Path of node.
    :param value: Initial bytes value of node.
    :param acl: :class:`~kazoo.security.ACL` list.
    :param ephemeral: Boolean indicating whether node is ephemeral
             (tied to this session).
    :param sequence: Boolean indicating whether path is suffixed
             with a unique index.
    :param makepath: Whether the path should be created if it
             doesn't exist.

 我們來解釋下這些參數:

  • path:          節點路徑

  • value:         節點對應的值,注意值的類型是 bytes

  • ephemeral: 若為 True 則創建一個臨時節點,session 中斷后自動刪除該節點。默認 False

  • sequence:     若為 True 則在你創建節點名后面增加10位數字(例如:你創建一個 testplatform/test 節點,實際創建的是 testplatform/test0000000003,這串數字是順序遞增的)。默認 False

  • makepath:  若為 False 父節點不存在時拋 NoNodeError。若為 True 父節點不存在則創建父節點。默認 False 

 舉個例子:

from kazoo.client import KazooClient

zk = KazooClient(hosts='10.1.44.55')
zk.start()
# 創建節點:makepath 設置為 True ,父節點不存在則創建,其他參數不填均為默認
zk.create('/testplatform/test',b'this is test!',makepath=True)
# 操作完后,別忘了關閉zk連接
zk.stop()
print(value)

四、查看節點

 KazooClient 類用提供 get_children() 和 get() 方法獲取 子節點 和 節點對應的值

from kazoo.client import KazooClient

zk = 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() 方法

from kazoo.client import KazooClient

zk = KazooClient(hosts='10.1.44.55')
zk.start()
# 更改節點對應的value
zk.set('/testplatform/test',b'this is not test')
# 獲取某個節點對應的值
value = zk.get('/testplatform/test')
zk.stop()
print(value)

 六、刪除節點

  刪除上文創建的節點,使用 delete() 方法

from kazoo.client import KazooClient

zk = KazooClient(hosts='10.1.44.55')
zk.start()
# 刪除節點對應的value
zk.delete('/testplatform/test',recursive=False)
zk.stop()

 參數 recursive:若為 False,當需要刪除的節點存在子節點,會拋異常 NotEmptyError 。若為True,則刪除 此節點 以及 刪除該節點的所有子節點

七、watches 事件

 zookeeper 所有讀操作都有設置 watch 選項(get_children() 、get() 和 exists())。watch 是一個觸發器,當檢測到 zookeeper 有子節點變動 或者 節點value發生變動時觸發。下面以 get() 方法為例。

from kazoo.client import KazooClient

zk = KazooClient(hosts='10.1.44.55')
zk.start()

def test(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進行操作的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

揭东县| 城市| 水城县| 安徽省| 秦皇岛市| 五大连池市| 哈尔滨市| 巴东县| 准格尔旗| 延长县| 南城县| 进贤县| 仙居县| 靖远县| 富民县| 榆社县| 登封市| 长顺县| 沽源县| 延吉市| 隆子县| 广西| 鄂伦春自治旗| 平果县| 平乐县| 赤壁市| 襄城县| 呈贡县| 兰考县| 四川省| 宜宾市| 前郭尔| 瓮安县| 东莞市| 鹤峰县| 鄂伦春自治旗| 安阳市| 平谷区| 吉隆县| 修水县| 昌吉市|