Python:kazoo模塊與Zookeeper交互
github: https://github.com/python-zk/kazoo
文檔: https://kazoo.readthedocs.io/en/latest/
安裝
$ pip install kazoo
1
關(guān)于Zookeeper安裝配置可參考:
Zookeeper單機模式和集群模式環(huán)境搭建
啟動Zookeeper服務(wù)
$ zkServer.sh start zoo.cfg
1
1、CURD代碼示例
>>> from kazoo.client import KazooClient >>> zk = KazooClient(hosts='127.0.0.1:2181') # zkCli.sh >>> zk.start() # ls / >>> zk.get_children("/") ['zookeeper'] # create /mydata data >>> zk.create("/mydata", "data".encode()) '/mydata' # get /mydata >>> zk.get("/mydata") (b'data', ZnodeStat(czxid=40, mzxid=40, ctime=1560494490063, mtime=1560494490063, version=0, cversion=0, aversion=0, ephemeralOwner=0, dataLength=4, numChildren=0, pzxid=40)) # set /mydata data2 >>> zk.set("/mydata", "data2".encode()) ZnodeStat(czxid=40, mzxid=41, ctime=1560494490063, mtime=1560494514269, version=1, cversion=0, aversion=0, ephemeralOwner=0, dataLength=5, numChildren=0, pzxid=40) # delete /mydata >>> zk.delete("/mydata") True # >>> zk.exists("/mydata") # quit >>> zk.stop()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2、監(jiān)視Zookeeper節(jié)點數(shù)據(jù)發(fā)生變化
(1)Python代碼
# -*- coding: utf-8 -*- import time from kazoo.client import KazooClient zk = KazooClient(hosts='127.0.0.1:2181') # 啟動 zk.start() @zk.DataWatch("/mydata") def watch_children(data, stat): print("Data is %s" % data) if data: print("Version is %s" % stat.version) while True: time.sleep(10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
(2)從Zookeeper客戶端修改數(shù)據(jù)
$ zkCli.sh > create /mydata data0 Created /mydata > set /mydata data1 > set /mydata data2
1
2
3
4
5
6
7
(3)監(jiān)聽到的數(shù)據(jù)變化
Data is None Data is b'data0' Version is 0 Data is b'data1' Version is 1 Data is b'data2' Version is 2
1
2
3
4
5
6
7
參考:
python kazoo 監(jiān)視zookeeper節(jié)點數(shù)據(jù)發(fā)生變化
Python ZooKeeper
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。