zoukankan      html  css  js  c++  java
  • Zookeeper-相关流程

    选主流程:

      当Zk进入恢复模式时,需要重新选举出一个新的leader,让所有的Server都恢复到一个正确的状态。Zk的选举算法有两种:一种是基于basic paxos实现的,一种是基于fast paxos算法实现的。系统默认的是fast paxos。

    basic paxos流程:

      1、当前Server中发起选举的线程担任选举线程,主要功能是对投票结果进统计,并选出推荐的Server

      2、选举线程向所有的Server发起一次询问(包括自己)

      3、选举线程收到Server的回复后,通过验证zxid是否一致来判断是否是自己发起的询问。然后获取对方的id(myid),并存储到当前询问对象列表中,最后获取对方提议的leader相关信息(id,zxid),并将这些信息存储到当次选举的投票记录表中

      4、收到所有的Server回复后,计算出zxid最大的server,并将这个server相关信息设置为下一次要投票的server

      5、线程将当前zxid最大的Server设置为当前Server要推荐的leader,如果此时获胜的Server获得N/2+1的Server票数,设置当前推荐的leader为获胜的Server,将根据获胜的Server相关信息设置自己的状态,否则,继续这个过程,知道leader被选举出来

      要使leader获得多数server支持,则server总数必须是奇数2n+1,且存活的Server的数目不得少于n+1。

      每个Server启动后都会重复意思流程。在恢复模式下,如果是刚从崩溃状态恢复的或者刚启动的Server还会从磁盘快照中恢复数据和会话信息。zk会记录事务日志并定期进行快照,方便在恢复时进行状态恢复。选主的具体流程图如下:

      

      

    fast paxos流程:

      在选举过程中,某server首先先所有server提议自己要成为leader,当其他server收到提议后,解决epoch和zxid的冲突,并接受对方的提议,然后向对方发送接收提议完成的消息,重复这个流程,最后一定能选出leader。流程图如下:

    同步流程:

      选举完leader以后,zk进入状态同步过程。

      1、leader等待server连接

      2、Follower连接leader,将最大的zxid发送给leader

      3、leader根据follower的zxid确定同步点

      4、完成同步后通知follwoer已经成为uptodate状态

      5、follower收到uptodate消息后,又可以重新接受client的请求进行服务

    工作流程:

      Leader的工作流程

      leader主要由三个功能:

      1、恢复数据;

      2、维持与learner的心跳,接收learner请求并判断learner的请求消息类型;

      3、learner的消息类型主要由PING消息、REQUEST消息、ACK消息、REVALIDATE消息根据不同消息类型,进行不同的处理;

      PING消息:指Learner的心跳消息。

      REQUEST消息:指follower发送的提议信息,包括写请求及同步请求。

      ACK消息:是follower对提议的回复,超过半数follower通过,则commit该提议。

      REVALIDATE消息:用来延长SESSION有效时间。

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

      

       

      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结果到客户端。这个消息最初由客户端发起,用来强制得到最新的更新

      follower的工作流程简图如下,在实际实现中,follower是通过5个线程来实现功能的。

      

      Observer的流程和follower相似,不同点就是Observer不参加投票

  • 相关阅读:
    Socket
    UIView的layoutSubviews和drawRect方法何时调用
    断点续传
    IOS后台执行
    应用程序的状态
    ASIHTTPRequest的使用
    XCode5 使用AutoLayout情况下改变控件的 方法
    从指定的view中截图 返回UIImage
    找到当前视图的父视图控制器
    07.网络总结(面试方面)
  • 原文地址:https://www.cnblogs.com/zhangbLearn/p/9578028.html
Copyright © 2011-2022 走看看