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

news2024/11/20 13:45:19

文章目录

  • 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.coloradmin.cn/o/1081347.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

04_学习springdoc与oauth结合_简述

文章目录 1 前言2 基本结构3 需要做的配置 简述4 需要做的配置 详述4.1 backend-api-gateway 的配置4.1.1 application.yml 4.2 backend-film 的配置4.2.1 pom.xml 引入依赖4.2.2 application.yml 的配置4.2.3 Spring Security 资源服务器的配置类 MyResourceServerConfig4.2.4…

代数——第3章——向量空间

第三章 向量空间(Vector Spaces) fmmer mit den einfachsten Beispielen anfangen. (始终从最简单的例子开始。) ------------------------------David Hilbert 3.1 (R^n)的子空间 我们的向量空间的基础模型(本章主题)是n 维实向量空间 的子空间。我们将在本节讨论它。…

以全新的视角审视重构——世界软件大师“鲍勃大叔”作序推荐

编程不只是写代码,更是一门艺术。编写优雅代码是一种极致追求,这需要一种极客精神才可以达到。高质量的代码不仅可以增加代码可读性,还可以确保所写的代码能够高质量运行和高效维护。 编程也是一门沟通语言,是团队沟通的方式。对代…

计算机毕业设计选题推荐-springboot 企业在线培训系统

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

JUC并发编程(二):线程相关知识点

1.背景 实现编发编程的主要手段就是多线程。线程是操作系统里的一个概念。接下来先说说两者的定义、联系与区别。 1.1 进程和线程的区别 进程 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从…

比特大陆:全员工资停发!昔日的“矿机一哥”遇现金流危机?

近日,一则关于比特大陆暂缓发放9月份全体员工部分工资的消息在网上流传。比特大陆对员工称公司营运现金流尚未转正,尤其是部矿(部署矿机进矿场)进度严重不达标,决定暂缓发放9月份全体员工部分公司,10月7日后视情况发放。 脉脉上多…

Unity基础课程之物理引擎6-关于物理材质的使用和理解

每个物体都有着不同的摩擦力。光滑的冰面摩擦力很小,而地毯表面的摩擦力则很大。另外每种材料也有着不同的弹性,橡皮表面的弹性大,硬质地面的弹性小。在Unity中这些现象都符合日常的理念。虽然从原理上讲,物体的摩擦力和弹性有着更…

利用异常实现短期hook

场景1 调用目标call 需要跳过某些判断或者函数 场景2 目标call 只需要部分指令执行 大概实现技术 设置线程上下文设置drX寄存器 实现硬件执行断点 主动调用目标call 通过硬件断点获取寄存器或修改eip 以上实现不改变crc且不通过驱动实现。只对当前执行线程有效&#xff…

ubuntu离线编译安装cmake 3.22.5(could not fonud OPENSSL) and cmake-versinon查不到版本问题

1、首先去cmake官网下载压缩包,例如: cmake-3.22.5.tar.gz 2、拉到ubuntu进行解压: tar -zxcf cmake-3.22.5.tar.gz 3、cd 进入目录 cd cmake-3.22.5 4、执行configure可执行文件 ./configure 如果在编译过程中出现报错:Could NOT findOpenSSL,原因可能是缺少ssl库 按…

第四节(1):EXCEL中判断一个WORD文件是否被打开

《VBA信息获取与处理》教程(10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网…

如何计算一个结构体的大小?(C语言)

文章目录 写在前面1. 结构体的内存对齐2. 结构体大小的计算方式(四步法)3. 修改默认对齐数4. 内存对齐的意义5. 结构体设计技巧 写在前面 我们知道C语言中各种内置类型定义的变量都是有大小的,比如 int 类型的变量占4个字节,而像…

对一个变速器原理的分析

背景 原本是朋友在调试一个看起来比较新的变速器驱动,整体来说支持两种变速模式,一种是进程级,这种用了HOOK,中规中矩的实现,原理网上都有。另一种是”系统级内核全局变速“,这个模式初步看了下有些特殊&a…

猫头虎带您了解CSDN1024城市开发者大会分会场报名指南(文末送30元优惠券)

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

全链路压测:保障系统稳定性与性能的关键措施

随着互联网应用规模的不断扩大和用户对系统性能要求的提高,全链路压测成为保障系统稳定性和性能的关键环节。本文将介绍全链路压测的概念、重要性以及实施全链路压测的步骤和最佳实践,以帮助读者更好地理解和应用全链路压测技术。 一、全链路压测的概念与…

客服支持Chatbot提供即时回答,改善用户体验

大家在网上冲浪了那么久,一定对于客户支持Chatbot都有所了解。客户支持Chatbot就像真人客服一样,可以与人进行简单的对话,并针对人们的需求给出相应的回答。虽然有时候得到的答案并不怎么靠谱吧,但是总的还是比较节省人工的&#…

docker概念

docker 容器:就是提供在多台主机上运行的应用程序相同的运行环境。 docker的概念 是开源的容器,是由Go语言开发的,是容器里面运用的工具,他是一个轻量级的虚拟机,可以利用docker在多台主机上创建与运行容器。 docke…

矩阵剪辑系统源码----pc/手机端双开发

剪辑系统,剪辑矩阵系统,剪辑矩阵系统主要是针对抖音、快手、bili平台的一个工具,今天就来给大家交流一下这 个产品的主要功能以及构成。剪辑矩阵系统,矩阵剪辑系统源码-这产品主要功能就是一个视频剪辑功能,这个视频剪…

深入解析:探索Nginx与Feign交锋的背后故事 - 如何优雅解决微服务通信中的`301 Moved Permanently`之谜!

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

2023年中国数据存储市场现状及发展前景预测分析

中商情报网讯:当前,新一代信息技术快速发展推动信息产业发生了重大变革,数据存储行业将很快成为信息领域一个重要的产业分支。生成式人工智能催生算力需求,各种新兴应用场景对数据存储的容量、效率、流动性和安全性等方面提出了更…

快速入门C++

W...Y的主页😊 代码仓库分享💕 🍔前言: 我们学习了C语言,有了C语言的底子就更容易学习C,今天让我们认识一下C,并了解分析一下C。 目录 什么是C 为什么会出现C C的发展史 C与C语言的区别 …