zookeeper 配置解析
重要配置解析
tickTime=2000 // zookeeper中最小的时间单位长度 (ms)
initLimit=10 // follower节点启动后与leader节点完成数据同步的时间(ms)
syncLimit=5 // leader节点和follower节点进行心跳检测的最大延时时间(s)
dataDir=/tmp/zookeeper //zookeeper服务器存储快照文件的目录()
dataLogDir=/data/zookeeper // 配置 zookeeper事务日志的存储路径,默认指定在dataDir目录下
clientPort = 2181 //客户端和服务端建立连接的端口号: 2181
zookeeper基础概念
数据模型
zookeeper数据模型和文件系统类似,每一个节点称为:znode,znode是zookeeper中的最小数据单元。
每一个znode上都可以保存数据和挂载子节点,从而构成一个层次化的属性结构。
节点特性
持久化节点
创建后会一直存在zookeeper服务器上,直到主动删除。
持久化有序节点
每个节点都会为它的一级子节点维护一个顺序。
临时节点
临时节点的生命周期和客户端的会话保持一致。当客户端会话失效,该节点自动清理。
临时有序节点
在临时节点上多了一个顺序性特性
会话
客户端于zookeeper服务建立的一次连接,并在这次连接中所有处理,直到连接结束。
具体状态:not connect --> connectting —>connected–> close
Watcher
zookeeper提供了分布式数据发布/订阅,zookeeper允许客户端向服务器注册一个watcher监听。当服务器端的节点触发指定事件的时候会触发watcher。服务端会向客户端发送一个事件通知watcher的通知是一次性,一旦触发一次通知后,该watcher就失效。
ACL
zookeeper提供控制节点访问权限的功能,用于有效的保证zookeeper中数据的安全性。避免误操作而导致系统出现重大事故。
具体权限: CREATE /READ/WRITE/DELETE/ADMIN
命令操作
创建节点
create [-s] [-e] [-c] [-t ttl] path [data] [acl]
-s 是否有序
-e 是否为临时(默认为持久化)
path 节点路径
data 节点值
acl 节点权限
获取指定节点
get [-s] [-w] path
-s 获取详细信息
修改指定节点
set [-s] [-v version] path data
-s 详细信息设置
-v 版本号(乐观锁)
4.delete [-v version] path 删除指定节点
-v 版本号(乐观锁)
数据内容具体描述
[zk: localhost:2181(CONNECTED) 27] get -s /test
cZxid = 0x4
ctime = Thu May 21 17:34:25 CST 2020
mZxid = 0xb
mtime = Thu May 21 17:43:33 CST 2020
pZxid = 0x5
cversion = 1
dataVersion = 5
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 1
cversion = 1 子节点的版本号,每操作一次子节点,cversion加1
aclVersion = 0 表示acl的版本号,修改节点权限,每改一次权限,aclVersion加1
dataVersion = 5 表示的是当前节点数据的版本号, 每操作一次节点的值,dataVersion 加1
czxid 节点被创建时的事务ID
mzxid 节点最后一次被更新的事务ID
pzxid 当前节点下的子节点最后一次被修改时的事务ID
ctime 创建时间
mtime 修改时间
ephemeralOwner = 0x0 创建临时节点的时候,会有一个sessionId 。 该值存储的就是这个sessionid。
dataLength = 5 数据值长度
numChildren = 1 子节点数