这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天
本篇笔记旨在复习直播课时的分布式理论。
一、上课重点内容
本节课,我学到了许多关于分布式的知识点,其中包括:
- 什么是分布式
- 分布式的问题
- 理论基础,包括CAP理论、ACID理论、BASE理论
- 分布式事务
- 共识协议
二、详细知识点介绍
1、什么是分布式
分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算、分布式存储、分布式数据库等。
在一般的大数据管理中,数据结构复杂、数据量大,使用分布式管理数据,可以使数据均匀分布到多个节点上,执行查询或处理任务时,各个节点只查询自身数据,实现并行处理,提高执行效率和可靠性,并实现了资源共享。此外,分布式数据管理有一次写入多次读取的特性。
然而,分布式也不是没有缺点的,下一节整理了分布式系统遇到的问题。
2、分布式的问题
分布式是由多个节点的计算资源来实现共同的目标,如何统一这些节点、节点之间的通信成为了问题。分布式系统存在许多故障模型,包括以下几种:
- 节点可以任意篡改发送给其他节点的数据
- 节点可以篡改数据,但不能伪造其他节点的数据
- 节点未在特定时间段内收到数据,即时间太早或太晚
- 节点收到数据的时间无限晚,即收不到数据
- 在上条的基础上,增加了节点停止响应的预设。
- 在上条的基础上增加了错误可检测的假设。
分布式的问题可以形象地表达为拜占庭将军问题:两支军队的将军只能派信使穿越敌方领土互相通信,以此约定进攻时间。该问题希望求解如何在两名将军派出的任何信使都可能被俘虏的情况下,就进攻时间达成共识。然而,结论是两将军永远无法达成共识。为了解决这个问题,需要引入4个将军,假设其中只有一个“叛徒”(即出现拜占庭故障),并将其中一个将军作为消息分发中枢,才能保证最终决策符合大多数。进而能够证明,当有3m+1个将军,其中m个是“叛徒”时,可以增加m轮协商,最终达成一致。
3、理论基础
1、CAP理论
CAP理论,其中C是Consistency(一致性),A是Availability(可用性),P是TolerAnce of network Partition(分区容忍性)。CAP理论就是一个分布式系统不可能满足一致性,可用性和分区容错性这三个需求,最多只能同时满足两个。因此,分布式系统出现了CA、AP、CP三种。
2、ACID理论
数据库事务拥有四个特性ACID,分别是Atomicity(原子性),Consistency(一致性),Isolation(隔离性),Durability(持久性)。ACID的具体意义如下:
原子性:事务包含的所有操作要么全部成功,要么全部失败回滚。
一致性:事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说事务执行之前和执行之后都必须处于一致性状态。
隔离性:当多个用户并发访问数据库,数据库为每个用户开启的事务,不能被其他事务操作所干扰,多个并发事务之间相互隔离。
持久性:一个事务一旦被提交了,对数据库中的数据的改变就是永久性的,即使在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
ACID是典型的强一致性要求,由于这样的强一致性,无法保证分布式系统的效率。
3、BASE理论
Base理论是对CAP中一致性和可用性权衡的结果,是基于CAP理论逐渐演化而来。BASE理论中的BA指的是Basically Available(基本可用性),S指的是Soft state(软状态),E指的是Eventually consistent(最终一致性)。BASE的具体意义如下:
基本可用性:系统出现了不可预知的故障,但还是能用,只是损失部分的可用性。
软状态:允许系统的数据存在中间状态,该状态不影响系统的整体可用性。
最终一致性:系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。
BASE理论是现在众多分布式系统设计的理论基础。
4、分布式事务
二阶段提交协议是很常见的解决分布式事务的方式,是为了解决所有节点在进行事务提交时保持一致性而设计的一种算法。它可以保证分布式事务中,要么所有参与的进程都提交事务成功,要么都取消事务,这样做可以在分布式环境中保持ACID中A(原子性)。
该算法分为两个阶段
投票阶段
在请求阶段,协调者将通知事务参与者准备提交或取消事务,然后进入表决过程
在表决过程中,参与者将告知协调者自己的决策:同意(事务参与者本地作业执行成功)或取消(本地作业执行故障)
提交阶段
协调者将基于第一个阶段的投票结果进行决策:提交或取消。当且仅当所有的参与者同意提交事务协调者才通知所有的参与者提交事务,否则协调者将通知所有的参与者取消事务。
其中,参与者就是实际处理事务的机器,协调者就是其中一台单独的处理分布式事务的机器。
5、共识协议
共识协议有Quorum NWR模型、RAFT协议和Paxos协议。
1、Quorum NWR模型
Quorum NWR三要素包括:
N:在分布式存储系统中,有多少份备份数据。
W:代表一次成功的更新操作要求至少有w份数据写入成功。
R:代表一次成功的读取数据操作至少有R份数据成功读取。
为了保证强一致性,需要保证W + R > N
2、RAFT协议
Raft协议是一种分布式一致性算法(共识算法),即使出现部分节点故障,网络延时等情况,也不影响各节点,进而提高系统的整体可用性。Raft是使用较为广泛的分布式协议。一定意义上讲,RAFT也使用了Quorum机制。
3、Paxos协议
Paxos算法与RAFT算法区别:
1.Multi-Paxos可以并发修改日志,而Raft写日志操作必须是连续的。
2.Multi-PaxoS可以随机选主,不必最新最全的节点当选Leader。
Paxos优势:写入并发性能高,所有节点都能写入。
Paxos劣势:没有一个节点有完整的最新的数据,恢复流程复杂,需要同步历史记录。