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

安装kazoo

pip3 install kazoo

基本操作

from kazoo.client import KazooClient
zk = KazooClient(hosts='192.168.91.128:2181')    #如果是本地那就写127.0.0.1
zk.start()    #与zookeeper连接
zk.stop()    #与zookeeper断开

创建节点

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
from kazoo.client import KazooClient
zk = KazooClient(hosts='192.168.91.128:2181')    #如果是本地那就写127.0.0.1
zk.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 KazooClient
zk = KazooClient(hosts='192.168.91.128:2181')    #如果是本地那就写127.0.0.1
zk.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!”,

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

语句如下:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
from kazoo.client import KazooClient
zk = KazooClient(hosts='192.168.91.128:2181')    #如果是本地那就写127.0.0.1
zk.start()    #与zookeeper连接
zk.create('/abc/JQK/XYZ/0001',b'this is my house',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 KazooClient
zk = KazooClient(hosts='192.168.91.128:2181')    #如果是本地那就写127.0.0.1
zk.start()    #与zookeeper连接
node = zk.get_children('/')
print(node)
zk.stop()    #与zookeeper断开

执行输出:

['abc', 'zookeeper']

一键清空zookeeper

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

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

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

使用python操作zookeeper相关推荐

  1. zookeeper教程,docker 安装,命令,python操作zookeeper,分布式队列,分布式锁

    docker安装zookeeper服务端 首先安装单节点的服务端,如果安装多节点的服务端,需要为每个节点配置其他节点的地址. docker run --privileged=true -d --nam ...

  2. python 操作 zookeeper 快速入门

    python 操作 zookeeper 快速入门 文章目录 python 操作 zookeeper 快速入门 什么是zookeeper python 操作 zk 快速入门 zk节点 创建节点 查询节点 ...

  3. python系列之:kazoo连接Zookeeper操作Zookeeper

    python系列之:kazoo连接Zookeeper操作Zookeeper 一.连接zookeeper 二.读取zookeeper节点 三.读取zookeeper内容 四.kazoo连接Zookeep ...

  4. kafka实战教程(python操作kafka),kafka配置文件详解

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 应用往Kafka写数据的原因有很多:用户行为分析.日志存储.异步通信等.多样化的使用场景带来了多样化的需求:消息是否能丢失?是否容忍重复?消息的吞吐量 ...

  5. 使用Kazoo操作ZooKeeper服务治理

    使用Kazoo操作ZooKeeper服务治理 单机服务的可靠性及可扩展性有限,某台服务宕机可能会影响整个系统的正常使用:分布式服务能够有效地解决这一问题,但同时分布式服务也会带来一些新的问题,如:服务 ...

  6. python操作word文档(python-docx)

    python操作word文档(python-docx) 1. 效果图 1.1 python-docx文档标题段落(等级.加粗.斜体.居中)效果图 1.2 python-docx字体(加粗.斜体.居中. ...

  7. Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  8. Python 操作 MongoDB 数据库!

    作者 |黄伟呢 来源 |数据分析与统计学之美 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 先来看看MySQL与MongoDB 概念区别 ...

  9. python操作yaml的方法详解

    这篇文章主要为大家介绍了python操作yaml的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助 一.参考链接 https://pyyaml.org/wiki/PyYAM ...

最新文章

  1. Network | sk_buff
  2. python装饰器函数-python 装饰器 函数被装饰+函数执行
  3. Flex 布局教程:实例篇
  4. Microsoft Visual Studio 2010 Service Pack 1
  5. Runloop底层原理--源码分析
  6. CSS三个非常重要的特性分享!
  7. 两段关于统计日期的sql语句
  8. 动态规划训练6 [统计单词个数]
  9. 转会咯,从广州转北京咯!
  10. Docker安装aria2+ariang
  11. numpy 随机生成矩阵
  12. jquery ajax 参数放到 request playload 中
  13. 工信部、公安部、交通部:拟将自动驾驶汽车道路测试及示范应用范围拓宽至高速公路...
  14. win10系统更新遇到 “我们无法完成更新,正在撤销更改“ 解决办法
  15. Revit翻模教程:怎么在体量内绘制圆锥?
  16. iOS面试准备 - ios篇
  17. Protel 常用问题总结
  18. python中zerodivisionerror是什么意思-python里的raise是什么意思
  19. [原]领带打法-半温莎结
  20. 《操作系统真象还原》第二章 编写MBR主引导记录,让我们开始掌权

热门文章

  1. Sublime text 简单配置
  2. Codewars-Javascript训练手册:正则表达式(Regular Expressions)
  3. Apache通过配置.htaccess文件禁止访问.git、.svn等目录
  4. portal开发下拉框“日期框”查询要怎么配置
  5. JS原生---鼠标拖拽
  6. 九度 1545:奇怪的连通图
  7. 大学课程重新学习-操作系统
  8. python ConfigParser 小试
  9. WSUS注冊表導入,工作組用戶系統更新
  10. 计算机应用技术国外现状,浅析计算机应用技术的现状及发展趋势