网易云课堂学习-zk集群

网易云课堂学习-zk集群_第1张图片
可靠的zk服务

  1. zk集群介绍
    1.1. 可靠的zk服务
    1.2. 只要集群的大多数都准备好了,就可以使用这项服务
    1.3. 容错集群设置至少需要三个以上服务器
    强烈建议使用奇数个服务器
    1.4. 建议每个服务运行在单独的服务器
  2. zk集群搭建
    2.1. initLimit
    集群中follower(f)和leader完成初始化同步连接时,最多能容忍的心跳数(tickTime)
    2.2. synLimit
    followder和leader间请求和应答间最多能容忍的心跳数
    2.3. 集群节点
    server.id=host:port:port
    id:通过在各自的dataDir目录创建一个名为myid的文件来为每台机器赋予一个服务器id。
    两个端口号:第一个是用来连接到leader,第二个用来选举leader。
    4
    2.4. 创建myid文件
    集群中唯一,1-255之间。一行只包含机器id的文本。
  3. zk集群监控
    3.1. 四字监控命令
    3.2. JMX
  4. zk集群-zab协议
    4.1. 崩溃恢复
    4.1.1. leader服务器出现崩溃,就会进入崩溃恢复
    4.1.2. zab协议规定,一个事务proposal在一台机器上被处理成功,那么应该
    在所有机器上被处理成功
    哪怕机器出现故障崩溃
    4.1.3. 已在leader服务器上提交的事务,最终会在所有服务器上提交
    4.1.4. 确保丢弃,只在leader服务器上提出的服务
    4.2. 数据同步
    4.2.1. leader选举出来后,需要和followers进行数据同步
    5
    当半数follows完成同步,即可开始提供服务
    4.2.2. leader为followers服务器提供一个队列
    并将没有被各followers同步的事务以proposal消息形式逐个发给follower,并在每个proposal消息后紧跟
    着再发送一个commit消息,以表示该事务已经提交。
    4.2.3. followers将所有事务同步过来,并应用到本地数据库后,leader才会把
    该followers加入真正可用的列表
    4.3. 丢弃事务proposal处理
    4.3.1. zxid是64位的数字
    4.3.2. 低32位,简单单调递增
    每个事务请求,该数字+1
    4.3.3. 高32位,代表leader周期纪元编号
    每次选举出新的leader,会将老的zxid的高32位+1,将低32位置为0
    4.4. 介绍
    4.4.1. zookeeper atomic broadcast 原子广播消息协议
    6
    专门为zookeeper设置的数据一致性协议。
    读请求可以被所有服务器处理。请求可以被所有服务器接受,但是都会转发到leader。
    4.5. 协议过程说明
    4.5.1. 所有事务请求转发给leader
    4.5.2. leaser分配全局单调递增事务id,zxid,广播事务提议
    4.5.3. follower处理提议,做出反馈
    4.5.4. leader收到过反馈,广播commit
    4.5.5. leader做出响应
    4.6. 选举算法
    4.6.1. 确保提交已被leader提交的事务proposal,同时丢弃已经被跳过的事务
    4.6.2. 新leader拥有集群中最高zxid的事务proposal
    以此保证新选举出的leader具有所有已经提交的提案
    4.6.3. 让具有最高事务编号的服务器成为leader
    即可省去leader服务器检查proposal的提交和丢弃工作这一步骤
  5. zk集群–leader选举
    7
    zk保证了cap理论的c一致性和p分区容错性,可用性有所牺牲
    5.1. 机制概念
    5.1.1. 服务器id,myid
    5.1.2. 事务id,服务器中存放的最大zxid
    5.1.3. 逻辑时钟
    5.1.4. 选举状态
    5.2. 选举算法
    5.2.1. 自己投自己
    5.2.2. 比较事务id,大投,相等比较服务器id
    5.2.3. 收到票数大于集群数量半数则胜出
    没有投出结果,则重新发起投票
    5.3. 流程示例说明
    5台服务器,1,2,3,4,5,按编号依次启动,选举流程如下:
    1、服务器1启动,给自己投票,并发投票信息,由于其它机器还没启动所以收不到反馈信息,服务器1的状
    态一直处于looking。
    2、服务器2启动,给自己投票,同时与服务器1交换结果,由于服务器2编号大,所以服务器2胜出,但是票
    数小于半数,状态依然是looking。
    8
    3、服务器3启动,给自己投票,同时与服务器1,2交互结果,由于服务器3编号大,胜出,服务器3的票数
    大于半数,成为leader。服务器1,2成为小弟。
    4、服务器4启动,由于3已经胜出,3只能做小弟。
    5、服务器5启动,同服务器4的逻辑。
    5.4. 简介
    对选举算法的要求:
    leader节点持有最高zxid
    过半数节点同意
    内置实现的选举算法:
    LeaderElection
    FastLeaderElection(默认)
    AuthFastLeaderElection
  6. zk集群-参数配置
    6.1. 从官网学习
    http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_configuration

你可能感兴趣的:(zk)