Zookeeper原理

一、概念

  1. Zookeeper是一个开源的、分布式的,为分布式应用提供协调服务的Apache项目。封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

二、选举机制

  1. 首先是几个概念:
    1. myid:节点的唯一标识,在启动节点之前需要配置好;
    2. zxid:在数据修改后会增加,zxid越大证明这个节点里的数据越新。
    3. leader:leading 角色与状态
    4. follower:following
    5. observer:looking
  2. 过程
    1. 只有两种情况下会产生选举:
      1. 集群初始化(没有leader);
      2. leader不能与其他节点保持稳定连接;
    2. 第一轮:一开始都是looking状态,第一个节点都自己投票(因为没超过半数,所以继续下一轮投票)
      1. 然后节点2也给自己投票,然后互相交换投票结果(会检查有效性)。选票的形式为(myid,zxid)。
      2. 选票比较机制:会比较zxid,保留zxid较大的选票,如果zxid都一致,那么保留myid最大的选票。
    3. 第二轮将通过比较取舍后的选票互相发送,然后判断是否有超过半数的节点保留了相同的选票,如果是,则选票决定了leader;如果否,则节点2为looking状态,继续开启第三个节点进行选票。
    4. 添加一个节点时,如果已有leader,则新加节点自动变成follower。
    5. 整体而言,就是挨个启动节点,然后投一次票比一次id:带你搞明白Zookeeper选举机制_qu_smalldoubao的博客-CSDN博客
  3. ZAB协议
    1. zab协议是为zk专门设计的一种支持崩溃恢复的原子广播协议,zk依赖zab实现分布式数据一致性,来保证住呗模式的系统架构中各个副本之间的数据一致性。zab协议包括两个模式:崩溃回复(新选举leader)和消息广播(选举出Leader服务器之后,进入消息广播模式,开始接收处理客户端的请求)

你可能感兴趣的:(#,Hadoop生态,zookeeper,分布式,大数据)