单机部署
- 新建
docker-compose.yaml
version:'3'services:zookeeper:image: zookeeper:3.5.7
container_name: base-zookeeper
hostname: zookeeper
privileged:truerestart: always
ports:- 2181:2181environment:TZ:"Asia/Shanghai"volumes:- ./volumes/zookeeper/datalog:/datalog
- ./volumes/zookeeper/logs:/logs
- ./volumes/zookeeper/data:/data
- ./volumes/zookeeper/conf:/conf
- 使用docker-compose启动
docker-compose-f docker-compose.yaml up -d
- 测试连接
docker-compose-f docker-compose.yaml exec-it zookeeper zkCli.sh -serv
er zookeeper
看到下面信息表示客户端连接成功
- 测试使用
set /name zs
get /name
集群部署
todo
python访问测试
- 安装库
pip install kazoo -i https://pypi.douban.com/simple
- 新建test_zk.py
from kazoo.client import KazooClient
zk = KazooClient(hosts='zookeeper:2181')# # 创建一个ZooKeeper客户端实例
zk.start()# 启动ZooKeeper客户端连接# 检查是否成功连接到ZooKeeperif zk.connected:print("成功连接到ZooKeeper!")# 进行其他操作,例如创建节点、获取节点数据等
zk.set('/name',b'zs')
value = zk.get('/name')print(value)
zk.stop()# 关闭ZooKeeper客户端连接
- 运行
python常用操作
from kazoo.client import KazooClient
# 创建一个ZooKeeper客户端实例
zk = KazooClient(hosts='zookeeper:2181')# 启动ZooKeeper客户端连接
zk.start()# 检查是否成功连接到ZooKeeperif zk.connected:print("成功连接到ZooKeeper!")# 进行其他操作,例如创建节点、获取节点数据等
zk.create('/app_01',b'app_01')# 创建节点
zk.exists('/app_01')# 检查节点是否存在
zk.get('/app_01')# 获取节点数据
zk.set('/app_01',b'app_01_back')# 修改节点数据
zk.create('/app_01/sub_app_01')
zk.create('/app_01/sub_app_02')
zk.get_children('app_01')# 获取指定节点的所有子节点
zk.delete('app_01/sub_app_01')# 删除节点# 监听器监听子节点,当子节点发生变化时触发@zk.ChildrenWatch('/app_01')defwatch_children(children):print("this is watch_children %s"% children)# 监听器监听数据,当节点数据发生变化时触发@zk.DataWatch("/app_01")defwatch_data(data, state):print("app_01 node is %s"% data)# 事务,自v3.4以后,zookeeper支持一次发送多个命令,这些命令作为一个原子进行提交,要么全部执行成功,要么全部失败
transaction = zk.transaction()
transaction.check('/china/beijing', version=3)
transaction.create('/china/shanghai',b"shanghai")
results = transaction.commit()
zk.stop()# 关闭ZooKeeper客户端连接
本文转载自: https://blog.csdn.net/qq_43347021/article/details/132313810
版权归原作者 m_merlon 所有, 如有侵权,请联系我们删除。
版权归原作者 m_merlon 所有, 如有侵权,请联系我们删除。