真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

zookeeper怎么利用python進(jìn)行操作-創(chuàng)新互聯(lián)

zookeeper怎么利用python進(jìn)行操作?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

10年積累的網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先制作網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有福貢免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

ZooKeeper 簡(jiǎn)介

ZooKeeper 是一個(gè)分布式的、開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是 Google 的 Chubby 一個(gè)開源的實(shí)現(xiàn),是 Hadoop 和 Hbase 的重要組件。它是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等。ZooKeeper 支持大部分開發(fā)語(yǔ)言,除了某些特定的功能只支持 Java 和 C。python 通過(guò) kazoo 可以實(shí)現(xiàn)操作 ZooKeeper 。

一、安裝

 這個(gè)簡(jiǎn)單,使用 pip 命令安裝

pip3 install kazoo

二、連接 ZooKeeper 

 可通過(guò) KazooClient 類直接連接 ZooKeeper ,支持多個(gè) host ,端口默認(rèn) 2181。

import json
from kazoo.client import KazooClient

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

三、創(chuàng)建節(jié)點(diǎn)

 先看下 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.

 我們來(lái)解釋下這些參數(shù):

  • path:          節(jié)點(diǎn)路徑

  • value:         節(jié)點(diǎn)對(duì)應(yīng)的值,注意值的類型是 bytes

  • ephemeral: 若為 True 則創(chuàng)建一個(gè)臨時(shí)節(jié)點(diǎn),session 中斷后自動(dòng)刪除該節(jié)點(diǎn)。默認(rèn) False

  • sequence:     若為 True 則在你創(chuàng)建節(jié)點(diǎn)名后面增加10位數(shù)字(例如:你創(chuàng)建一個(gè) testplatform/test 節(jié)點(diǎn),實(shí)際創(chuàng)建的是 testplatform/test0000000003,這串?dāng)?shù)字是順序遞增的)。默認(rèn) False

  • makepath:  若為 False 父節(jié)點(diǎn)不存在時(shí)拋 NoNodeError。若為 True 父節(jié)點(diǎn)不存在則創(chuàng)建父節(jié)點(diǎn)。默認(rèn) False

 舉個(gè)例子:

from kazoo.client import KazooClient

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

四、查看節(jié)點(diǎn)

 KazooClient 類用提供 get_children() 和 get() 方法獲取 子節(jié)點(diǎn) 和 節(jié)點(diǎn)對(duì)應(yīng)的值

from kazoo.client import KazooClient

zk = KazooClient(hosts='10.1.44.55')
zk.start()
# 獲取某個(gè)節(jié)點(diǎn)下所有子節(jié)點(diǎn)
node = zk.get_children('/testplatform')
# 獲取某個(gè)節(jié)點(diǎn)對(duì)應(yīng)的值
value = zk.get('/testplatform/mssql')
# 操作完后,別忘了關(guān)閉zk連接
zk.stop()
print(node,value)

 五、更改節(jié)點(diǎn)

 更改上文創(chuàng)建的 node 值,使用 set() 方法

from kazoo.client import KazooClient

zk = KazooClient(hosts='10.1.44.55')
zk.start()
# 更改節(jié)點(diǎn)對(duì)應(yīng)的value
zk.set('/testplatform/test',b'this is not test')
# 獲取某個(gè)節(jié)點(diǎn)對(duì)應(yīng)的值
value = zk.get('/testplatform/test')
zk.stop()
print(value)

 六、刪除節(jié)點(diǎn)

  刪除上文創(chuàng)建的節(jié)點(diǎn),使用 delete() 方法

from kazoo.client import KazooClient

zk = KazooClient(hosts='10.1.44.55')
zk.start()
# 刪除節(jié)點(diǎn)對(duì)應(yīng)的value
zk.delete('/testplatform/test',recursive=False)
zk.stop()

 參數(shù) recursive:若為 False,當(dāng)需要?jiǎng)h除的節(jié)點(diǎn)存在子節(jié)點(diǎn),會(huì)拋異常 NotEmptyError 。若為True,則刪除 此節(jié)點(diǎn) 以及 刪除該節(jié)點(diǎn)的所有子節(jié)點(diǎn)

七、watches 事件

 zookeeper 所有讀操作都有設(shè)置 watch 選項(xiàng)(get_children() 、get() 和 exists())。watch 是一個(gè)觸發(fā)器,當(dāng)檢測(cè)到 zookeeper 有子節(jié)點(diǎn)變動(dòng) 或者 節(jié)點(diǎn)value發(fā)生變動(dòng)時(shí)觸發(fā)。下面以 get() 方法為例。

from kazoo.client import KazooClient

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

def test(event):
  print('觸發(fā)事件')

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
#觸發(fā)事件
#第二次獲取value

看完上述內(nèi)容,你們掌握zookeeper怎么利用python進(jìn)行操作的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


新聞標(biāo)題:zookeeper怎么利用python進(jìn)行操作-創(chuàng)新互聯(lián)
本文路徑:http://weahome.cn/article/dgdcog.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部