zk服务:不同角色执行不同的任务。
在区分zk服务器角色前,先解释几个概念:
1.事务请求:
在zk中,会改变服务器状态的请求称为事务请求(创建节点、更新数据、删除节点、创建会话等等)
2.非事务请求
从zk读取数据但是不对状态进行任何修改的请求称为非事务请求
Leader角色
Leader服务器是zk集群工作的核心,主要工作有两个:
- 事务请求的唯一调度者和处理者,保证集群事务处理的顺序性。
- 集群内部各个服务器的调度者
Follower角色
Follower是zk集群的跟随者,主要工作有三个:
- 处理客户端非事务性请求,转发事务请求给Leader服务器(事务请求都由Leader处理)
- 参与事务请求Proposal的投票
- 参与Leader选举投票
Observer角色
Observer充当观察者角色,观察zk集群的最新状态变化并将这些状态同步过来,对于非事务请求可以进行独立的处理,对于事务请求,则会转发给Leader服务器进行处理,Observer不会参与任何形式的投票,包括事务请求Proposal的投票和Leader选举的投票。
服务器具有四种状态,分别是LOOKING,FOLLOWING,LEADING,OBSERVING
- LOOKING
寻找leader状态
当前服务器处于该状态时,它会认为当前集群中没有leader,因此需要进入leader选举状态。 - FOLLOWING
跟随者状态
表示当前服务器的角色是Follower角色 - LEADING
领导者状态
表示当前服务器是Leader - OBSERVING
观察者状态
表示当前服务器角色是Observer