目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

大数据全系列 教程

1869个小节阅读:466.9k

收藏
全部开发者教程

408考研

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(312)
赞(0)

1.6.2 ZooKeeper之安其内

  1. 思考一下这个架构有什么问题?

  • leader很重要?如果挂了怎么办?开始选举新的leader
  1. ZooKeeper服务器四种状态:

    • looking:服务器处于寻找Leader群首的状态
    • leading:服务器作为群首时的状态
    • following:服务器作为follower跟随者时的状态
    • observing:服务器作为观察者时的状态

leader选举分两种情况

  • 集群初始启动时:安装后首次启动时
  • 集群运行中leader挂了时
  1. 集群启动时的Leader选举

    • 以3台机器组成的ZooKeeper集群为例

    • 原则:集群中过半数Server启动后,才能选举出Leader;

    • 此处quorum数是多少?

    • 每个server投票信息vote信息结构为(sid, zxid);

      server1~3初始投票信息分别为:

      server1 -> (1, 0) server2 -> (2, 0) server3 -> (3, 0)

    • leader选举公式

      server1 (sid1, zxid1)

      server2 (sid2, zxid2)

      zxid大的server胜出;若zxid相等,再根据判断sid判断,sid大的胜出

    • 依次启动ZK1、ZK2、ZK3 选举的流程:

      • ZK1和ZK2票投给自己;ZK1的投票为(1, 0),ZK2的投票为(2, 0),并各自将投票信息分发给其他机器。
      • 处理投票。每个server将收到的投票和自己的投票对比;ZK1更新自己的投票为(2, 0),并将投票重新发送给ZK2。
      • 统计投票。server统计投票信息,是否有半数server投同一个服务器为leader;
      • 改变服务器状态。确定Leader后,各服务器更新自己的状态,Follower变为FOLLOWING;Leader变为LEADING。
      • 当ZK3启动时,发现已有Leader,不再选举,直接从LOOKING改为FOLLOWING。
    • 同时ZK1、ZK2、ZK3 选举的流程:

      • ZK1-> (1, 0) ZK2-> (2, 0) ZK3 -> (3, 0) -> ZK3被选中为Leader,其他两台节点被选为Follower。
  2. 集群运行时新leader选举:

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2