Zookeeper简介
Zookeeper是一个高可用的分布式数据管理和协调框架,并且能很好的保持数据的一致性
Zookeeper的基本原理
Server包括两个主要角色:Leader、Follower
Lerder:负责进行投票的发起和决议,更新系统状态
Follower:接收客户端的请求并向客户端返回结果
Zookeeper维护一个树型层次结构
Zookeeper的访问方式
Shell命令
Zoolnspector
Java api
Zookeeper的特性
节点类型
持久节点:不主动移除,将一直存在
临时节点:一旦客户端断开连接,就被移除
顺序节点:顺序自动编号的节点,这种节点会根据当前已存在的节点数自动加 1
Zookeeper事务操作
ZooKeeper事务操作包括数据节点创建与删除、数据内容更新和客户端会话创建与失效。
ZooKeeper的每个节点维护着三个事务ID,即Zxid值。
(1)每一个事务,一个全局唯一的事务ID(64位的数字)
(2)Zxid的递增性质,Zxid小,表示先发生
版本号
dataVersion :数据版本号;每次对节点进行set操作,dataVersion的值都会增加1
cversion(Children Version) :子节点的版本号;当Znode的子节点有变化时
aclVersion :ACL的版本号;当ACL变化时,版本号变化。
事件监听器
客户端可以在节点上设置监听器。当节点状态改变时将会触发watch的对应操作。
watch触发时,Zookeeper会向客户端发送一个通知
watch只触发一次