一、Zookeeper角色的分类

  1. 领导者(leader)
    Leader服务器为客户端提供读服务和写服务。

  2. 学习者(learner)
    • 跟随者(follower)
      Follower服务器为客户端提供读服务,参与Leader选举过程,参与写操作“过半写成功”策略。
    • 观察者(observer)
      Observer服务器为客户端提供读服务,不参与Leader选举过程,不参与写操作“过半写成功”策略。用于在不影响写性能的前提下提升集群的读性能。
  3. 客户端(client)
    服务请求发起方。

Zookeeper集群管理图:

二、Zookeeper角色的状态

  1. LOOKING:
       当前Server未知集群中的Leader,并且正在寻找。
  2. LEADING:
       当前Server即为选举出来的Leader。
  3. FOLLOWING:
       当前Follower已与选举出来的Leader同步。
  4. OBSERVING
      当前Observer已与选举出来的Leader同步。

三、Zookeeper各角色的作用

3.1、Zookeeper中的请求

  • 事务请求:
     在Zookeeper中,会改变服务器状态的请求称为事务请求(包括:创建节点、更新数据、删除节点、创建会话等) 。
  • 非事务请求
     从Zookeeper仅仅读取数据,不会对服务器数据状态进行任何修改的请求称为非事务请求。

3.2、Leader的作用

  1. 在ZAB崩溃恢复之后,消息广播之前,进行集群中的数据同步;
  2. 维持与Learner的心跳,接收Learner请求消息,并据不同的消息类型,进行不同的处理;
  3. Learner处理的消息类型包括:PING消息、REQUEST消息、ACK消息、REVALIDATE消息等。

  其中,PING消息指Learner的心跳信息;REQUEST消息是Follower发送的提议信息,包括写请求及同步请求;ACK消息是Follower的对提议的回复,超过半数的Follower通过,则commit该提议;REVALIDATE消息是用来延长SESSION有效时间。
Leader的工作流程简图如下所示,实际上流程要比下图复杂得多,启动了三个线程来实现功能:

3.3、Follower的作用

Follower主要有四个功能:

  1. 向Leader发送请求(PING请求、REQUEST消息、ACK请求、REVALIDATE消息);
  2. 接收Leader 的消息并进行处理;
  3. 接收Client的请求,如果为写请求,发送给Leader进行投票;
  4. 返回Client请求结果。

Follower的消息循环处理以下来自Leader的消息:

  1. PING消息:心跳消息;
  2. PROPOSAL消息:Leader发起的提案,要求Follower投票;
  3. COMMIT消息:服务器端最新一提案的信息;
  4. UPTODATE消息:表示同步完成;
  5. REVALIDATE消息:根据Leader的REVALIDATE结果,关闭待revalidate的session还是允许其接受消息;
  6. SYNC消息:返回SYNC结果到客户端,这个消息最初由客户端发起,用来强制得到最新的数据更新。

3.3、Observer的作用

  Observer角色除了不参与Leader选举和Proposal投票外,与Follower的作用相同。

四、参考资料

参考书籍:从Paxos到Zookeeper:分布式一致性原理与实践
参考博客:https://blog.csdn.net/yu757371316/article/details/80742223

  • 作者:
    DeepInThought


    出处:
    https://www.cnblogs.com/DeepInThought


    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 【3】Zookeeper中的角色的更多相关文章

    1. zookeeper中Watcher和Notifications

      问题导读:1.zookeeper观察者什么时候调用?2.传统远程轮询服务存在什么问题?3.zk中回调服务的机制是什么?4.zk中watcher为什么不永久注册?5.什么是znode? 在阅读之前首先明 ...

    2. Apache ZooKeeper在Kafka中的角色 - 监控和配置

      1.目标 今天,我们将看到Zookeeper在Kafka中的角色.本文包含Kafka中需要ZooKeeper的原因.我们可以说,ZooKeeper是Apache Kafka不可分割的一部分.在了解Zo ...

    3. 【分布式】Zookeeper的服务器角色

      一.前言 前一篇已经详细的讲解了Zookeeper的Leader选举过程,下面接着学习Zookeeper中服务器的各个角色及其细节. 二.服务器角色 2.1 Leader Leader服务器是Zook ...

    4. Zookeeper中Session Timeout的那些事

      前言: RDS系统致力于MySQL数据的高可用,高可靠,高性能以及在线扩展功能,实现这些特性的主要逻辑功能都运行在管理服务器上,一旦管理服务器宕机,数据库的在线扩展功能/备份功能/故障恢复功能等都无从 ...

    5. zookeeper中的分布式一致性协议

      1. zookeeper中的一致性协议-ZAB协议 在深入了解ZK之前,相信很多同学都会认为ZK就是Paxos算法的一个实现.但事实上,ZK并没有完全采用Paxos算法,而是使用了一种称为ZooKee ...

    6. Zookeeper中的watcher监听和leader选举机制

      watcher监听 什么是watcher接口 同一个事件类型在不同的通知状态中代表的含义有所不同,下图列举了常见的通知状态和事件类型. Watcher通知状态与事件类型一览 上图列举了ZooKeepe ...

    7. Zookeeper中的Leader选取机制

      一.Zookeeper是什么? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应 ...

    8. 面试官:说一说Zookeeper中Leader选举机制

      哈喽!大家好,我是小奇,一位不靠谱的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 今天又是一个阳光明媚的一天,我又 ...

    9. Twitter Storm源代码分析之ZooKeeper中的目录结构

      徐明明博客:Twitter Storm源代码分析之ZooKeeper中的目录结构 我们知道Twitter Storm的所有的状态信息都是保存在Zookeeper里面,nimbus通过在zookeepe ...

    随机推荐

    1. python基于OpenCV的人脸识别系统

      想获得所有的代码,请下载(来自我的CSDN): https://download.csdn.net/download/qq_40875849/11292912 主函数: from recognitio ...

    2. react-native-scrollable-tab-view第一次加载下划线不显示解决

      今天在使用react-native-scrollable-tab-view的时候出现下划线第一次显示的时候不显示,需要点击切换才可以显示. 通过各种实践发现是0.6.7版本问题. 解决实现: reac ...

    3. 小程序插件使用wx.createSelectorQuery()获取不到节点信息

      发现小程序一个bug, 在小程序插件中使用wx.createSelectorQuery()获取不到节点信息,需要在后面加入in(this) 例如: const query = wx.createSel ...

    4. idea标签页多行显示+设置标签页上限

      idea标签页多行显示+设置标签页上限 Setting--Editor--General--Editor Tabs

    5. CenterNet算法笔记(目标检测论文)

      论文名称:CenterNet: Keypoint Triplets for Object Detectiontection 论文链接:https://arxiv.org/abs/1904.08189 ...

    6. 机器学习笔记——模型调参利器 GridSearchCV(网格搜索)参数的说明

      GridSearchCV,它存在的意义就是自动调参,只要把参数输进去,就能给出最优化的结果和参数.但是这个方法适合于小数据集,一旦数据的量级上去了,很难得出结果.这个时候就是需要动脑筋了.数据量比较大 ...

    7. server 2008 R2 DHCP服务器部署

      安装DHCP服务器 和上一篇文章中安装IIS 7.0一样,我们在安装DHCP服务器的时候也要用到Windows Server 2008的服务器安装器. 首先打开服务器管理器,点击开始菜单——>管 ...

    8. PowerShell .Net整套环境搭建及部署系列

      此系列包含一套完整的集群部署,全是个人原创(除第一个是摘抄的),转载请注明出处 其中DFS部分在国内资料极少,且全是重复的,还是外面好些,有问题可以给出解决方案 若内容有不详之处或你也同样被DFS所困 ...

    9. HDU 1688 Sightseeing 【输出最短路+次短路条数】

      题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1688 题目大意:给n个点,m条有向边.再给出起点s, 终点t.求出s到t的最短路条数+次短路条数. 思 ...

    10. [转帖]postgresql 在等待服务器启动时超时

      postgresql 在等待服务器启动时超时 2018年12月24日 :: my_name_nb 阅读数 版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接 ...