Appearance
Zookeeper是一个分布式的开源协调服务,主要用于解决分布式系统中的一些数据管理、配置管理、命名服务、集群管理、分布式锁等问题。Zookeeper提供了一个简单的树形结构的命名空间,可以存储任意类型的数据,而且可以通过Watcher机制来实现分布式系统中的协调和同步。
Zookeeper的主要特点包括:
- 分布式协调:Zookeeper可以作为分布式系统的协调服务,管理分布式系统中各个节点的状态和配置信息,实现分布式锁等机制。
- 高可用性:Zookeeper支持多机部署,可以实现高可用性的服务,通过主备节点之间的选举机制保证服务的可用性。
- 数据一致性:Zookeeper提供了强一致性的数据访问机制,保证不同节点之间数据的一致性。
- Watcher机制:Zookeeper提供了Watcher机制,可以实现分布式系统中的事件通知和监控机制,可以实现分布式系统中节点状态的实时监控和更新。
使用Docker进行安装:
shell
docker run -d --name xk857_zookeeper -p 2181:2181 -t wurstmeister/zookeeper
客户端操作Zookeeper
客户端操作Zookeeper其实不是很重要,实际操作大多在Java客户端操作,客户端操作仅为演示Zookeeper的功能和特性,所以命令写的不是很详细,如果感兴趣可自行搜索。
shell
# 进入docker容器内
docker exec -it xk857_zookeeper /bin/bash
# 查看目录,进入bin目录
ls
cd bin
# 运行Zookeeper自带的客户端
./zkCli.sh
常用命令
ls
:例如ls /
进入根目录,Zookeeper中目录就是节点的意思,跟目录下展示的第一层就是跟节点get
:获取节点数据set
:设置节点数据create
:创建节点create /xk857 one-data
:创建xk857节点,数据为new-data,此时dataVersion会+1
delete
:删除节点delete /xk857
:删除xk857节点
create -e
:创建临时节点delete -e
:删除临时节点set
:修改节点内容set /xk857 new-data
:修改xk857节点的数据为new-data,此时dataVersion会+1set /xk857 new-data 2
:如果当前最新版本不是2,则修改失败
- delete和set命令最后可以带上版本号,只有版本号相同操作才会生效,否则会报错。
ZK中的Session
- 客户端与服务端之间的连接存在会话,每个会话都会可以设置一个超时时间,心跳结束则session过期。
- Session过期,则临时节点znode会被抛弃。