ZooKeeper 工作流程

一、Zookeeper的角色

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

ZooKeeper 工作流程_第1张图片
image.png

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

ZooKeeper 工作流程_第2张图片
image.png

首先client向Follwer发出一个写的请求;Follwer会把请求发送给Leader;
Leader接收到以后开始发起投票并通知Follwer进行投票;
Follwer把投票结果发送给Leader;
Leader将结果汇总后如果需要写入,则开始写入同时把写入操作通知给Leader,然后commit;
Follwer把请求结果返回给client。通过上面的工作流程,我们可以看出Follower主要有以下四个功能,

向Leader发送请求(PING消息、REQUEST消息、ACK消息、REVALIDATE消息);
接收Leader消息并进行处理;
接收Client的请求,如果为写请求,发送给Leader进行投票;
返回Client结果。
综合看来,Zookeeper的工作流程还是挺清晰的,follower主要是转发请求、参与投票、返回投票结果;leader则主要是发起投票决议,更新系统状态

你可能感兴趣的:(ZooKeeper 工作流程)