会话状态
在zookeeper客户端与服务端成功完成连接创建后,就建立了一个会话。zookeeper会在整个运行期间的生命周期中,会在不同
的会话状态间进行切换,这些状态一般,这些状态一般可以分为CONNECTING,CONNECTED,RECONNECTING,RECONNECTED
和CLOSED。
一旦客户端开始创建Zookeeper对象,那么客户端状态就会变成CONNECTING,同时客户端开始从上述服务器地址列表中捉个选取IP
进行网络连接,直到成功连接上服务器然后将客户端状态变更为CONNECTED。
通常情况下伴随着网络闪断或是其他原因,客户端与服务器之间的连接会出现断开情况。一旦碰到这种情况,zookeeper客户端会自动进行
重连操作。同时客户端的状态会变成CONNECTING。直到重新连接上服务端后,状态变为CONNECTED。
另外如果出现会话超时,权限检查失败或则客户端主动退出程序等情况,那么客户端的状态会变为CLOSED
。
会话创建
Session是zookeeper中的会话实体,代表了一个客户端会话,包括以下4个属性。
服务器的角色介绍
Leader
Leader服务器是整个zookeeper集群工作机制的核心,其主要工作有以下两个
- 事务请求的唯一调度和处理这,保证集群事务处理的顺序性。
- 集群内部各服务器的调度者
Follower
Follower服务器时zookeeper集群状态的跟随者,其主要工作有一下三个。
- 处理客户端非事务请求,转发事务请求给Leader服务器。
- 参与事务请求Proosal的投票
- 参与Leader选举投票
Oberver
Oberver是zookeeper引入的全新的服务器角色。observer服务器在工作原理上和Follower基本是一致的。
对非事务请求,都可以进行独立的处理,对于事务请求则会转发给leader服务器。
和follower的区别是不参与投票,包括事务请求Proposal的投票和Leader选举投票。