zookeeper架构及流程-爱代码爱编程
1. Zookeeper概述
zookeeper是一个分布式协调服务软件,最重要的特性是:全局数据一致性.
zookeeper集群包含三个角色:
- 主节点:leader
主节点主要负责:
①负责管理整个集群,保证全局数据一致性
②负责处理数据事务(包括增删改等)请求
③负责转发非事务(查)请求给从节点 - 从节点:follower
从节点主要负责:
①实时从主节点拉取数据,保证全局数据一致性
②负责处理非事务(查)请求
③负责转发事务(增删改)请求给主节点
④有投票选举权 - 观察者:observer
在这里,除了没有投票权,其作用和follow作用一样
2. Zookeeper自身选举流程
- 每个zookeeper节点都会投票给myid最大的那个机器.
- 没有选出主节点之前,每启动一个新的机器,都会选举一次
- 采用过半原则,得到票数超过集群的一半的节点,该节点即为主节点,其他节点为从节点.
3. Zookeeper架构图
- 当客户端向node1提出增删改等数据请求时,因为node1为从节点(follower),并不负责处理事务型请求,所以node1会将请求转发给node2(主节点)进行处理.
- 当客户端向node2发出事务型请求时,直接由node2处理
- 当客户端向主节点发出非事务型(查/读)请求时,node2会将请求转发给node1或者node3进行处理.
- 当客户端直接向node1或者node3发出非事务(查)请求时,直接由node1或者node3处理.
Zookeeper主备切换
- 当集群启动时,所有主节点都会抢占式的去Zookeeper的指定节点下创建1个临时节点,谁抢到谁就是Active,其他的都是StandBy.
- 所有的StandBy状态的节点都会实时监听Zookeeper下的那个临时文件的信息,即:注册监听
- 当前Active节点(例如node1)会话断开时,该临时节点消失,即:事件触发
- 此时其他Standby节点(例如node2)就知道了node1宕机了,就会从Standby状态变为Active状态,并开始工作.
Watch监听机制
- 先注册监听事件
- 当监听事件被触发时会获取结果.即:先注册, 后触发, 然后获取结果.
- Zookeeper的Watch监听机制是一次触发的,触发一次之后,该监听事件消失,再次使用需要重新监听.