使用python *** 作zookeeper

使用python *** 作zookeeper,第1张

概述kazoo 介绍 zookeeper的开发接口以前主要以java和c为主,随着python项目越来越多的使用zookeeper作为分布式集群实现,python的zookeeper接口也出现了很多,现在主流的纯python的zookeeper接口是kazoo。因此如何使用kazoo开发基于python的分布式程序是必须掌握的。 安装kazoo pip3 install kazoo 基本 *** 作 from kazoo 介绍

zookeeper的开发接口以前主要以java和c为主,随着python项目越来越多的使用zookeeper作为分布式集群实现,python的zookeeper接口也出现了很多,现在主流的纯python的zookeeper接口是kazoo。因此如何使用kazoo开发基于python的分布式程序是必须掌握的。

安装kazoo
pip3 install kazoo
基本 *** 作
from kazoo.clIEnt import KazooClIEntzk = KazooClIEnt(hosts='192.168.91.128:2181')    #如果是本地那就写127.0.0.1zk.start()    #与zookeeper连接zk.stop()    #与zookeeper断开
创建节点
from kazoo.clIEnt import KazooClIEntzk = KazooClIEnt(hosts='192.168.91.128:2181')    #如果是本地那就写127.0.0.1zk.start()    #与zookeeper连接#makepath=True是递归创建,如果不加上中间那一段,就是建立一个空的节点zk.create('/abc/JQK/XYZ/0001',b'this is my house',makepath=True)node = zk.get_children('/')  # 查看根节点有多少个子节点print(node)zk.stop()    #与zookeeper断开

执行输出:

['abc','zookeeper']

注意:空节点的值不能用set修改,否则执行报错!

删除节点

如果要删除这个/abc/JQK/XYZ/0001的子node,但是想要上一级XYZ这个node还是存在的,语句如下:

from kazoo.clIEnt import KazooClIEntzk = KazooClIEnt(hosts='192.168.91.128:2181')    #如果是本地那就写127.0.0.1zk.start()    #与zookeeper连接#recursive=True是递归删除,就是无视下面的节点是否是空,都干掉,不加上的话,会提示子节点非空,删除失败zk.delete('/abc/JQK/XYZ/0001',recursive=True)node = zk.get_children('/')  # 查看根节点有多少个子节点print(node)zk.stop()    #与zookeeper断开

执行输出:

['abc','zookeeper']
更改节点

现在假如要在0001这个node里更改value,比如改成:"this is my horse!",

由于上面节点已经被删除掉了,需要先创建一次。

语句如下:

from kazoo.clIEnt import KazooClIEntzk = KazooClIEnt(hosts='192.168.91.128:2181')    #如果是本地那就写127.0.0.1zk.start()    #与zookeeper连接zk.create('/abc/JQK/XYZ/0001',makepath=True)zk.set('/abc/JQK/XYZ/0001',b"this is my horse!")node = zk.get('/abc/JQK/XYZ/0001')  # 查看值print(node)zk.stop()    #与zookeeper断开

执行输出:

(b'this is my horse!',ZnodeStat(czxID=4294967449,mzxID=4294967452,ctime=1544598301273,mtime=1544598308267,version=1,cversion=0,aversion=0,ephemeralOwner=0,dataLength=17,numChildren=0,pzxID=4294967449))

注意!set这种增加节点内容的方式是覆盖式增加,并不是在原有基础上增添。而且添加中文的话可能在ZooInspecter里出现的是乱码

查看节点

由于所有节点,都是在/ 节点上面的,直接查看根节点,就可以知道所有节点了

from kazoo.clIEnt import KazooClIEntzk = KazooClIEnt(hosts='192.168.91.128:2181')    #如果是本地那就写127.0.0.1zk.start()    #与zookeeper连接node = zk.get_children('/')print(node)zk.stop()    #与zookeeper断开

执行输出:

[‘abc‘,‘zookeeper‘]

一键清空zookeeper

有些时候,需要将zookeeper的数据全部清空,可以使用以下代码

from kazoo.clIEnt import KazooClIEntzk = KazooClIEnt(hosts='192.168.91.128:2181')    #如果是本地那就写127.0.0.1zk.start()    #与zookeeper连接jIEdian = zk.get_children('/')  # 查看根节点有多少个子节点print(jIEdian)for i in jIEdian:    if i != 'zookeeper':  # 判断不等于zookeeper        print(i)        # 删除节点        zk.delete('/%s'%i,recursive=True)zk.stop()    #与zookeeper断开

注意:默认的zookeeper节点,是不允许删除的,所以需要做一个判断。

总结

以上是内存溢出为你收集整理的使用python *** 作zookeeper全部内容,希望文章能够帮你解决使用python *** 作zookeeper所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1191148.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存