1. 什么是 Zookeeper?
Zookeeper 是一个开源的高效牢靠的分布式协同服务
能够通过 Zookeeper 实现对立配置管理、对立命名服务、分布式锁、集群治理等
Zookeeper 更实用于存储和协同相干的要害数据,更实用于读多写少的利用场景
Zookeeper 有哪些个性(官网说是构建简单服务的保障)?
- 程序一致性(事务申请都是有序执行的)
- 原子性
- 繁多视图(从集群任一节点获取的数据都是统一的)
- 可靠性
- 实时性
2. Zookeeper 的数据模型
Zookeeper 的数据模型是相似文件系统的层次模型
Zookeeper 的层次模型被称为 data-tree,date-tree 的每个节点叫做 znode:
- znode 是类 unix 格调的路径名来定位的,eg:/a/b,示意 znode 节点 a 下的 子节点 b
- znode 的所有操作都是 wait-free 操作(一个操作是否执行完并不影响其余操作的执行)
-
znode 分类:
- 持久性的 znode,创立之后始终保留,不会失落
- 临时性的 znode,宕机或者超时就会失落
- 长久程序性的 znode,具备程序性的持久性的 znode
- 长期程序性的 znode
znode 的程序性直观的体现在 znode 命名上,每一个程序性的 znode 关联一个枯燥递增的整数,可能是后缀,也可能是命名
-
znode 的基本操作:
create
:创立节点delete
:删除节点setData
:写入需保留的数据到节点内exists
:判断节点是否存在getData
:获取节点保留的数据getChildren
:获取节点下所有子节点
3. Zookeeper 集群角色
Zookeeper 的集群角色有:
- Leader:负责解决所有事务申请(写操作),同时也能够解决读操作,协调集群外部服务
- Follower:只能解决非事务申请(读操作),
- Observer:只能解决读申请,转发写申请给 Leader 解决
Zookeeper 是一主多从的架构,所以集群中只能有一个 Leader
从集群搭建的配置中看,咱们并没有指定集群的角色,因为 Zookeeper 集群的 Leader 是运行时动静选举进去的: 一个节点获取超过半数节点的票数,就能够入选 Leader
如果 Leader 失联,则从 Follower 中从新选举,Observer 并不参加选举
Observer 负责察看 Zookeeper 集群的状态并进行同步,在不影响集群的状况下升高 Leader 的复杂程度
因为 Follower 数量比拟多的时候,投票的过程会成为 Zookeeper 的性能瓶颈,因为选举过程 Zookeeper 是不能解决申请的
具体的选举过程前面在学习