首页 > 其他分享 >Zookeeper - 简述ZAB 协议和zookeeper

Zookeeper - 简述ZAB 协议和zookeeper

时间:2022-10-28 12:08:37浏览次数:52  
标签:事务 zookeeper Zookeeper ZAB 节点 follower leader


ZAB 协议

ZAB 协议

故障恢复的原子广播协议。

消息广播:



Zookeeper - 简述ZAB 协议和zookeeper_故障恢复



  1. 只允许有一个主进程(leader)接收事务请求并处理。
  2. 当leader 接收到请求之后,将事务请求转化为事务提议(proposal) 并将该proposal 分别入队 (leader 会为每个follower 分别创建一个响应队列用来保证事务提交的顺序)。
  3. 每个事务proposal 有一个递增的全局唯一的ID,事务ID(ZXID)
  4. leader 通过响应队列将proposal 分发到其他节点之后,等待反馈;follower 接收到proposal 之后写入本地日志,返回 ack;
  5. leader 收到一半以上follower 的反馈之后,会向其他节点 发送commit,同时提交事务。

故障恢复:

  1. 保证已经在leader 机器上提交的事务最终被所有机器提交
  2. 丢弃只在leader 机器上被提出的事务

为保证以上两点:

  • Leader选举:选择ZXID 最大的节点作为Leader。
  • 数据同步:leader 为每个follower 创建一个队列,将没有被各个follower 提交的事务 proposal填入各个队列,并分发给follower。follower 事务同步以后,leader会将它加入到真正可用follower 列表中。

ZAB协议中两种模式:

消息广播和故障恢复。

当系统启动或者leader 机器出现故障现象时,进入故障恢复模式并进行leader选举。选举产生的leader 会与过半的follower 进行数据同步。同步结束,退出故障恢复模式,进入消息广播模式;任意一台遵从ZAB协议的机器启动后,如果检测到leader 广播,都会自动进入故障恢复模式与leader 进行数据同步,同步之后,进入消息广播模式;非leader 接收到客户端事务请求时,会转发给leader 处理;

Leader 重新选举条件:

  1. leader 宕机或故障
  2. 与leader 保持连接的机器少于一半

Zookeeper

  • zookeeper 为分布式应用提供了一个高效可靠的分布式协调服务;
  • 实现依赖于ZAB 协议,实现了一种主备模式的架构来保持集群的数据一致性;
  • zookeeper 可以帮助分布式应用以一个共享的树形的命名空间实现协调;
  • zookeeper 将数据全部存储在内存中并且集群中任意一台机器都可以响应客户端读操作,因此它更适合用以读操作为主的场景;zookeeper 集群节点有三种角色:leader、follower、observer。
  • leader:通过选举产生的集群领导者;提供读写服务;
  • follower:提供读服务;参与leader 选举和写操作“过半写成功”策略;
  • observer:提供读服务;不影响集群写性能的前提下提升集群的读性能;
  • zookeeper 集群节点总数为奇数;
  • zookeeper 数据节点类型:持久节点(只能采用删除操作清除该节点)、临时节点(其生命周期取决于session 是否失效)、顺序节点(子节点顺序表,节点名有数字后缀) ;
  • zookeeper 每个节点都有 Stat 结构(数据节点的所有状态信息)
  • 最重要的功能:watcher;
  • 开源客户端:zkclient、curator;


标签:事务,zookeeper,Zookeeper,ZAB,节点,follower,leader
From: https://blog.51cto.com/u_11290086/5804036

相关文章

  • Zookeeper - ZAB 集群数据同步的过程
    Zookeeper事务ID每个zookeeper事务都有一个全局唯一的事务ID,ZXID。ZXID高32位是leader周期epoch,低32位是递增计数器。第一阶段(准leader生成初始化事务集合)所有......
  • Zookeeper - ACL(Access Control List)
    zookeeper的权限控制机制权限模式IP针对某个IP或者针对某个IP网段Digestusername:passwordworldworld:anyonesuper超级用户授权对象权限赋予的用......
  • Zookeeper - zookeeper 底层实现数据一致性
    zookeeper主要应用事务日志和数据快照来实现底层数据一致性;事务日志事务日志是记录zookeeper事务操作的日志文件。以ZXID为事务日志文件名的后缀,可以快速的定位到查询......
  • Zabbix技术分享——监控windows进程资源使用情况
       监控系统进程资源的使用情况是IT运维的常规操作。在实际工作中,运维人员有可能遇到可以使用ZabbixAgent监控linux系统进程,却无法监控windows系统进程的情况。这是......
  • 一键部署zabbix脚本
    #!/bin/bashZABBIX_VER=5.0URL="https://mirror.tuna.tsinghua.edu.cn/zabbix"FONT=msyhbd.ttcMYSQL_HOST=localhost#MYSQL_HOST=10.0.0.100MYSQL_ZABBIX_USER="zabbix@loca......
  • zookeeper伪分布式环境的搭建
    搭建Zookeeper集群1.1搭建要求真实的集群是需要部署在不同的服务器上的,但是在我们测试时同时启动很多个虚拟机内存会吃不消,所以我们通常会搭建伪集群,也就是把所有的服务......
  • Java 中那些绕不开的内置接口 -- Serializable
    上一部分我们着重讲了Java集合框架中在开发项目时经常会被用到的数据容器,在讲解、演示使用实践的同时,把这个过程中遇到的各种相关知识点:泛型、​​Lambada​​​、​​Str......
  • Prometheus和Zabbix的对比
    1、https://blog.csdn.net/qq_33326449/article/details/112725317新公司要上监控,面试提到了Prometheus是公司需要的监控解决方案,作为喜新厌旧的程序员,我当然是选择跟风......
  • TypeError: Object of type 'ndarray' is not JSON serializabl;TypeError: Object of
    1.python使用​​json.jsonify​​​将结果转为json格式时,爆出如上​​TypeError:Objectoftype'ndarray'isnotJSONserializable​​​错误。(flask)代码如下:@app......
  • SpringCloud(一) - Dubbo + Zookeeper
    Dubbo和Zookeeper不是SpringCloud的东西,放在这里只是为了方便复习;1、下载安装Zookeeper和Dubbo1.1下载安装教程下载安装教程windows环境下安装zookeeper教程详解(单......