002-Zookeeper集群和客户端

ZK集群由Leader、Follower和Observer组成,Leader负责事务处理,Follower和Observer处理非事务请求。在选举中,epoch、zxid和myid是关键因素。集群通过ZAB协议进行数据同步,当主节点崩溃,会重新选举并恢复未提交事务。
摘要由CSDN通过智能技术生成

zk集群

组成

Leader

领导者
事务请求唯一的调度者和处理者,保证进去事务的顺序性

Follower

跟随者
处理非事务请求,如果接收到事务请求,则转发给Leader,有选举权

Observer

观察者,不参与提交和选举,可处理非事务请求,可转发事务请求

搭建步骤

  1. 修改 zoo.cfg文件末尾添加
    server.1=ip:port1:port2
    其中port1端口是Follower和leader交换信息的端口
    port2是重新选举的通讯端口

  2. 创建myid文件配置服务器编号

  3. 启动对应的zk进程

选举原理

选举场景

  1. 集群启动选举
  2. 运行过程中leader挂机

选举策略

myid大的权重越大
事物id越大权重越大
逻辑时钟epoch(谁先发消息谁的epoch更大)

选举过程

  1. 每个服务都发起投票(myid、zxid),投自身
  2. 接受来自其他机器的投票
    接收到投票后开始计算投票
    a. 优先比较epoch,谁先选谁
    b. zxid越大
    c. myid越大
  3. 统计票数超过半数则成为新的leader
  4. 新leader服务的状态变更
    follower变为FOLLOWING
    leader变为LEADING
    新加入的机器自动变更为FOLLOWING

集群数据同步-ZAB

消息广播

主节点把数据发给从节点
从节点给出正确反馈
主节点发出commit命令

崩溃恢复

主节点失去了半数从节点

主节点发送消息到从节点后立即崩溃
重新选举出新的主节点 zxid最大的为新的主节点

新的主节点将事务日志中尚未提交的消息进行处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值