如何用python 操作zookeeper
ZooKeeper 简介
ZooKeeper 是一个分布式的、开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 Hbase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper 支持大部分开发语言,除了某些特定的功能只支持 Java 和 C。python 通过 kazoo 可以实现操作 ZooKeeper 。
一、安装
这个简单,使用 pip 命令安装
pip3 install kazoo
二、连接 ZooKeeper
可通过 KazooClient 类直接连接 ZooKeeper ,支持多个 host ,端口默认 2181。
import json from kazoo.client import KazooClient zk = KazooClient(hosts='10.1.44.55') zk.start()
三、创建节点
先看下 create() 方法定义
def create(self, path, value=b"", acl=None, ephemeral=False, sequence=False, makepath=False): :param path: Path of node. :param value: Initial bytes value of node. :param acl: :class:`~kazoo.security.ACL` list. :param ephemeral: Boolean indicating whether node is ephemeral (tied to this session). :param sequence: Boolean indicating whether path is suffixed with a unique index. :param makepath: Whether the path should be created if it doesn't exist.
我们来解释下这些参数:
- path: 节点路径
- value: 节点对应的值,注意值的类型是 bytes
- ephemeral: 若为 True 则创建一个临时节点,session 中断后自动删除该节点。默认 False
- sequence: 若为 True 则在你创建节点名后面增加10位数字(例如:你创建一个 testplatform/test 节点,实际创建的是 testplatform/test0000000003,这串数字是顺序递增的)。默认 False
- makepath: 若为 False 父节点不存在时抛 NoNodeError。若为 True 父节点不存在则创建父节点。默认 False
举个例子:
from kazoo.client import KazooClient zk = KazooClient(hosts='10.1.44.55') zk.start() # 创建节点:makepath 设置为 True ,父节点不存在则创建,其他参数不填均为默认 zk.create('/testplatform/test',b'this is test!',makepath=True) # 操作完后,别忘了关闭zk连接 zk.stop() print(value)
四、查看节点
KazooClient 类用提供 get_children() 和 get() 方法获取 子节点 和 节点对应的值
from kazoo.client import KazooClient zk = 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() 方法
from kazoo.client import KazooClient zk = KazooClient(hosts='10.1.44.55') zk.start() # 更改节点对应的value zk.set('/testplatform/test',b'this is not test') # 获取某个节点对应的值 value = zk.get('/testplatform/test') zk.stop() print(value)
六、删除节点
删除上文创建的节点,使用 delete() 方法
from kazoo.client import KazooClient zk = KazooClient(hosts='10.1.44.55') zk.start() # 删除节点对应的value zk.delete('/testplatform/test',recursive=False) zk.stop()
参数 recursive:若为 False,当需要删除的节点存在子节点,会抛异常 NotEmptyError 。若为True,则删除 此节点 以及 删除该节点的所有子节点
七、watches 事件
zookeeper 所有读操作都有设置 watch 选项(get_children() 、get() 和 exists())。watch 是一个触发器,当检测到 zookeeper 有子节点变动 或者 节点value发生变动时触发。下面以 get() 方法为例。
from kazoo.client import KazooClient zk = KazooClient(hosts='10.1.44.55') zk.start() def test(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
需要更多高阶使用的同学,请参考 kazoo 官方文档:https://kazoo.readthedocs.io/en/latest/api/client.html
以上就是如何用python 操作zookeeper的详细内容,更多关于python 操作zookeeper的资料请关注脚本之家其它相关文章!
- SpringCloud用Zookeeper搭建配置中心的方法
- springcloud集成zookeeper的方法示例
- SpringBoot+Dubbo+Zookeeper实现简单分布式开发的应用详解
- 关于idea+centos7+zookeeper报错connectionloss,timeout问题
- Zookeeper全局唯一ID生成方案解析
- SpringBoot中dubbo+zookeeper实现分布式开发的应用详解
- 基于Spring Cloud Zookeeper实现服务注册与发现
- 2020最新IDEA SpringBoot整合Dubbo的实现(zookeeper版)
- SpringBoot系列教程之dubbo和Zookeeper集成方法
- Python通过zookeeper实现分布式服务代码解析
- 在Java中操作Zookeeper的示例代码详解
- SpringCloud使用Zookeeper作为注册中心
相关文章
Python定时任务框架APScheduler原理及常用代码
这篇文章主要介绍了Python定时任务框架APScheduler原理及常用代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-10-10python使用正则表达式的search()函数实现指定位置搜索功能
SEARCH函数,函数名。主要用来返回指定的字符串在原始字符串中首次出现的位置 ,从左到右查找,忽略英文字母的大小写。接下来通过本文给大家介绍python使用正则表达式的search()函数实现指定位置搜索功能,需要的朋友一起看看吧2017-11-11
最新评论