Zookeeper一致性协议

zookeeper一致性协议ZAB

ZAB协议介绍

  • ZAB协议(zoo原子广播协议)

  • zookeeper是一个分布式应用提供高效而可靠的分布式协调服务。

  • 协议主要是两个方面

    • 崩溃恢复
    • 原子广播
  • 所有客户端写入的数据都是写到主进程中(和Raft类似)

  • 只要有一半的follower返回ack,leader就能够提交确认

  • 当leader可用则进行消息广播,不可用则崩溃恢复

消息广播

  • 二阶段提交,所有的写操作都由leader接收,leader将操作发送给所有follwer,半数ack返回则执行自己的commit操作
    • 数据复制到follower中
    • 等待回应ack,超过半数
    • 执行自己的提交,发送给follower提交消息
  • leader再接收到写请求时,会将这个操作封装成事务,赋值一个全局递增唯一事务ID(ZXID),ZAB协议保证事务的顺序执行
  • leader和follower之间有一个消息队列,解耦他们之间的同步阻塞
  • 为保证全局顺序性,所有的写请求都由leader处理

崩溃恢复

  • 两个问题

    1. leader复制给follower数据后崩溃?

    2. leader在收到后提交了自己的commit并发送部分commit给follower?

  • ZAB确保已经在Leader提交的事务会被所有服务器提交,ZAB确保丢弃只复制了数据但未提交的事务

  • zookeeper失效后会从ZXID最大的机器中当成候选者,然后从这些候选者之中选出leader

数据同步

  • 在崩溃恢复之后,在正式工作之前(接收客户端请求),leader服务器会确认所有事务都被过半的follower提交。即完成数据同步
  • 数据同步完成之后,会将这些follower加入可用服务器列表中
  • ZXID高位32位代表Term值加一,每个Term具有唯一的Leader
  • ZXID低位32位代表着客户端请求的事务,每次加一
  • 这样在数据恢复时follower就能通过ZXID判断和leader的差别
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值