zookeeper
zookeeper被广泛用于分布式服务中,如集群,kafka等。但基本的api却很简单。通过客户端调用简单的zookeeper的api实现数据更新、节点检测、权限控制、异步操作、事件监听等,最终实现分布式需要。
这里简单介绍一下客户端api。
首先,启动zookeeper
zkServer.sh start
开放2181端口,供外部调用
firewall-cmd --zone=public --add-port=2181/tcp --permanent
重启防火墙
systemctl restart firewalld.service
重载配置文件让它生效
firewall-cmd --reload
这样就可以根据IP和端口访问zookeeper服务器了。
启动客户端,就可以连接到服务器了
zkCli.sh -server 127.0.0.1:2181
zookeeper的数据结构其实就是一棵树,每个数据节点都是一个 ZNode。znode一共4种类型:持久的,临时的,持久有序的,临时有序的。
提供的操作也就是操作这棵树。输入 h 后回车,看下zkCli.sh提供的命令
使用客户端可以创建会话、创建节点、删除节点、获取子节点、获取节点内容等。
命令行客户端
命令行客户端一般用于调试、运维,实际服务不要用它。
执行 ls / 发现,/路径下已经有一个节点 /zookeeper 了
创建节点
create -e /master "hello"
这里 -e 是标明创建临时节点。还有-s,标明创建顺序节点(会在在节点名称后自动加上一串数字,每次创建时这串数字自增)
/master 为节点路径,"hello" 为节点的数据
注意,zookeeper根节点是 / 。因此所有节点路径都要带上 / 。
查看子节点列表
ls2 /master
获取节点
get /master
获取节点状态
stat /master
这里说下节点的一些属性:
属性 |
含义 |
cZxid |
节点被创建时的事务id |
ctime |
当前节点的创建时间 |
mZxid |
节点最后一次修被改时的事务id |
mtime |
节点数据的修改时间 |
pZxid |
当前节点的子节点列表最后一次被修改时的事务id |
cversion |
子节点的版本号 |
dataVersion |
节点数据的版本号 |
aclVersion |
节点访问权限的版本号 |
ephemeralOwner |
创建该临时节点的会话sessionId |