分布式一致性——Paxos

Paxos

前言

一致性:

  1. CAP
  2. BASE

一致性模型及算法:

  1. 弱一致性

    1. 最终一致性

      DNS

      Gossip

  2. 强一致性

    主从同步

    Paxos:basic-paxos、multi-paxos、fast-paxos

    Raft(multi-paxos)

    ZAB(multi-paxos)

说明:

  1. 数据不能存在单点上
  2. 多副本状态机

复制策略对比

  1. 主从异步复制

    1、master收到写请求

    2、master写入

    3、master应答ok

    4、master复制数据到slave

    数据丢失:3完成,4未完成之间,master宕机

  2. 主从同步复制

    12、…

    3、master复制数据给所有slave

    4、所有slave完成,master应答ok

    可用性降低:某个slave宕机,无法写入,整个系统不可用

  3. 主从半同步复制

    12、…

    3、master复制数据给所有slave

    4、x个slave完成,master应答ok

    x:足够多的机器,但不需要全部机器

    可靠性:较高的可靠性

    一致性:存在某种不一致(可能每个slave都缺失数据,比起master)——>不完整

  4. 多数派写(读)

    写:写入半数以上机器

    读:从半数以上机器读

    场景:node1和2写入x=y1;node2和3写入x=y2;读取node1和3,结果为y1和y2,如何选择?最新

    避免歧义,需要一个全局递增时间戳/版本号,最后一次写入覆盖之前写入

    又一个场景:node2和3写入y2时,node2失败,读取12返回y1,读取23返回y2,整个系统对外提供的数据仍不一致

    又一个场景:请求顺序

Basic-Paxos

是什么

在分布式系统中保证多副本数据强一致的算法

作用:协同,实现一致性

角色

角色说明
client请求者,请求
proposer提议者,提议
acceptor/voter接受者,投票
learner学习者,备份

case

case-1 无冲突

在这里插入图片描述

  1. Phase-1

    Proposer:发出提案,编号为1,请求[1]

    Acceptors:Quorum设置last_round=1,响应[-,-]

  2. Phase-2

    Proposer:收到Quorum,选择值(自定义),请求[round=1, v=‘x’]

    Acceptor:Quorum比对round和last_round,设置v=‘v’,存储[last_round=1, v=‘x’, round=1],响应’Accepted’

case-2 XY冲突,X失败Y成功

在这里插入图片描述

  1. X-1:X完成写前读取,Quorum记录last_round=1

  2. Y-1:Y完成写前读取,Quorum记录last_round=2

  3. X-2:X以round=1发出写,失败

    原因:不满足Quorum,只有Acceptor-1 Accepted,Acceptor-2 Fail

  4. Y-2:Y以round=2发出写,成功

    原因:满足Quorum

case-3 在case-2基础上,X发出round=3

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-musZluD4-1637827290999)(asserts/image-20211125154215256.png)]

  1. X-1:写前读取,round=3,Quorum记录last_round=3,并响应y2和x1

    不同响应,则选取round最大的v,即选取y2,并作为选择的值进行phase-2

  2. X-2:写,round=3且v=y2,成功

步骤

  1. Phase-1 写前读取

    1. Prepare req{ round=n1 }

    2. Promise rsp

      n1小于等于last_round,拒绝

      n1大于last_round,响应{ v, round}

  2. Phase-2 提交介绍(前提 Quorum)

    1. Accept req{ round=n1, v}

      v的取值:Promise响应携带值,则使用round最大的值,否则自定义值

    2. Accepted rsp

      n1等于last_round,接受

      n1不等于last_round,拒绝

refer

可靠分布式系统-paxos的直观解释——张炎泼(xp)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值