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 的基本操作:
3. Zookeeper 集群角色
Zookeeper 的集群角色有:
- leader:负责处理所有事务请求(写操作),同时也可以处理读操作,协调集群内部服务
- Follower:只能处理非事务请求(读操作),
- Observer:只能处理读请求,转发写请求给 leader 处理
Zookeeper 是一主多从的架构,所以集群中只能有一个 leader
从集群搭建的配置中看,我们并没有指定集群的角色,因为 Zookeeper 集群的 leader 是运行时动态选举出来的:一个节点获取超过半数节点的票数,就可以当选 leader
如果 leader 失联,则从 Follower 中重新选举,Observer 并不参与选举
Observer 负责观察 Zookeeper 集群的状态并进行同步,在不影响集群的情况下降低 leader 的复杂程度
因为 Follower 数量比较多的时候,投票的过程会成为 Zookeeper 的性能瓶颈,因为选举过程 Zookeeper 是不能处理请求的
具体的选举过程后面在学习
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。