zookeeper (基本知识一)

zookeeper 是文件系统 + 监听通知机制

最重要的核心: 客户端监听它关心的目录节点,目录节点变化之后通知客户端 (观察者模式)

三种角色:

leader  责进行投票的发起和决议,更新系统状态

follower 用于接受客户端请求并想客户端返回结果,在选主过程中参与投票

observer 可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度

 

zookeeper 核心是原子广播:

  • 恢复模式,zookeeper配置为集群模式时,系统启动或者是当前leader崩溃或者是当前leader丢失大多数的follower,zk进入恢复模式,恢复模式需要重新选举出一个新的leader,当领导者被选举出来,且大多数Server的完成了和leader的状态同步以后,恢复模式就结束了。
  • 广播模式,状态同步保证了Leader和所有Server都具有相同的系统状态。这时候当Server加入Zookeeper集群后,会先在恢复模式下启动该Server,发现Leader后,并和Leader进行状态同步,待到同步结束,它也参与消息广播,即进入广播状态。Zookeeper服务一直维持在Broadcast状态,直到Leader崩溃了或者Leader失去了大部分的Followers支持,才会进入恢复模式,从新选举Leader。

zookeeper 工作原理:

为了保证事务的顺序一致性,zookeeper采用了递增的事务id号(zxid)来标识事务。所有的提议(proposal)都在被提出的时候加上了zxid。实现中zxid是一个64位的数字,它高32位是epoch用来标识
leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch,标识当前属于那个leader的统治时期。低32位用于递增计数。

 

每个Server在工作过程中有三种状态:
    LOOKING:当前Server不知道leader是谁,正在搜寻
    LEADING:当前Server即为选举出来的leader
    FOLLOWING:leader已经选举出来,当前Server与之同步

工作流程:

zookeeper (基本知识一)_第1张图片

注:1.在Client向Follwer发出一个写的请求

2.Follwer把请求发送给Leader

3.Leader接收到以后开始发起投票并通知Follwer进行投票

4.Follwer把投票结果发送给Leader

5.Leader将结果汇总后如果需要写入,则开始写入同时把写入操作通知给Leader,然后commit;

6.Follwer把请求结果返回给Client

 

zookeeper follwer

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

 

zookeeper 数据类型有四种类型

Znode有四种形式的目录节点
» PERSISTENT(持久的)
» EPHEMERAL(暂时的)
» PERSISTENT_SEQUENTIAL(持久化顺序编号目录节点)
» EPHEMERAL_SEQUENTIAL(暂时化顺序编号目录节点)

 

 

 

 

 

 

你可能感兴趣的:(zookeeper (基本知识一))