zk源码阅读38:集群版Server启动时角色与消息通信类型

摘要

前面讲完了集群版leader选举之后,后面要完成leader和各个机器的数据同步,以及leader和各机器的服务启动,
在这里简单描述一下服务器的角色,以及服务器之间,消息通信的类型。方便后文的理解。
主要讲解内容

服务器角色
  Leader
  Learner
    Follower
    Observer
消息类型
  数据同步型
  服务器初始化型
  请求处理型
  会话管理型

服务器角色

Leader

Leader服务器是Zookeeper集群工作的核心,其主要工作如下

  (1) 事务请求的唯一调度和处理者,保证集群事务处理的顺序性。
  (2) 集群内部各服务器的调度者。

Learner

主要分为Follower和Observer

Follower

Follower是Zookeeper集群的跟随者,其主要工作如下

  (1) 处理客户端非事务性请求(读取数据),转发事务请求给Leader服务器。
  (2) 参与事务请求Proposal的投票。
  (3) 参与Leader选举投票。

Obeserver

Observer充当观察者角色,观察Zookeeper集群的最新状态变化并将这些状态同步过来,其对于非事务请求可以进行独立处理,对于事务请求,则会转发给Leader服务器进行处理。Observer不会参与任何形式的投票,包括事务请求Proposal的投票和Leader选举投票。

消息类型

这一段是直接引用refer的

Zookeeper的消息类型大体分为数据同步型、服务器初始化型、请求处理型和会话管理型。

数据同步型

指在Learner和Leader服务器进行数据同步时,网络通信所用到的消息,通常有DIFF、TRUNC、SNAP、UPTODATE。


服务器初始化型

指在整个集群或是某些新机器初始化时,Leader和Learner之间相互通信所使用的消息类型,常见的有OBSERVERINFO、FOLLOWERINFO、LEADERINFO、ACKEPOCH和NEWLEADER五种。


请求处理型

指在进行清理时,Leader和Learner服务器之间互相通信所使用的消息,常见的有REQUEST、PROPOSAL、ACK、COMMIT、INFORM和SYNC六种。


会话管理型

指Zookeeper在进行会话管理时和Learner服务器之间互相通信所使用的消息,常见的有PING和REVALIDATE两种。


思考

Learner的意义

非leader的机器都可以称为Learner,在代码中Learner是Follower和Observer的父类

refer

http://www.cnblogs.com/leesf456/p/6139266.html
《paxos到zk》 7.7节

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容