定义:
是分布式协调服务系统 🚥。本质上是一个分布式的小文件存储系统。目录树存储数据。
特征:
-
全局数据唯一性
-
可靠性
-
顺序性 全局有序
-
数据更新的原子性 (半数以上机器成功)
-
实时行
Zookeeper 集群角
Leader:
Follower:
Observer: (观察者)
此外,针对访问量比较大的zookeeper集群,还可新增观察者角色。拓展读服务,不参加投票
数据模型
树形层次结构
-
Znode 兼具文件和目录两种特点
-
Znode既有原子性操作
-
Znode存储数据大小有限制 KB级别
-
Znode通过路径应用
节点类型
Znode有两种分别为 临时节点和永久节点。节点类型在创建时确定。确定后不能修改。
临时节点:客户端断开链接节点自动删除。临时节点下面不允许有子节点。
永杰节点:创建成功后就永久存在
节点属性:
dataVersion
cversion : 子节点改后 +1
aclVersion:
cZxid:事物性id 创建id
mZxid:事务性id 修改id
Ctime:节点创建时间
mtime:修改
ephemeralOwner:为0 永久节点 不为零临时节点
Watcher
Zookeeper提供了分布式数据发布/订阅功能,以watcher监听机制。设置监听事件
注册监听,监听触发,客户端回调Watcher得到触发事件情况。
Watcher 机制特点
-
一次性触发
-
事件封装
-
event异步发送
-
先注册再触发
Java api
Zookeeper 选举机制
算法 投票数大于半数则生出