Katta如何使用Zookeeper-Server节点的通讯

来源:互联网 发布:linux mysqldump安装 编辑:程序博客网 时间:2024/05/29 02:36
 
Server节点通过Leader选举过程区分出Leader和Follower后,ZkServer集群准备就绪,开始为Client提供服务:
1. Leader,Follower和Observer三者本地都有集群数据的缓存,Client的读数据请求,直接由本地缓存提供;
2. 集群数据的更新同步,由Leader负责发起,时机是任何一个Client发起更新数据的请求后;
Leader和Follower之间的通讯如下图:
leader-follower
1. 连接
   a)Leader启动LearnerCnxAcceptor线程,监听2888
   b)Follower发起连接
   c)Leader接受连接,实例化LearnerHandler,持有一个Socket,表示一个Follower连接
2. 请求
   a)Leader和Follower之间,主要有两种请求:ping和数据变更
      i)ping的发起方是Leader
      ii)数据变更的发起方可以是Leader,也可以是Follower
      iii)数据变更过程的发起方是Leader
   b)Leader发起的ping请求
      i)同时向所有的Follower发出
      ii)Leader持有Follower连接的列表,即LearnerHandler列表
      iii)每个LearnerHandler发出ping请求,具体由SendPacket线程发出
      iv)响应由LearnerHandler接收,再返回给Leader
3. 处理
   a)ping请求
      i)Follower直接处理ping请求
   b)其它请求
      i)分别转发给ZKS,即LeaderZooKeeperServer和FollowerZooKeeperServer
      ii)递交给RequestProcessor处理
原创粉丝点击