分布式一致性原理之(分布式架构以及Paxps协议)

分布式系统是一个硬件或软件组成分布式在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统、

分布式系统常见特征

- 分布性
多台计算机在空间上随意分布,机器的分布情况也会随时变动
- 对等性
分布式系统的中的计算机没有主从之分,没有控制整个系统的主机,副本是分布式系统常见的概念,是对数据和服务的一种冗余发方式
- 并发性
- 缺乏全局时钟
- 故障总是会发生

分布式环境需要考虑的问题
  • 通信异常
  • 网络分区 (网络延迟)
  • 三态(失败、成功、超时)
分布式系统事务概念

ACID

  • 原子性
  • 一致性
  • 隔离性
  • 持久性

CAP

  • 一致性
  • 可用性
  • 分区容错

Base理论

  • 基本可用
  • 软状态
  • 最终一致

一致性协议

2PC

2PC(two-Phase-Commit),即二阶段提交,为了保持事务处理的原子性和一致性而设计算法。

阶段一:提交事务请求

  1. 事务询问
    协调者向所有的参与者发送事务内容,询问是否可以执行事务提交操作,并开始等待各参与者的相应

  2. 执行事务
    各参与者执行事务操作,并将Ubdo和redo信心记入事务日志。

  3. 个参与者向协调者反馈事务询问的相应
    如果参与者成功执行了事务操作,那么久反馈协调者Yes,如果参与者没有执行成功,则反馈事务不可执行。

阶段二:执行事务提交

  1. 执行事务提交
    全部参与者都反馈Yes
    1. 发送提交请求
    2. 事务提交
    3. 反馈事务提交结果
    4. 完成事务

  2. 中断事务
    任何一个事务参与者反馈No响应
    1. 协调者向所有参与者节点发送回滚请求
    2. 事务回滚
    3. 反馈事务回滚结果
    4. 中断事务

优缺点:
原理简单,实现方便。
缺点是:同步阻塞、单点问题、脑裂、太过保守。

同步阻塞问题:在二阶段提交执行过程中,所有参与该事务操作的逻辑都处于阻塞状态,也就是说各个参与者在等待其他参与者响应的过程,将无法进行任何操作

单点问题: 如果事务协调者在阶段二出现问题,其他参与者将一直会处于锁定资源的状态中。

数据不一致:二阶段执行事务提交的时候,当协调者向所有参与者发送commit请求之后,发生了局部网络错误或者协调者没有发完Commit请求时,会出现收到的事务提交请求的参与者提交了事务,没有收到的参与者没有提交事务,出现了事物不一致的情况。

太过保守,任意一个节点的失败都会导致整个事务的失败。

3PC

3PC是2PC的改进版,主要是将二阶段提交事务请求过程一分为二,形成有CanCommit、PreCommit、do Commit三个阶段组成的我hi素问处理协议。

阶段一 CanCommit

  1. 事务询问
  2. 各个参与者向十五协调者反馈事务询问的结果
    阶段二 PreCommit
    执行事务预提交:
    假如协调者从所有参与者获取的反馈都是yes相应,那么久执行事务预提交。
    1. 发生预提交请求
    2. 事务预提交
    3. 各个参与者向协调者反馈事务执行的响应
      中断事务
      假如任何一个参与者向协调者反馈NO响应。就会中断事务。
    4. 发送中断事务请求
    5. 中断事务。
      阶段三 doCommit
      执行提交:
    6. 发生体提交请求
    7. 事务提交
    8. 反馈事务提交信息
    9. 完成事务
      中断事务:
    10. 发生中断
    11. 事务回滚
    12. 反馈事务回滚结果
    13. 中断事务

Paxos算法

问题描述
对于一个一致性算法来说需要保证一下几点:

  1. 在这些被提出的提案中,只有一个会被选中
  2. 如果没有提案被提出,那么就不会有被选定的提案
  3. 当一个提案被选中后,进程应该可以获取被选定的提案信息

三种角色

  • Proposer 提议人
  • Acceptor 参与决策人
  • Learner 不参与决策 观察者
算法陈述

阶段一
1. Proposer选择一个提案编号Mn,然后想Accept的某个超过半数子集成员发送标为Mn的Prepare请求
2. 如果一个Accept收到一个编号为Mn的Prepare请求,且编码Mn大于该Accept已经相应的所有Prepare请求编号,那么它就会将它已经批准过的最大编号的提案作为响应反馈给Proposere,同时该Accept会承诺不会再批准任何编号校园Mn的提案。
阶段二
1. 如果Proposer收到来自半数以上的Acceptor对于其发出编号Mn的Prepare请求的响应,那么它就会发生一个针对[Mn,Vn]提案的Accept请求给Accentor,Vn的值就是收到响应中编号最大的提案的值,如果相应中不包含任何提案,那么它就是任意值。
2. 如果Acceptor收到针对[Mn,Vn]提案的Accent请求,只要该Acceptor尚未对编号大于Mn的Prepare请求做出相应,它即可也通过这个提案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
分布式系统一致性协议是用于确保在分布式系统中的多个节点之间达成一致状态的协议。在分布式系统中,由于网络延迟、节点故障等原因,节点之间的数据可能会出现不一致的情况。一致性协议的目标是通过协调节点之间的操作,使得系统在面对各种故障和并发操作时能够保持一致性。 常见的分布式系统一致性协议包括: 1. 两阶段提交(Two-Phase Commit,2PC):2PC是一种基于中心协调者的协议,它通过两个阶段的消息交换来实现一致性。第一阶段是准备阶段,协调者向参与者发送准备请求,并等待参与者的响应。第二阶段是提交阶段,协调者根据参与者的响应决定是否提交或中止事务。2PC的缺点是存在阻塞和单点故障问题。 2. 三阶段提交(Three-Phase Commit,3PC):3PC是对2PC的改进,引入了超时机制来解决阻塞问题。它将2PC的准备阶段拆分为canCommit和preCommit两个阶段,并引入超时机制来处理参与者和协调者的故障。 3. Paxos:Paxos是一种基于消息传递的一致性协议,用于解决分布式系统中的一致性问题。Paxos通过选举一个提议者和多个接受者来达成一致,它具有高度的容错性和可扩展性。 4. Raft:Raft是一种相对于Paxos更易理解和实现的一致性协议。Raft将一致性问题分解为领导选举、日志复制和安全性三个子问题,并通过选举一个领导者来协调节点之间的操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值