分布式理论 | 青训营笔记

55 阅读4分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天

课程主要学习了分布式系统相关的知识:
1. 分布式系统
2. 系统模型
3. 理论基础
4. 分布式事务
5. 共识协议
6. 分布式实践
注:笔记图片来自课程截图,如有侵权,请联系删除

1.分布式系统

分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算、分布式存储、分布式数据库等。

优势:去中心化、低成本、弹性、资源共享、可靠性高。挑战:普遍的节点故障、不可靠的网络、异构的机器与硬件环境、安全。

常见分布式系统:

image.png

2.系统模型

故障模型

Byzantine failure:节点可以任意篡改发送给其他节点的数据。

Authentication detectable byzantine failure(ADB): Byzantine failure的特例;节点可以篡改数据,但不能伪造其他节点的数据。

Performance failure: 节点未在特定时间段内收到数据,即时间太早或太晚。

Omission failure:节点收到数据的时间无限晚,即收不到数据。

Crash failure:在omission failure的基础上,增加了节点停止响应的假设,也即持续性地omission failure。

Fail-stop failure: 在Crash failure的基础上增加了错误可检测的假设。

拜占庭将军问题

当有3m+1个将军,其中有m个叛徒的时候,可以增加m轮协商最终达成一致。

共识和一致性

一致性分为最终一致性、线性一致性。如果要保证线性一致性, 多个节点间势必需要进行协商,以寻求一致。这样增加了延迟,系统可用性便会受损。

时间和时间顺序

"happened before" 关系,记为"→"。 其满足如下三个条件:

  • 如果a和b是在相同节点上的两个事件,a在b之前发生,则定义:a→b
  • 如果事件a表示某个节点发送某条消息,b是另一个节点接收这条消息则有a→b
  • 如果有a→b且b→c,则有a→c

当且仅当a+b且bra时,我们称两个事件为并发的(concurrent)。

3.理论基础

包含CAP理论、ACID理论以及BASE理论。针对不同系统要求的性能不一样,因此存在这这些理论模型。

4.分布式事务

二阶段提交

二阶段提交(Two phase Commit) :为了使基于分布式系统架构下的所有节点在进行事务提交时保持一 致性而设计的一种演算法。

image.png

image.png

三阶段提交

三阶段提交将将两阶段提交中的Prepare阶段,拆成两部分:CanCommit和PreCommit机制。解决了单点故障和阻塞问题。

MVCC

悲观锁:操作数据时直接把数据锁住,直到操作完成后才会释放锁;上锁期间其他人不能修改数据。 乐观锁:不会上锁,只是在执行更新时判断别人是否修改数据,只有冲突时才放弃操作。 MVCC是一种并发控制的方法,维持个数据的多个版本使读写操作没有冲突。 所以既不会阻塞写,也不阻塞读。MVCC为每个修改保存-个版本,和事务的时间戳相关联。可以提高并发性能,解决脏读的问题。

5.共识协议

介绍了Quorum NWR模型、RAFT协议以及Paxos协议。RAFT协议改进了Paxos协议。

image.png

6.分布式实践

MapRduce

Mapper:将输入分解为多个Job来并行处理。彼此间几乎没有依赖关系。 Shuffler:将maper结果打乱,防止数据倾斜。 Reducer:对map阶段的结果进行全局汇总。

分布式KV

将海量结构化数据根据Key分成不同的Region,每个Region构建一个单机KV数据库,Region之间形成Raft Groups,做到强一致。

总结

学习了分布式理论知识:包括分布式系统、分布式理论、分布式事务、分布式共识。