解析zookeeper的工作流程

今天我们通过下面几张图来了解下Zookeeper的内部工作流程是咋样的,在讲工作流程之前我们先了解下Zookeeper的角色。

解析zookeeper的工作流程

 

一、Zookeeper的角色

Zookeeper主要有下面两种角色,领导者和学习者,其中学习者又包含跟随者和观察者。我们直接看图理解,我们直接看图理解,这是一个由多个server组成的集群,一个leader,多个follower,每个server保存一份数据副本,全局数据一致,分布式读写。

解析zookeeper的工作流程

 

  1. 领导者(Leader),领导者负责进行投票的发起和决议,更新系统状态。
  2. 学习者(Learner),跟随者(Follower)和观察者(Observer)。
  3. 跟随者(Follower),Follower可以接收客户端的请求并返回结果,并参与主过程的投票。
  4. 观察者(Observer),Observer可以接收客户端的请求,写请求会转发给Leader节点,但不参与投票,主要是扩展系统的读取速度。

二、Zookeeper的工作流程

解析zookeeper的工作流程

 

  1. 首先client向Follwer发出一个写的请求;
  2. Follwer会把请求发送给Leader;
  3. Leader接收到以后开始发起投票并通知Follwer进行投票;
  4. Follwer把投票结果发送给Leader;
  5. Leader将结果汇总后如果需要写入,则开始写入同时把写入操作通知给Leader,然后commit;
  6. Follwer把请求结果返回给client。

通过上面的工作流程,我们可以看出Follower主要有以下四个功能,

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

综合看来,Zookeeper的工作流程还是挺清晰的,follower主要是转发请求、参与投票、返回投票结果;leader则主要是发起投票决议,更新系统状态。