ZooKeeper的工作流程

来源:互联网 发布:关于知乎的诗词 编辑:程序博客网 时间:2024/06/05 19:19

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式式应用程序可以基于它实现同步服务,配置维护和命名服务等。ZooKeeper是Hadoop的一个子项目。在分布式应用中,由于工程师不能很好的使用锁机制,以及基于消息的协调机制不适合在某些应用中使用,因此需要一种可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态。ZooKeeper目的于此。

Leader工作流程

Leader主要的三个功能:
1. 恢复数据;
2. 维持与Learner的心跳,接收Learner请求并判断Learner的请求消息类型;
3. Learner的消息类型主要有PING消息、REQUEST消息、ACK消息、REVALIDATE消息,根据不同的消息类型,进行不同的处理。
(1)PING消息是指Learner的心跳信息;
(2)REQUEST消息是Follower发送的提议信息,包括写请求及同步请求;
(3)ACK消息是Follower的对提议的回复,超过半数的Follower通过,则commit该提议;
(4)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工作流程

对于Observer的流程不再叙述,Observer流程和Follower的唯一不同的地方就是Observer不会参加Leader发起的投票。

1 0