赞
踩
CAP定理是分布式系统领域的一个经典定理。分布式系统在设计过程中,以CAP定理作为考虑因素,对于系统的一致性及可用性做出适当权衡。在此前提下,BASE理论应运而生,用于满足分布式系统对于高可用性及扩展性的要求。于此同时,分布式系统的一致性协议也在不断发展,衍生了例如两阶段提交算法(2PC)、三阶段提交协议(3PC)以及Paxos算法。
本文将对以上内容做出介绍。
本文目录
区块链可以理解为一个分布式账本,记录了所有交易数据。共识机制的主要作用就是确保节点上所有节点上账本的数据保持一致,避免因为恶意分区导致的不一致。
计算机系统向网络化和微型化的发展日趋明显,传统的集中式处理模式越来越不能适应人们的需求。很多企业开始放弃原来的大型主机,改用小型机和普通PC服务器来搭建分布式计算机系统。
分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。
一个标准的分布式系统在没有任何业务逻辑约束的情况下,有如下特征:
ACID理论此处不再赘述,建议查询了解。
分布式系统设计过程中需要考虑CAP理论
CAP理论中指出在一个分布式系统中,不可能同时满足三个条件:
由于分布式系统中分区容忍性必须满足,所以系统需要在一致性和可用性之间权衡。常见策略有CP和AP
BASE理论用于满足现代分布式系统对高可用性和可扩展性的需求:
通过基本可用、软状态和最终一致性原则,为分布式系统提供了一种在高可用性和一致性之间进行权衡的方法。与传统的ACID模型相比,BASE理论更适合于现代大规模分布式系统,特别是那些需要处理高并发和海量数据的场景。
BASE理论是分布式设计的一种指导原则,尤其适用于高可用性需求比较高的系统。BASE理论与传统的ACID(原子性、一致性、隔离性、持久性)特性相对立,强调通过牺牲强一致性来获得更高的可用性和扩展性。
现代型关系数据库中,大多都会采用同步和异步的方式来实现主备数据复制技术。
但是不管是采用多次重试还是人为数据订正,关系型数据库还是能保证最终数据达到一致。
总的来说,BASE理论面向的是大型高可用扩展的分布式系统,和传统ACID的特性是相反的,完全不同于ACID的强一致性模型,而是提出通过牺牲强一致性来获得可用性,并允许数据在一段时间内是不一致的,但最终达到一致状态。但同时,实际的分布式场景中,不同业务单元和组件对数据一致性的要求是不同的,因此在具体的分布式架构设计过程中,ACID特性与BASE理论往往又会结合在一起使用。
由于分布式系统在设计过程中往往会在系统的可用性和数据一致性间进行反复权衡,于是产生了一系列的一致性协议。其中最出名的有二阶段提交协议、三阶段提交协议和Paxos算法
- 分布式系统中,每一个节点虽然都能够明确知道自己在进行事务进程中的结果,但却无法直接获取到其他分布式节点的操作结果。
- 当一个事务操作需要跨越多个分布式节点的时候,为了保证事务处理的ACID特性,就需要引入一个成为“协调者”的组件来统一调度所有分布式节点的执行逻辑,这些被调度的分布式节点则称为“参与者”。
- 协调者负责调度参与者的行为,并最终决定这些参与者是否要把事务真正提交。
两节点算法能够使基于分布式系统架构下的所有节点在进行事务处理过程中能够保证原子性和一致性而设计的一种算法。
2PC(Two-Phase Commit)是一种简单且使用广泛的分布式事务协议,分为两个阶段:准备阶段和提交阶段
阶段1:准备阶段
1. 协调者向所有参与者发送“准备提交”请求
2. 每个参与者接收到请求后,执行本地事务,但不提交,记录日志并锁定资源,然后回复“准备就绪”或失败
阶段2:提交阶段
1. 协调者收到所有参与者的“准备就绪”响应后,向所有参与者发送“提交”命令。如果有任意一个参与者返回失败,则发送“回滚”命令。
2. 参与者接收到“提交”命令后,提交本地事务;接收到“回滚”命令后,回滚本地事务。
2PC的优缺点:
- 优点:简单易实现,能够确保事务一致性。
- 缺点:存在阻塞问题。如果协调者在提交阶段失败,参与者将一直等待,导致资源被锁定。此外,2PC不能很好的处理网络分区问题。任何一个节点的失败都会导致整个事务的失败。
3PC是对2PC的改进,增加了一个阶段以减少阻塞和提升容错能力。分为三个阶段:准备阶段、预提交阶段和提交阶段。
阶段1:准备阶段:
1. 协调者向所有参与者发送“可以提交”请求。
2. 参与者接收到请求后,检查是否可以提交,并返回“准备就绪”或“失败”
阶段2:预提交阶段:
1. 如果所有参与者都返回“准备就绪”,协调者发送“预提交”请求。如果有任何一个参与者返回“失败”,则发送“回滚”请求
2. 参与者接收到“提交”命令后,提交本地事务;接收到“回滚”命令后,回滚本地事务。
阶段3:提交阶段:
1. 协调者收到所有参与者的“已预提交”响应后,发送“提交”请求。如果有任何一个参与者返回“失败”,则发送“回滚”请求。
2. 参与者接收到“提交”命令后,提交本地事务;接收到“回滚”命令后,回滚本地事务。
3PC的优缺点:
- 优点:通过增加预提交阶段,减少了阻塞问题,提高了容错性和可恢复性。即使在协调失败的情况下,参与者也能根据日志决定继续提交还是回滚
- 缺点:协议更加复杂,增加了通信开销。虽然提高了容错性,但在网络分区上仍存在局限性。
2PC和3PC都是用于分布式系统中实现事务一致性的协议。2PC结构简单,但存在阻塞问题和网络分区问题,3PC通过引入预提交阶段,减少了阻塞,提高了容错性,但增加了协议的复杂性和通信开销。根据具体的应用场景和系统需求,可以选择合适的协议来实现分布式事务的一致性。
Paxos算法的核心在于多数派原则,即只要大多数(超过半数)的Accepters统一某个提案,该提案就可以被确定下来。确保大多数派的参与是保证算法正确性和容错性的关键
Paxos是一种分布式共识算法,用于存在故障的分布式系统中实现一致性。主要目标是确保多节点在不可信的网络环境中能够就某一值达成一致,即使有部分节点发生故障。Paxos算法的基本概念和工作原理如下:
Paxos算法定义了三个主要角色:
Paxos算法可以分为两个主要阶段:
阶段1:Prepare阶段
阶段2:Accept阶段:
Paxos算法的特点:
1. 容错性:Paxos算法能够容忍少量接受者节点的故障,只要多数接受者节点正常工作,系统就能达成共识。
2. 安全性:Paxos算法保证只有一个值会被最终决定,即不会出现分叉或矛盾的决策。
3. 活性:在理想网络条件下(无网络分区、无无限延迟),Paxos算法能够最终达成共识,但在实际应用中可能需要优化以提高活性。
二阶段提交协议解决了分布式事务的原子性问题,多个参与者要么都执行成功,要么都执行失败
三阶段提交协议解决了诸如同步阻塞、无限期等待和“脑裂”等问题
Paxos算法引入了“过半”的概念,即少数服从多数的原则,同时,Paxos算法支持分布式节点角色之间的轮换,极大地避免了分布式单点的出现,因此Paxos既解决了无限期等待问题,也解决了“脑裂”问题,是目前来说最优秀的分布式一致性协议之一。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。