zookeeper系列--集群角色

在zookeeper中,客户端会随机连接到zookeeper集群中的一个节点,
- 如果是读请求,就直接从当前节点中读取数据
- 如果是写请求,那么请求会转发给leader提交事务,然后Leader会广播事务,只有超过半数节点写入成功那么写请求就会被提交(类似于2PC-二阶段提交事务),如下图

所有事务请求必须由一个全局唯一的服务器来协调处理,这个服务器就是leader节点,其他的节点就是follower。leader把客户端的事务请求转化成一个事务proposal(提议),并把这个提议分发给急群众的所有follower,之后leader需要等待所有follower的反馈,一旦超过半数的follower进行正确的反馈,那么leader就会再次向集群中所有follower发送commit消息,要求所有follower对千米那的提议进行提交。
集群角色

leader角色
leader是整个zookeeper集群的核心,主要工作任务有两项:
- 事务请求的唯一调度和处理者,保证集群事务处理的顺序性
- 集群内部各节点的调度者
follower角色
follower角色的主要职责:
- 处理客户端非事务请求,转发事务请求给leader
- 参与事务请求proposal提议的投票(半数以上节点通过才能通知leader commit数据,leader发起的提议,要求follower投票)
- 参与leader选举的投票
observer角色
observer值zookeeper3.3版本开始引入的一个去哪新的节点角色,从字面来理解,该角色充当一个观察者的角色,观察zookeeper集群中的最新状态变化并将状态变化同步到observer节点上,observer的工作原理和follower节点基本一样,唯一不同就是observer不参与leader选举投票。简单的说,observer值提供非事务请求,通常在于不影响集群事务处理能力的前提先提升非事务处理的能力。