• Zookeeper中的角色


    在zookeeper集群中,节点也有不同的角色,承担着不同角色。

    zookeeper有三种角色:

    • 老大:Leader   (领导者)   : 客户端提供读服务和写服务。
    • 老二:Follower(跟随者)  : 为客户端提供读服务,参与Leader选举过程
    • 老三:Observer(观察者)  : 为客户端提供读服务,不参与Leader选举过程

        其中:Follower 和 Observer 归类为 Learner(学习者)

    集群管理图如下:

    Leader


    Leader在集群中只有一个节点,可以说是老大No.1,是zookeeper集群的中心,负责协调集群中的其他节点。从性能的角度考虑,leader可以选择不接受客户端的连接

    所有的跟随者Follower与观察者Observer节点的写请求都会转交给领导者Leader执行。Leader接受到一个写请求后,首先会发送给所有的Follower,统计Follower写入成功的数量。当有超过半数的Follower写入成功后,Leader就会认为这个写请求提交成功,通知所有的Follower commit这个写操作,保证事后哪怕是集群崩溃恢复或者重启,这个写操作也不会丢失。

    Leader的作用

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

    其中:

    • PING消息:指Learner的心跳信息;
    • REQUEST消息:是Follower发送的提议信息,包括写请求及同步请求;
    • ACK消息:是Follower的对提议的回复,超过半数的Follower通过,则commit该提议;
    • REVALIDATE消息:是用来延长SESSION有效时间。

    Leader的工作流程简图如下所示,实际上流程要比下图复杂得多,启动了三个线程来实现功能:

    Follower


    Follow在集群中有多个,主要的作用有:

    • 与老大Leader保持心跳连接
    • 当Leader挂了的时候,经过投票后成为新的leader。leader的重新选举是由老二Follower们内部投票决定的。
    • 向Leader发送请求(PING请求、REQUEST消息、ACK请求、REVALIDATE消息)
    • 处理leader发来的消息与请求
    • 接收Client的请求,如果为写请求,发送给Leader进行投票;
    • 返回Client请求结果。

    Follower的工作流程简图:

    其中:

    • UPTODATE消息:表示同步完成;
    • REVALIDATE消息:根据Leader的REVALIDATE结果,关闭待revalidate的session还是允许其接受消息;
    • SYNC消息:返回SYNC结果到客户端,这个消息最初由客户端发起,用来强制得到最新的数据更新。

     

    Observer


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

    可以说Observer是zookeeper集群中最边缘的存在。Observer的主要作用是提高zookeeper集群的读性能。通过leader的介绍我们知道zookeeper的一个写操作是要经过半数以上的Follower确认才能够写成功的。那么当zookeeper集群中的节点越多时,zookeeper的写性能就 越差。为了在提高zookeeper读性能(也就是支持更多的客户端连接)的同时又不影响zookeeper的写性能,zookeeper集群多了一个儿子Observer,只负责:

    • 与leader同步数据
    • 不参与leader选举,没有投票权。也不参与写操作的提议过程。
    • 数据没有事务化到硬盘。即Observer只会把数据加载到内存。

    参考资料


  • 相关阅读:
    C# 控制反转
    控制反转和依赖注入
    C#中使用AOP
    jquery ajax
    python(7)- 小程序练习:循环语句for,while实现99乘法表
    007所谓性格与条件并不是成功的阻碍,懦弱才是
    006学习有可能速成吗
    005自学与有人带着哄着逼着学的不同在于自学是一种成熟的自律
    005单打独斗意味着需要更好地管理自己
    004真正的教育是自我教育,真正的学习是自学
  • 原文地址:https://www.cnblogs.com/tgzhu/p/14750323.html
Copyright © 2020-2023  润新知