标签:03 顺序 Zookeeper 介绍 Leader 集群 znode 节点
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 是不能处理请求的
具体的选举过程后面在学习
标签:03,顺序,Zookeeper,介绍,Leader,集群,znode,节点 来源: https://www.cnblogs.com/ly-az/p/16341109.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。