当前位置: 首页 > news >正文

Zookeeper分布式一致性协议ZAB源码剖析

文章目录

  • 1、ZAB协议介绍
  • 2、消息广播

1、ZAB协议介绍

ZAB 协议全称:Zookeeper Atomic Broadcast(Zookeeper 原子广播协议)。
Zookeeper 是一个为分布式应用提供高效且可靠的分布式协调服务。在解决分布式一致性方面,Zookeeper 并没有使用 Paxos ,而是采用了 ZAB 协议,ZAB是Paxos算法的一种简化实现。
ZAB 协议定义:ZAB 协议是为分布式协调服务 Zookeeper 专门设计的一种支持 崩溃恢复 和 原子广播 的协议。下面我们会重点讲这两个东西。
基于该协议,Zookeeper 实现了一种 主备模式 的系统架构来保持集群中各个副本之间数据一致性。具体如下图所示:
在这里插入图片描述

上图显示了 Zookeeper 如何处理集群中的数据。所有客户端写入数据都是写入到Leader节点,然后,由 Leader 复制到Follower节点中,从而保证数据一致性。
那么复制过程又是如何的呢?复制过程类似两阶段提交(2PC),ZAB 只需要 Follower(含leader自己的ack) 有一半以上返回 Ack 信息就可以执行提交,大大减小了同步阻塞。也提高了可用性。
简单介绍完,开始重点介绍 消息广播 和 崩溃恢复。整个 Zookeeper 就是在这两个模式之间切换。 简而言之,当 Leader 服务可以正常使用,就进入消息广播模式,当 Leader 不可用时,则进入崩溃恢复模式。

2、消息广播

ZAB 协议的消息广播过程使用的是一个原子广播协议,类似一个 两阶段提交过程。对于客户端发送的写请求,全部由 Leader 接收,Leader 将请求封装成一个事务 Proposal,将其发送给所有 Follwer ,然后,根据所有 Follwer 的反馈,如果超过半数(含leader自己)成功响应,则执行 commit 操作。

http://www.lryc.cn/news/190923.html

相关文章:

  • 微软 AR 眼镜新专利:包含热拔插电池
  • 软件TFN 2K的分布式拒绝攻击(DDos)实战详解
  • 计算机网络第四章——网络层(末)
  • Newman基本使用
  • 左值引用右值引用
  • 学习开发一个RISC-V上的操作系统(汪辰老师) — 一次RV32I加法指令的反汇编
  • IDEA中点击New没有Java Class
  • 打造炫酷效果:用Java优雅地制作Excel迷你图
  • pycharm设置pyuic和pyrcc
  • OpenCV6-图形绘制
  • kafka消费者程序日志报错Offset commit failed问题研究
  • SpringBoot+原生HTML+MySQL开发的电子病历系统源码
  • 软件测试/测试开发/人工智能丨聊聊AutoGPT那些事儿
  • KdMapper扩展实现之SOKNO S.R.L(speedfan.sys)
  • MATLAB算法实战应用案例精讲-【图像处理】计算机视觉
  • docker应用的缓存 docker缓存机制
  • 借助 ZooKeeper 生成唯一 UUID
  • Redis哨兵机制原理
  • Maven Web应用
  • 考古:MFC界面的自适应缩放(代码示例)
  • 计算机网络 | 物理层
  • Centos下编译ffmpeg动态库
  • 深度学习:UserWarning: The parameter ‘pretrained‘ is deprecated since 0.13..解决办法
  • leetcode-279. 完全平方数
  • MySQL常用指令
  • Pulsar 之架构,客户端以及多区域容灾
  • 【SQL】MySQL中的索引,索引优化
  • uniapp 跳转到指定位置
  • 基于java的图书馆预约座位系统的设计与实现(部署+源码+LW)
  • golang 拉取 bitbucket.org 私有库