python 操作 zookeeper 快速入门

python 操作 zookeeper 快速入门


什么是zookeeper

什么是zookeeper : 这篇zookeeper讲的还满清楚的

python 操作 zk 快速入门

今年开始接触第五门开发语言了, 以前总听说python 性能低,真正接触到一个python项目后才发现它强大之处,刷新了对python的认知,短短几十个文件居然就实现一个很强大的服务应用,废话不多说,写demo。

docker快速启动一个zk

C:\Users\sola>docker search zookeeper
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
zookeeper                          Apache ZooKeeper is an open-source server wh…   822                 [OK]            
jplock/zookeeper                   Builds a docker image for Zookeeper version …   164                                     [OK]
docker pull zookeeper
docker run -p 2181:2181 zookeeper:latest

这样我们的测试服务就快速起来了。

接着使用python的zookeeper接口的kazoo来做一次增删改查。

zk节点

在Zookeeper中,“节点"分为两类:

第一类同样是指构成集群的机器,为机器节点;
第二类则是指数据模型中的数据单元,数据节点一一ZNode。

Zookeeper维护一个类似文件系统的数据结构,和文件系统一样,我们能够自由的增加、删除znode,在一个znode下增加、删除子znode,唯一的不同在于znode是可以存储数据的。

Zookeeper将所有数据存储在内存中,数据模型是一棵树(Znode Tree),由斜杠(/)的进行分割的路径,就是一个Znode,例如/foo/path1。每个上都会保存自己的数据内容,同时还会保存一系列属性信息。

在Zookeeper中,node可以分为持久节点和临时节点两类:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8juPq491-1585484957173)(./1585483484347.png)]

创建节点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AwoMQWGo-1585484957174)(./1585479981891.png)]

from kazoo.client import KazooClient
zk = KazooClient(hosts='10.0.75.2:2181')
zk.start()    #与zookeeper连接
zk.create('/demo/Znode/0001', b'a demo node', makepath=True)
#node = zk.get_children('/')  # 查看根节点有多少个子节点
#print(node)
zk.stop()    #与zookeeper断开

查询节点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K9vgMohC-1585484957175)(./1585481471389.png)]

from kazoo.client import KazooClient
zk = KazooClient(hosts='10.0.75.2:2181')
zk.start()    #与zookeeper连接
#zk.create('/demo/Znode/0001', b'a demo node',makepath=True)
node = zk.get_children('/')  # 查看根节点有多少个子节点
print(node)
print(zk.get(/demo/Znode/0001))
zk.stop()    #与zookeeper断开

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2RKn6VPv-1585484957175)(./1585481438671.png)]

修改节点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NE4jGtJO-1585484957176)(./1585480565266.png)]

from kazoo.client import KazooClient
zk = KazooClient(hosts='10.0.75.2:2181')
zk.start()    #与zookeeper连接
#zk.create('/demo/Znode/0001', b'a demo node',makepath=True)
zk.set('/demo/Znode/0001', b"alter demo node!")
node = zk.get('/demo/Znode/0001')  # 查看根节点有多少个子节点
print(node)
zk.stop()    #与zookeeper断开

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mpU0ynQe-1585484957176)(./1585480752703.png)]

删除节点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4sLrFLda-1585484957177)(./1585480101608.png)]

from kazoo.client import KazooClient
zk = KazooClient(hosts='10.0.75.2:2181')
zk.start()    #与zookeeper连接
#zk.create('/demo/Znode/0001', b'a demo node', makepath=True)
zk.delete('/demo', recursive=True)
node = zk.get_children('/')  # 查看根节点有多少个子节点
print(node)
zk.stop()    #与zookeeper断开

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0SpB6fFU-1585484957177)(./1585481544363.png)]

python 操作zk的一个入门文章,当然zk能实现的功能远不止这么简单,还有Watcher、Session、ACL等重要概念、
zookeeper能实现集群管理,分布式锁,分布式队列,zookeeper集群leader选举等等。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值