zoukankan      html  css  js  c++  java
  • Zookeeper-ZAB协议

    paxos协议主要就是如何保证在分布式环网络环境下,各个服务器如何达成一致最终保证数据的一致性问题

    ZAB协议,基于paxos协议的一个改进。

    zab协议为分布式协调服务zookeeper专门设计的一种支持崩溃恢复的原子广播协议

    zookeeper并没有完全采用paxos算法, 而是采用zab Zookeeper atomic broadcast

    zab协议的原理

    1. 在zookeeper 的主备模式下,通过zab协议来保证集群中各个副本数据的一致性
    2. zookeeper使用的是单一的主进程来接收并处理所有的事务请求,并采用zab协议,

    把数据的状态变更以事务请求的形式广播到其他的节点

    1. zab协议在主备模型架构中,保证了同一时刻只能有一个主进程来广播服务器的状态变更
    2. 所有的事务请求必须由全局唯一的服务器来协调处理,这个的服务器叫leader,其他的叫follower

    leader节点主要负责把客户端的事务请求转化成一个事务提议(proposal),并分发给集群中的所有follower节点

    再等待所有follower节点的反馈。一旦超过半数服务器进行了正确的反馈,那么leader就会commit这条消息

    崩溃恢复

    原子广播

    zab协议的工作原理

    1. 什么情况下zab协议会进入崩溃恢复模式
    2. 当服务器启动时
    3. 当leader服务器出现网络中断、崩溃或者重启的情况
    4. 集群中已经不存在过半的服务器与该leader保持正常通信
    5. zab协议进入崩溃恢复模式会做什么

    zab协议进入崩溃恢复模式会做什么

    1. 当leader出现问题,zab协议进入崩溃恢复模式,并且选举出新的leader。当新的leader选举出来以后,如果集群中已经有过半机器完成了leader服务器的状态同(数据同步),退出崩溃恢复,进入消息广播模式
    2. 当新的机器加入到集群中的时候,如果已经存在leader服务器,那么新加入的服务器就会自觉进入数据恢复模式,找到leader进行数据同步

    问题

    假设一个事务在leader服务器被提交了,并且已经有过半的follower返回了ack。 在leader节点把commit消息发送给folower机器之前

    leader服务器挂了怎么办

    zab协议,一定需要保证已经被leader提交的事务也能够被所有follower提交

    zab协议需要保证,在崩溃恢复过程中跳过哪些已经被丢弃的事务

  • 相关阅读:
    1.4 build命令
    2.2-2 文章模块开发【添加文章页面脚本编写】
    2.2-1 文章模块开发 【入口脚本及模板的创建】
    2.1 开始一个项目 【功能梳理】
    [微信小程序]不在以下合法域名列表中
    [微信小程序]swiper保持宽高比
    爸爸一路走好
    LVM日记
    欲玩Discuz_X3.2,无奈不支持php7,再装个php5.3,编译到一半报错
    /sbin/ldconfig: /usr/local/lib64/libstdc++.so.6.0.22-gdb.py 不是 ELF 文件
  • 原文地址:https://www.cnblogs.com/yintingting/p/6576597.html
Copyright © 2011-2022 走看看