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协议需要保证,在崩溃恢复过程中跳过哪些已经被丢弃的事务

  • 相关阅读:
    缓存穿透与缓存雪崩
    hibernate 用hql做中文排序
    设计一个算法,求非空二叉树中指定的第k层(k>1)的叶子节点的个数
    CI框架源代码阅读笔记3 全局函数Common.php
    Linux安装中文man手冊
    ios 自己定义导航栏和切割线
    算法7-7:有向图简单介绍
    [Leetcode]-Min Stack
    ios28--UIScrollView
    ios27--kvo
  • 原文地址:https://www.cnblogs.com/yintingting/p/6576597.html
Copyright © 2011-2022 走看看