zookeeper-python操作zookeeper

Zookeeper系列:使用Python读取配置文件并将配置写入Zookeeper节点,查看Zookeeper节点数据 在本文中,我们将介绍如何使用Python编写代码,读取配置文件的内容,并将配置信息写入Zookeeper节点中,同时演示如何查看Zookeeper节点的数据。该函数遍历配置文件的每个节和键值对,并将其写入Zookeeper节点。该函数获取节点下的所有子节点,并遍历每个子节点,获取节点的值,并将键值对存储在。本文介绍了如何使用Python编写代码,读取配置文件的内容,并将配置信息写入Zookeeper节点中。通过运行上述代码,你将能够读取配置文件的内容,并将其写入Zookeeper节点中。 阅读详情

引言

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务。

具体的安装可以参考我另一篇文章:zookeeper-安装

这里讲解一下zookeeper的python相关操作

1·python操作ZK——kazoo包

python操作zk需要kazoo

pip install kazoo

下面是python的操作方法函数,挑一些最常用的详细解释

方法说明
start连接zookeeper
create创建节点
get获取节点的值
get_children获取子节点列表
get_acls获取节点ACL列表
add_auth向服务器发送凭证
ensure_path递归创建路径
set设置节点的值
set_acls设置节点ACL
delete删除节点
set_hosts设置客户端主机列表
sync同步数据
exists检查节点是否存在
reconfig重置集群配置
command向服务器发送四字命令
add_listener添加监听方法
remove_listener删除监听方法
stop停止zookeeper会话
restart重启zookeeper会话
close释放客户端持有的资源
server_version获取连接的zookeeper版本
unchroot去除路径中的根目录
transaction创建事务对象

1.1·初始化zk连接客户端——KazooClient

class KazooClient(object):   
   def __init__(self, hosts='127.0.0.1:2181',
             timeout=10.0, client_id=None, handler=None,
             default_acl=None, auth_data=None, sasl_options=None,
             read_only=None, randomize_hosts=True, connection_retry=None,
             command_retry=None, logger=None, keyfile=None,
             keyfile_password=None, certfile=None, ca=None,
             use_ssl=False, verify_certs=True, **kwargs):

参数说明:

hosts逗号分隔的要连接的主机列表,默认为本机。
timeout连接zookeeper的超时时间,单位为秒,默认为10。
client_idzookeeper客户端id,用于重新建立以前的会话连接,默认为None。
handler实现回调处理接口IHandler的类实例,默认为None。
default_acl用于创建节点的默认ACL,默认为None。
auth_data用于连接的身份验证凭据列表,参数值为add_auth方法接受的scheme, credential元组列表。默认为None。
read_onlyKazoo 0.6新增参数,需要zookeeper版本为3.4+。允许连接只读服务器,默认为None。
randomize_hostsKazoo 0.6新增参数,随机选择主机,默认为True。
connection_retryKazoo 1.2新增参数,用于与zookeeper重连的KazooRetry对象,也可以是用于创建KazooRetry对象的选项字典,默认为None。
command_retryKazoo 1.2新增参数,用于执行retry方法的KazooRetry对象,也可以是用于创建KazooRetry对象的选项字典,默认为None。
loggerKazoo 1.2新增参数,用于代替模块全局日志实例的自定义日志记录程序,默认为None。
keyfile用于身份验证的SSL密钥文件,默认为None。
keyfile_passwordSSL密钥文件密码,默认为None。
certfile用于身份验证的SSL证书文件,默认为None。
ca用于身份验证的SSL CA文件,默认为None。
use_ssl是否使用SSL,默认为False。
verify_certs当使用SSL时,参数绕过certs验证,默认为True。

1.2·连接zk——start()

start(self, timeout=15)

连接zookeeper。timeout为等待连接成功的时间,单位为秒。如果在指定的时间内没有成功连接,则产生timeout_exception异常。

1.3·创建节点——create()

create(self, path, value=b"", acl=None, ephemeral=False,sequence=False, makepath=False, include_data=False)

参数说明:

path创建的节点路径
value节点值,必须是byte
aclACL列表
ephemeral表示节点是否为临时节点
sequence表示节点为顺序节点
include_data表示是否返回节点的ZnodeStat信息
makepath表示当路径不存在时是否创建路径,如果为true,创建的节点路径中间不存在的节点一并创建空值的节点,如果为false,如果路径中间有节点不存在,则报错

1.4·获取路径的子节点列表——get_children()

get_children(self, path, watch=None, include_data=False)

参数说明:

path节点路径
watch监听回调函数,如果设置watch,则在删除节点或者在该节点下创建/删除子节点操作成功时触发。
include_data表示是否返回节点的ZnodeStat信息

1.5·获取节点的值——get()

get(self, path, watch=None)

参数说明:

path节点路径
watch监听回调函数,如果设置watch,则在删除节点或者在该节点下创建/删除子节点操作成功时触发。

1.6·修改节点的值——set()

set(self, path, value, version=-1)

参数说明:

path节点路径
value新的节点值
version期望的要更新的节点版本,如果为-1则表示匹配任何版本

1.7·判断节点是否存在——exists()

exists(self, path, watch=None)

参数说明:

path节点路径
watch监听回调函数,如果设置watch,则在删除节点或者在该节点下创建/删除子节点操作成功时触发。

1.8·删除节点——delete()

delete(self, path, version=-1, recursive=False)

参数说明:

path节点路径
recursive表示是否递归的删除指定节点及其子节点,默认为False
version期望的要删除的节点版本,如果为-1则表示匹配任何版本

1.9·关闭连接——stop()

stop()

停止zookeeper会话。在尝试重新连接时,调用此方法重连将中止。当连接关闭时,会话失效,zookeeper上与会话关联的临时节点会被删除,会触发这些节点以及它们的父节点的监听事件。

 

2·案例代码

2.1·简单操作增删改查

from kazoo.client import KazooClient

zk = KazooClient(hosts='192.168.30.135:2181')
zk.start()    #与zookeeper连接

# 获取对应节点下的子节点
node = zk.get_children('/')
print("------输出1,查看根目录下的子节点:")
print(node)

# 创建节点,makepath=True是递归创建,如果不加上中间那一段,就是建立一个空的节点
zk.create('/zkFirst/zk2020/11/08/1',b'python make 1',makepath=True)

node = zk.get_children('/zkFirst/zk2020/11/08')
print("------输出2,查看/zkFirst/zk2020/11/08目录的子节点:")
print(node)

# 获取节点的值
node_v = zk.get('/zkFirst/zk2020/11/08/1')
print("------输出3,查看/zkFirst/zk2020/11/08/1的值:")
print(node_v)

# 修改节点的值
zk.set('/zkFirst/zk2020/11/08/1',b"python make 1 change")
node_v = zk.get('/zkFirst/zk2020/11/08/1')
print("------输出4,查看/zkFirst/zk2020/11/08/1修改后的值:")
print(node_v)

# 删除节点,recursive=True是递归删除,就是无视要删除的节点下面的节点是否是空,都干掉,不加上的话,会提示子节点非空,删除失败
zk.delete('/zkFirst/zk2020/11/08/1',recursive=True)

node = zk.get_children('/zkFirst/zk2020/11/08')
print("------输出5,查看删除之后/zkFirst/zk2020/11/08目录的子节点:")
print(node)

zk.stop()    #与zookeeper断开

脚本输出结果:

------输出1,查看根目录的子节点:
['zookeeper', 'zkFirst']
------输出2,查看/zkFirst/zk2020/11/08目录的子节点:
['1']
------输出3,查看/zkFirst/zk2020/11/08/1的值:
(b'python make 1', ZnodeStat(czxid=25769803839, mzxid=25769803839, ctime=1604827574007, mtime=1604827574007, version=0, cversion=0, aversion=0, ephemeralOwner=0, dataLength=13, numChildren=0, pzxid=25769803839))
------输出4,查看/zkFirst/zk2020/11/08/1修改后的值:
(b'python make 1 change', ZnodeStat(czxid=25769803839, mzxid=25769803840, ctime=1604827574007, mtime=1604827574014, version=1, cversion=0, aversion=0, ephemeralOwner=0, dataLength=20, numChildren=0, pzxid=25769803839))
------输出5,查看删除之后/zkFirst/zk2020/11/08目录的子节点:
[]

 

2.2·监听节点-watch

监听是很有用的,例如可以作为配置修改的时候,服务立刻就可以知道,并获取最新配置等等

脚本1-持续监听一个节点

from kazoo.client import KazooClient

zk = KazooClient(hosts='192.168.30.135:2181')
zk.start()    #与zookeeper连接

def test(event):
    print('触发监听事件')

while True:
    zk.get('/zkFirst/zk2020/11/08/1', watch=test)

脚本2-修改脚本1监听的节点

from kazoo.client import KazooClient

zk = KazooClient(hosts='192.168.30.135:2181')
zk.start()    
zk.set('/zkFirst/zk2020/11/08/1',b"python make 1 change2")
zk.stop()    

输出结果:执行一次脚本2,脚本一就会触发一次test函数输出内容(任何渠道修改了这个节点,都会触发)

E:\0------files\2-python\env\3.6.5\python.exe E:/1------project/test/20201108-zookeeper2.py
触发监听事件
触发监听事件

【Python 八股文】- Zookeeper基础 文章目录1. Zookeeper的理解?2. Zookeeper的核心功能?2.1. 文件系统2.1. 通知机制2.3. 集群管理机制3. Zookeeper的应用场景?3.1. 命名服务Name Service3.2. 分布式协调3.3. 集群管理3.4. 分布式锁4. Zookeeper使用什么协议?5. Zookeeper的工作模式?6. Zookeeper的角色?6.1. Leader6.2. Follower6.3. Observer7. Zookeeper节点类型?7.1. 持久节点7.2. 持 阅读详情

相关推荐

Python读取配置文件并将配置写入Zookeeper节点

通过以上步骤,我们成功地使用Python读取配置文件,并将配置写入了Zookeeper的节点中,实现了方便和集中管理配置参数的目的。函数,它接受一个Zookeeper客户端对象、节点路径和配置参数,并将配置参数写入Zookeeper的节点中。接下来,我们需要创建一个配置文件,其中包含我们想要写入Zookeeper的配置参数。函数,它接受Zookeeper的连接字符串作为参数,并返回一个已连接的Zookeeper客户端对象。函数,它接受配置文件的路径作为参数,并返回一个包含数据库配置和应用程序配置的字典。

ByteHackerX的博客 199

使用Python访问Zookeeper获取数据

Python如何获取zookeeper中的数据,本文将简单介绍Python访问zookeeper中设置了权限的目录信息。

牧羊人的方向 1790

Zookeeper学习笔记 --- Python操作zookeeper

Zookeeper学习笔记 --- Python操作zookeeper

杨鑫newlife的专栏 4068

zookeeper:使用python操作zookeeper

1、kazoo 介绍 zookeeper的开发接口以前主要以java和c为主,随着python项目越来越多的使用zookeeper作为分布式集群实现,python的zookeeper接口也出现了很多,现在主流的纯python的zookeeper接口是kazoo。因此如何使用kazoo开发基于python的分布式程序是必须掌握的。 ZooKeeper 是一个分布式的、开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 Hbase 的重要组件。它是一个

走在搬砖的路上! 4441

ArcGIS学习记录—SHP文件转换为KML KMZ数据,并显示面要素相应的标注

使用相应软件操作获取KMZ数据得以下发到外业调查人员,使得矢量数据能够更显而易见,可视化,让外业人员的工作减轻许多。(过程步骤是借鉴于网络上的相关人士给的建议,根据这些建议自己做出来的步骤,可能有些粗略,有问题的话可以再进行探讨)...

qq_41046162的博客 5万+

20道SpringSecurity常见面试题汇总(超详细回答 !!!)

本文中,我们将探讨一些与 Spring Security 相关的面试问题。Spring Security 是一款流行的 Java 应用程序安全框架,它提供了一套全面且易于使用的安全解决方案。

小斜同学的博客 3076

[py]python操作zookeeper

参考: https://blog.youkuaiyun.com/heizistudio/article/details/79568188 1.安装zookeeper zookeeper-3.4.6.tar.gz tar zxvf zookeeper-3.4.6.tar.gz cd zookeeper-3.4.6/src/c ./configure make make install 2.启...

weixin_30788239的博客 244

AI智能体升级实战:从规则匹配到Function Call,准确率提升86%的技术选型之路

AI智能体升级实战:从规则匹配到Function Call的技术演进 文章记录了AI邮件助手从传统规则匹配升级到Function Call的技术迭代过程。通过案例分析,揭示了规则匹配的三大核心问题:覆盖不全(用户表达千变万化)、组合困难(多条件容易漏掉)、维护噩梦(每个需求都要新增规则)。测试数据显示,规则匹配在复杂查询中的准确率仅51%,严重影响用户体验。 技术团队对比了三种升级方案:1) 继续优化规则匹配(天花板明显);2) 微调专用NLP模型(成本高);3) 采用Function Call(灵活高效)

yweng18的博客 1079

python 操作 zookeeper 快速入门

python 操作 zookeeper 快速入门 文章目录python 操作 zookeeper 快速入门什么是zookeeperpython 操作 zk 快速入门zk节点创建节点查询节点修改节点删除节点 什么是zookeeper 什么是zookeeper : 这篇zookeeper讲的还满清楚的 python 操作 zk 快速入门 今年开始接触第五门开发语言了, 以前总听说python 效率低...

靑い空゛ 1824

腾讯、飞书等在线表格自动化编辑--python

在线文档自动化处理数据

qq_32828053的博客 2万+

libiec61850实战:手把手教你用C语言动态获取IED设备模型(附完整代码解析)

本文详细介绍了如何使用libiec61850库通过C语言动态获取IED设备模型,包括环境配置、连接建立、模型遍历及错误处理等关键步骤。通过完整的代码示例和实战案例,帮助开发者掌握智能变电站通信中的核心技术,提升工业自动化系统的开发效率。

weixin_42519985的博客 434

Zookeeper集群搭建以及python操作zk

一、Zookeeper原理简介 转:https://www.cnblogs.com/xiao987334176/p/10103619.html ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。 Zookeeper设计目的 最终一致性:client不论连接到那个Serve...

weixin_30606669的博客 233

结合qtdesigner,用pyqtgraph在界面上绘制波形图(一)

思路:先画图,然后在qtdesigner上放一个容器,给这个容器添加一个布局,然后把图当作一个Widget放入布局中。二、PyUIC把test.ui转换成test.py,再新建一个load_test.py写脚本。就这么简单,基础部分就完成了。也可以给它添加样式,我知道的样式不算多,但会继续写。一、随便拖进来一个容器控件,我拖了一个Widget。要想把波形图显示在界面上,核心思想其实很简单。三、load_test.py的代码。

learninger_lt7的博客 1803

Zookeeper详解(十):Python连接和操作Zookeeper

Python对Zookeeper的基本操作#!/usr/bin/envpython #-*-coding:utf-8-*- importsys fromkazoo.clientimportKazooClient defmain(): try: nodePath="/zktest" host="172....

weixin_33958366的博客 927

基于Simulink的压缩空气储能(Compressed Air Energy Storage, CAES)

压缩空气储能(CAES)是一种将电能转化为压缩空气存储在高压容器中,然后在需要时释放空气驱动涡轮机发电的技术。它具有大规模、长寿命和环境友好的特点,在电力系统中用于削峰填谷、频率调节和备用电源等应用。本项目将详细介绍如何在MATLAB/Simulink中搭建一个完整的基于压缩空气储能的系统,并提供具体的代码实现和设计步骤。如果你需要实现更复杂的控制逻辑,可以使用MATLAB Function模块。以下是一个简单的例子,展示了如何在该模块中实现一个条件逻辑:Matlab深色版本Kp = 1;

MHD0815的博客 1274

关于112G和56G PAM4信号的有效回损(ERL)

本文探讨了回波损耗(RL)对高速数字通信系统性能的影响,重点分析了时域信道运行裕度(COM)与频域回波损耗指标的关联性。研究表明,传统频域回波损耗指标在预测系统性能时存在假阳性/假阴性问题,特别是对PAM-4信号系统影响更为显著。通过引入基于时域脉冲响应的有效回波损耗(ERL)指标,并结合判决反馈均衡器(DFE)的补偿效应,可更准确评估系统性能。实验表明,短封装器件虽然频域回波损耗较差,但在实际系统中表现更优。研究提出通过时域门控加权等方法优化ERL计算,为高速互连设计提供了更可靠的性能评估框架。

小孟同学的博客 292

使用python操作zookeeper

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

Python热爱者的博客 541

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Python+Zookeeper操作

本文主要讲解如何在Python使用Zookeeper进行简单开发。 1、安装依赖 kazoo是Python连接操作Zookeeper的客户端库,我们可以通过kazoo来使用Zookeeper. 采用pip方式安装: pip install kazoo 2、使用 1)连接Zookeeper from kazoo.client import KazooClient zk = KzooClient(host="127.0.0.1:2181") # 启动连接 zk.start() #停止连接

Ajinnv的专栏 1097

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Docker 搭建 kafka,zookeeper 以及python操作kafka

拉取下面两个镜像 zookeeker: docker pull zookeeper:latest kafka: docker pull wurstmeister/kafka:latest 启动zookeeper docker run -d --name zookeeper --publish 2181:2181 --volume /etc/localtime:/etc/localtime zoo...

WJ844908240的博客 665

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

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

zookeeper命令 ZooKeeper客户端有C语言和Java两个版本。 ZooKeeper的命令在/usr/lib/zookeeper/bin文件夹下。 运行Java版本的客户端使用bash zkCli.sh -server IP:port ,运行C语言版本的使用./cli_mt IP:port,下面介绍Java版本的,C语言版差不多。 查看具体结点信息 root@ubuntu:/usr/l...

1057

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

python系列之:kazoo连接Zookeeper操作Zookeeper一、连接zookeeper二、读取zookeeper节点三、读取zookeeper内容四、kazoo连接Zookeeper操作Zookeeper完整代码 一、连接zookeeper from kazoo.client import KazooClient zk = KazooClient(hosts="10.128.242.107") zk.start() 二、读取zookeeper节点 rootPath = "/data" fir

zhengzaifeidelushang的博客 2308

python zookeeper_python操作zookeeper

一、Locust工具介绍 1.概述 Locust是一款易于使用的分布式负载测试工具,完全基于事件,使用python开发,即一个locust节点也可以在一个进程中支持数千并发用户,不使用回调,通过gevent使用轻量级过程(即在自己的进程内运行)。 2.常见性能测试工具比较 3.环境搭建 源码安装:下 ...»airb性能测试2021-02-08最近遇到的一个问题,在搞清楚之后才发现这么多年的 HT...

weixin_39982537的博客 286

【环境安装】python操作zookeeper.md

【环境安装】python操作zookeeper.md 环境 名称 版本 centos 7 python 2.7.5 zookeeper 3.4.10 安装步骤 首先,安装要依赖的zookeeper的c的客户端。 cd path/zookeeper/src/c ./configure 如果有以下报错信息: (py2) [root@master c]# ./configure checking fo...

Ah_Jie_8572的博客 738
上一篇: zookeeper-服务器状态&配置参数说明
下一篇: zookeeper-入门介绍&架构&使用(这一篇足以)
龙叔运维
博客等级 码龄11年 1万+粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙叔运维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值