ZooKeeper all in one

| 分类 BIGDATA  | 标签 zookeeper  java 

概念

集群角色

| 角色 | 描述 | | ——– | ———————————– | | Leader | 是整个Zookeeper集群工作机制中的核心 | | Follower | 是Zookeeper集群状态的跟随者 | | Observer | 服务器充当一个观察者的角色 |

会话

客户端与服务端是通过建立 TCP 长连接来维持 Session。通过这个连接能够进行心跳检测来保持会话的有效性。

数据节点

数据单元 Znode 分为:临时节点,永久节点

ZooKeeper 的数据模型是树型数据结构。

在服务器出现故障时,其在 ZooKeeper 中注册的临时节点,会自动删除掉。

数据版本

版本类型 说明
version 当前数据节点数据内容的版本号
cversion 当前数据节点子节点的版本号
aversion 当前数据节点ACL变更版本号

watcher

事件监听器能把数据节点发的变化,通知给感兴趣的客户端。

ACL

五种权限类型:

CREATE, READ, WRITE, DELETE, ADMIN(设置节点 ACL 的权限)

问题汇总

启动时报 NoSuchMethodError

java.lang.NoSuchMethodError: org.apache.zookeeper.server.quorum.flexible.QuorumMaj.<init>(Ljava/util/Map;)V

    at org.apache.curator.framework.imps.EnsembleTracker.<init>(EnsembleTracker.java:59)
    at org.apache.curator.framework.imps.CuratorFrameworkImpl.<init>(CuratorFrameworkImpl.java:158)
    at org.apache.curator.framework.CuratorFrameworkFactory$Builder.build(CuratorFrameworkFactory.java:156)
    at com.fuqssi.lancelot.zookeeper.CuratorClient.<clinit>(CuratorClient.java:19)

上述异常是因为在 Maven 中引用 Curator.jar 之前,引入了 ZooKeeper.jar。导致 Curator 编译时引用的 ZooKeeper 和自己引用的 ZooKeeper 版本不一致。

删掉自己引用的 ZooKeeper,引入 Curator 之后,Maven 会解决 ZooKeeper 的依赖。

客户端

zkCli

常用命令

客户端连接服务器命令

# -r :只读参数。是指如果一台服务器与过半数以上的服务器失去联系,则这台服务器不再处理客户端的请求,加上 -r 参数后,这台服务器可以对外提供读取服务。
$ zkCli.sh -r -server ip:port

查看节点状态

$ stat path

# 返回结果如下
cZxid = 0x400000004    									// 创建时的事务id
ctime = Tue Feb 28 16:37:13 CST 2017    // 事务创建时间
mZxid = 0x400000004   									// 最后一次更新时的事务id
mtime = Tue Feb 28 16:37:13 CST 2017    // 最后一次更新事务的时间
pZxid = 0x400000004   // 该节点的子节点列表修改的事务id,子节点列表的修改,包括增加和删除子节点。修改子节点数据内容不计算在内
cversion = 0   													// 子节点版本号
dataVersion = 0   											// 数据版本号
aclVersion = 0   												// 权限版本号
ephemeralOwner = 0x0   									// 用于临时节点,临时节点的事务id
dataLength = 4   												// 当前节点的数据长度
numChildren = 0    											// 当前节点的子节点数量

ZkClient

ZkClient 封装了 ZooKeeper API,内部实现了 Session 超时重连,Watcher 反复注册等功能。

Curator

Fluent API 风格,Apache 顶级项目。

应用场景

master选举

发布和订阅数据

负载均衡


上一篇     下一篇