zoukankan      html  css  js  c++  java
  • paxos raft zab

    三者都是强一致性算法(cp)的理论基础。如何体现出CP?因为leader存在单点,当leader挂了之后,再重新选举出leader这个时间段内是不可用的。

    paxos 有多个版本,basic paxos和multi paxos。

    basic paxos

     

     

     

     multi paxos

    Basic Paxos的问题:难实现、效率低(每次选举都有prepare的过程)、活锁,每次提交事务 都要有议案 议案通过之后在进行2pc提交

    Multi Paxos: 只有在第一次事务提交 没有leader的时候 会找选举leader的过程 在leader选举的时候会有议案过程 以后得事务提交 因为leader已经存在了 所以就没有议案的过程了 直接进行2pc提交;

    Raft zab

    这个两种一致性算法是从Multi Paxos衍生而来。

    Raft

    划分出了三个问题
      leader选举
      日志记录
      安全(数据恢复)
    1 每个节点有三个角色
      leader 主节点
      follow 从节点
      candidate 当节点要竞选为leader时候的角色 是个瞬间角色
    2 两个阶段
      2.1 选择leader阶段
      2.2 提交数据
    只能提交给leader 然后由leader向follow节点同步 过半节点接受即可
    3 leader和follow节点心跳监控
      由leader节点固定时间给follow发心跳包 follow自身会维护一个定时器 在定时的时间内如果没有收到leader的心跳包 就认为leader挂了 然后发送选举自己为leader

    zab

    基本同raft一直 不同点
    1 节点的角色类型不一样 没有candidate这个角色 多了一个observe的角色
      leader
      follow
      looking. 和raft的candidate差不多
      observe 用来做读 不参与选举leader
    2 提交数据不一样
      leader和follow数据可以提交给follow 但是follow会将请求转给leader 由leader写 然后向follow同步 过半即可
    3 节点心跳监控原理不一样
      由follow定时给leader发送心跳 如果心跳失败 follow就认为leader挂掉 选举自己为leader

    raft和zab相对于Multi Paxos来说,在选举leader的过程中 阉割吊了 议案的过程,只有一个2pc提交。

  • 相关阅读:
    GetHub下载不成功
    Cache 判断Ip几分钟内攻击次数
    .net 通过Url获取站点json数据
    Linq 读取Xml 数据
    ef Linq 自定义字段列表
    面试的心得
    触发器--单独字段变化另一个字段也变化
    Ajax跨域 取值 Jsonp的定义注意事项
    asp.net里,各种下载方式汇总
    c# 获取硬件信息
  • 原文地址:https://www.cnblogs.com/Tony100/p/14099642.html
Copyright © 2011-2022 走看看