• 【3】Zookeeper中的角色


    一、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
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    MSSQL查询表占用空间
    JS字典
    匹配是否指定主域名
    站点文件删除不了提示权限不足
    事件委托发布-订阅
    微信中打开第三方应用
    以Spring Bean配置文件为例解释 xmlns,xmlns:xsi,xsi:schemaLocation
    Hdfs的读出机制
    Hdfs的写入机制
    spring常用注解的作用
  • 原文地址:https://www.cnblogs.com/DeepInThought/p/11061550.html
  • Copyright © 2020-2023  润新知