这是我参加「第五届青训营 」伴学笔记创作活动的第 8 天。今天课程主要学习分布式理论。
重点内容
- 分布式概述与理论基础
- 分布式事务
- 共识协议
主要知识点
一、分布式概述与理论基础
1、分布式概述
分布式系统是计算机程序的集合,这些程序利用多个独立计算节点的计算资源来实现共同的目标。
优点:
- 去中心化
- 低成本
- 有弹性
- 资源可共享
- 可靠性高
面临的挑战:
- 普遍的节点故障
- 不可靠的网络
- 异构的机器与硬件环境
- 安全
2、理论基础
CAP理论
CAP理论往往应用于数据库领域,其内涵为
- C(Consistence):一致性,即多个副本之间能够保持一致
- A(Availability):可用性,即系统提供的服务必须一直处于可用状态
- P(Network partitioning):分区容错性,即分布式系统在遇到任何网络分区故障时,仍能对外满足一致性与可用性的服务
ACID理论
ACID理论基于数据库事务的概念,事务即数据库管理系统执行过程中的一个逻辑单元,ACID理论指出了事务需要满足的四个特性:
- 原子性(A):事务包含的操作要么全部成功,要么全部失败回滚
- 一致性(C):一个事务执行前与执行后必须处于一致性状态
- 隔离性(I):一个事务不能为其他并发事务所干扰
- 持久性(D):事务提交后,事务对数据库的改变时永久的
BASE理论
Base理论是对CAP中一致性与可用性权衡的结果,其核心思想:
- 基本可用:假设系统出现不可预知的故障,但系统依然保证一定程度上的可用性
- 软状态:允许数据存在中间状态,并认为该状态不干扰整体系统的可用性
- 最终一致性:系统能够保证再没有其他新的操作的情况下,数据最终一定能够达到一致的状态
二、分布式事务
1、二阶段提交
概念
为了使基于分布式系统架构下的所有节点在进行事务提交时保持一致性而设计的一种演算法。
具体流程
所谓二阶段,即请求(prepare)与提交(commit)两个阶段
- 请求阶段
协调者通知每个参与者准备提交; 参与者在本地执行事务:
执行成功后,并不提交,告知协调者自己本地已经执行成功; 执行失败后,告知协调者本地作业执行故障
- 提交阶段
协调者根据第一阶段收集到的参与者的返回信息,决定是否提交:
如果全部的参与者都反馈成功,那么协调者通知所有参与者提交事务 如果存在参与者反馈失败,则协调者通知所有参与者取消事务
存在问题
- 性能较差
- 协调者单点故障问题
- 网络分区带来的数据不一致
2、三阶段提交
概念
三阶段提交是在二阶段提交的基础上,讲请求阶段拆分为CanCommit和PreCommit两部分,由此解决了单点故障问题与阻塞问题
具体流程
- canCommit阶段
协调者首先询问所有的参与者的状态,当前是否可以执行业务;如果可以\不可以执行,就直接返回可以/不可以。
- preCommit阶段
协调者根据参与者canCommit阶段的响应来决定是否可以继续事务的preCommit操作。preCommit阶段和二阶段提交里面的请求阶段一致
协调者通知每个参与者准备提交; 参与者在本地执行事务:
执行成功后,并不提交,告知协调者自己本地已经执行成功; 执行失败后,告知协调者本地作业执行故障
- doCommit阶段
协调者根据参与者preCommit阶段的响应来决定是否可以继续事务的doCommit操作。 发送doCommit后,若接收到了所有参与者的haveCommitted响应,则执行成功;若仅接收到了部分haveCommitted响应,则事务执行中断。
存在问题
- 二阶段提交的性能问题依然存在
- 网络分区带来的一致性问题
三、共识协议
1、Quorum NWR模型
Quorum NWR模型包含以下三个要素:
- N:分布式存储系统中有多少份备份数据
- W:一次成功的更新操作要求至少有w份数据写入成功
- R:代表一次成功的读操作要求至少有R份数据成功读取
为了保证强一致性,要求W+R>N
2、RAFT协议
RAFT协议是一种分布式一致性算法,一定程度上应用了Quorum机制。作为一个较为完备且应用广泛的分布式协议,RAFT的具体流程较为复杂,可以去文末参考资料进一步研究
3、Paxos协议
Paxos协议与RAFT协议类似,都是一种分布式协议,但是Paxos与RAFT有以下两个区别
- Multi-Paxos可以并发修改日志,RAFT则只能连续写日志
- Multi-Paxos可以随机选择leader
总结
本次课程内容较为抽象,主要介绍了分布式理论的基本概念。本次课程中涉及到较多理论知识,需要在课后查找资料继续学习。