python zookeeper(zookeeper怎么利用python进行操作)

发布时间:2025-12-10 23:38:54 浏览次数:1

ZooKeeper 简介

  ZooKeeper 是一个分布式的、开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 Hbase 的重要组件。它是一个为分布式应用提供一致***的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper 支持大部分开发语言,除了某些特定的功能只支持 Java 和 C。python 通过 kazoo 可以实现操作ZooKeeper 。

一、安装

这个简单,使用 pip 命令安装

pip3installkazoo

二、连接 ZooKeeper

可通过 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,则删除 此节点 以及 删除该节点的所有子节点

七、watches 事件

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进行操作的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注本站行业资讯频道,感谢各位的阅读!

python zookeeper
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477