ThinkInOpenSource / zookeeper

zookeeper实践
Apache License 2.0
1 stars 0 forks source link

zookeeper 请求处理流程 #7

Open luoxn28 opened 6 years ago

luoxn28 commented 6 years ago

zk集群中,有3种角色,分别是LeaderFllowerObserver

1 Leader

Leader服务器是整个zk集群的核心,主要工作是如下两个:

使用责任链模式来处理客户端请求是zk服务器的一大特色,每个服务器启动的时候,都会进行请求处理链的初始化,Leader服务器请求处理链如下图: image

LearnerHandler

Leader与每个Follower/Observer都建立一个TCP长连接,同时会为每个TCP长连接创建一个名为LearderHandler的实体,用来表示Leader与它们之间的连接信息。LearderHandler主要负责Leader和Follower/Observer之间的一系列网络通信,包括数据同步、请求转发和Proposal投票。

2 Follower

Follower是Leader的跟随者,主要职责有以下3个:

和Leader一样,Follower也采用了责任链模式处理请求,由于不需要事务请求的投票处理,流程相对简单一点。 image

3 Observer

Observer是zk自3.3.0版本引入的新角色,其工作原理和Follower类似,对于非事务请求都可以独自处理,对于事务请求,发送给Leader处理。和Follower唯一区别就是,Observer不参与投票,包括事情请求proposal的投票和leader选举的投票。另外,Observer的请求处理链和Follower类似。 image

需要注意的是,虽然上图中在初始化阶段会将SyncRequestProcessor处理器组装上去,但是在实际的运行过程中,Leader服务器不会讲事务请求发送个Observer服务器。

ShawshankLin commented 5 years ago

同session的操作,,,,写读怎么保证他的顺序性呢?