Zookeeper架构及流程

1. Zookeeper概述

zookeeper是一个分布式协调服务软件,最重要的特性是:全局数据一致性.
zookeeper集群包含三个角色:

  1. 主节点:leader
    主节点主要负责:
    ①负责管理整个集群,保证全局数据一致性
    ②负责处理数据事务(包括增删改等)请求
    ③负责转发非事务(查)请求给从节点
  2. 从节点:follower
    从节点主要负责:
    ①实时从主节点拉取数据,保证全局数据一致性
    ②负责处理非事务(查)请求
    ③负责转发事务(增删改)请求给主节点
    ④有投票选举权
  3. 观察者:observer
    在这里,除了没有投票权,其作用和follow作用一样

2. Zookeeper自身选举流程

  1. 每个zookeeper节点都会投票给myid最大的那个机器.
  2. 没有选出主节点之前,每启动一个新的机器,都会选举一次
  3. 采用过半原则,得到票数超过集群的一半的节点,该节点即为主节点,其他节点为从节点.

3. Zookeeper架构图

Zookeeper架构及流程_第1张图片

  1. 当客户端向node1提出增删改等数据请求时,因为node1为从节点(follower),并不负责处理事务型请求,所以node1会将请求转发给node2(主节点)进行处理.
  2. 当客户端向node2发出事务型请求时,直接由node2处理
  3. 当客户端向主节点发出非事务型(查/读)请求时,node2会将请求转发给node1或者node3进行处理.
  4. 当客户端直接向node1或者node3发出非事务(查)请求时,直接由node1或者node3处理.

Zookeeper主备切换

  1. 当集群启动时,所有主节点都会抢占式的去Zookeeper的指定节点下创建1个临时节点,谁抢到谁就是Active,其他的都是StandBy.
  2. 所有的StandBy状态的节点都会实时监听Zookeeper下的那个临时文件的信息,即:注册监听
  3. 当前Active节点(例如node1)会话断开时,该临时节点消失,即:事件触发
  4. 此时其他Standby节点(例如node2)就知道了node1宕机了,就会从Standby状态变为Active状态,并开始工作.

Watch监听机制

  1. 先注册监听事件
  2. 当监听事件被触发时会获取结果.即:先注册, 后触发, 然后获取结果.
  3. Zookeeper的Watch监听机制是一次触发的,触发一次之后,该监听事件消失,再次使用需要重新监听.

Zookeeper架构及流程_第2张图片

你可能感兴趣的:(java-zookeeper,zookeeper,架构,分布式,linux)