ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Zookeeper学习(3):基本操作

2022-05-19 21:31:19  阅读:224  来源: 互联网

标签:zk Zookeeper app1 学习 2181 CONNECTED 基本操作 localhost 客户端


一、单节点操作

1. 启动服务器和client:

启动服务器
~# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
启动客户端
~# zkCli.sh

2. 查看当前所有节点

[zk: localhost:2181(CONNECTED) 0] ls -R /
# Zookeeper系统自带的节点 / /zookeeper /zookeeper/config /zookeeper/quota

3. 新建app1和app2的znode

[zk: localhost:2181(CONNECTED) 1] create /app1
[zk: localhost:2181(CONNECTED) 1] create /app2
[zk: localhost:2181(CONNECTED) 1] create /app1/p_1
[zk: localhost:2181(CONNECTED) 1] create /app1/p_2
[zk: localhost:2181(CONNECTED) 1] create /app1/p_3

# 查看一下
[zk: localhost:2181(CONNECTED) 0] ls -R /
/
/app1
/app2
/zookeeper
/app1/p_1
/app1/p_2
/app1/p_3
/zookeeper/config
/zookeeper/quota

 

二、实现一个分布式锁

分布式锁要求如果锁的持有者宕了,锁可以被释放。ZooKeeper 的 ephemeral 节点恰好具备这样的特性。

 客户端1:创建一个临时znode(获取锁)

[zk: localhost:2181(CONNECTED) 6] create -e /lock
Created /lock

客户端2:这个时候也去创建一个相同znode(由于被锁定了,客户端2无法获取)

# 创建提示已经存在
[zk: localhost:2181(CONNECTED) 0] create -e /lock
Node already exists: /lock

# 监控该znode
[zk: localhost:2181(CONNECTED) 2] stat -w /lock
cZxid = 0xb
ctime = Thu May 19 09:13:48 EDT 2022
mZxid = 0xb
mtime = Thu May 19 09:13:48 EDT 2022
pZxid = 0xb
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x1074e5aa8bc0000
dataLength = 0
numChildren = 0

客户端1:退出客户端,由于是临时znode,断开链接之后会自动删除(释放锁)

[zk: localhost:2181(CONNECTED) 7] quit

WATCHER::

WatchedEvent state:Closed type:None path:null
2022-05-19 09:21:01,264 [myid:] - INFO  [main:ZooKeeper@1619] - Session: 0x1074e5aa8bc0000 closed
2022-05-19 09:21:01,266 [myid:] - ERROR [main:ServiceUtils@42] - Exiting JVM with code 0
2022-05-19 09:21:01,267 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@578] - EventThread shut down for session: 0x1074e5aa8bc0000

客户端2:由于客户端2有监控这个znode,所以客户端1退出的时候,会收到日志,这个时候客户端2就可以创建了(获取锁)

WATCHER::

WatchedEvent state:SyncConnected type:NodeDeleted path:/lock

# 创建znode
[zk: localhost:2181(CONNECTED) 0] create -e /lock
Created /lock

  

 

标签:zk,Zookeeper,app1,学习,2181,CONNECTED,基本操作,localhost,客户端
来源: https://www.cnblogs.com/tortoise512/p/16290183.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有