Skip to content

Zookeeper是一个分布式的开源协调服务,主要用于解决分布式系统中的一些数据管理、配置管理、命名服务、集群管理、分布式锁等问题。Zookeeper提供了一个简单的树形结构的命名空间,可以存储任意类型的数据,而且可以通过Watcher机制来实现分布式系统中的协调和同步。

Zookeeper的主要特点包括:

  1. 分布式协调:Zookeeper可以作为分布式系统的协调服务,管理分布式系统中各个节点的状态和配置信息,实现分布式锁等机制。
  2. 高可用性:Zookeeper支持多机部署,可以实现高可用性的服务,通过主备节点之间的选举机制保证服务的可用性。
  3. 数据一致性:Zookeeper提供了强一致性的数据访问机制,保证不同节点之间数据的一致性。
  4. 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会+1
    • set /xk857 new-data 2:如果当前最新版本不是2,则修改失败
  • delete和set命令最后可以带上版本号,只有版本号相同操作才会生效,否则会报错。

ZK中的Session

  • 客户端与服务端之间的连接存在会话,每个会话都会可以设置一个超时时间,心跳结束则session过期。
  • Session过期,则临时节点znode会被抛弃。