这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天,本节课主要学习了分布式概述、系统模型、理论基础、分布式事务、共识协议以及分布式实践。
1 分布式概述
分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标,可以分为分布式计算、分布式存储、分布式数据库等。
优点:去中心化/低成本/弹性/资源共享/可靠性高
挑战:普遍的节点故障/不可靠的网络/异构的机器与硬件环境/安全
2 系统模型
2.1 故障模型
如磁盘故障、磁盘坏道坏块、服务器主板板卡故障、网络故障、网络分区、内存故障、线缆故障、内核崩溃、CPU故障、电源故障、软件故障
2.2 拜占庭将军问题
2.3 共识一致性
如果要保证“线性”的一致性,多个节点间势必进行协商,以寻求一致,这样增加了延迟,系统可用性便会受损
2.4 时间和事件顺序
并发定义/happened before/Lamport逻辑时钟
3 理论基础
3.1 CAP理论
- C:一致性,数据在多个副本间保持一致
- A:可用性,系统提供的服务必须一直处于可用给的状态,每次请求都能获取到非错的响应,但是不保证获取的数据为最新数据
- P:分区容错性,分布式系统在遇到任何网络分区故障时,仍然能够对外提供满足一致性和可用性的服务,除非整个网络都发生了故障
CAP理论往往用于数据库领域,同样可以适用于分布式存储方向
3.2 ACID理论
- 原子性A:原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚
- 一致性C:一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态
- 隔离性I:当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作干扰,多个并发事务之间要相互隔离
- 持久性D:一个事务一旦被提交,那么对数据库中的数据的改变就是永久性的
3.3 BASE
基本可用/软状态/最终一致性
4 分布式事务
4.1 二阶段提交
三个假设:
- 引入协调者和参与者,互相进行网络通信
- 所有节点都采用预写式日志,且日志被写入后即被保持在可靠的存储设备上
- 所有节点不会永久性损坏,即使损坏后仍然可以恢复
以及需要注意的问题和可能发生的情况。
4.2 三阶段提交
与两阶段提交相比解决了单点故障问题与阻塞问题
4.3 MVCC
悲观锁与乐观锁
5 共识协议
5.1 Quorum NWR模型
三要素:
- 在分布式存储系统中有多少备份
- 代表一次成功的更新操作要求至少有w份数据写入成功
- 代表一次成功的读数据操作至少有R份数据成功读取
5.2 RAFT协议
一种分布式一致性算法。
6 分布式实践
MapReduce/分布式KV
7 个人总结
本节课内容较多,课后应再看复习各种协议与事务