分布式理论 | 青训营笔记
这是我参与「第五届青训营 」笔记创作活动的第10天
什么是分布式
分布式系统是利用跨多个独立计算节点的计算资源来实现共同的目标的计算机程序的集合。
常见的分布式系统
-
分布式存储
-
分布式数据库
-
分布式计算
系统模型
- 故障模型
- 共识和一致性
- 时间和事件顺序
理论基础
-
CAP理论 一致性、可用性、分区容错性,一般运用于数据库领域
而事实上的CAP几乎难以三者同时完美满足
例如下图,上两图选择优先满足可用性和一致性。如果要在网络发生分区的情况下,必须在可用性和一致性之间做出选择,故障转移是一个工程解
-
ACID理论 事务中的ACID理论是数据库满足可用性和一致性的前提下提出的理论
-
BASE理论 BASE理论则是可用性和一致性的权衡
-
可以发现上述后两者是在CAP实际工程落地中的取舍工程理论
分布式事务
对于分布式事务也是一个很重要的问题
-
二阶段提交
是为了使基于分布式系统架构下的所有节点在进行事务提交时保持一致性而设计的一种演算法。
当然,其也会出现问题
对于二阶段提交,需要考虑一些问题:
- 性能问题:二阶段需要和多个节点进行通信,对于资源和性能而言是一个不可忽视的消耗
- 协调者存在单点故障的问题:节点都是通过协调者进行事务处理,当协调者出现故障时,需要重新选举协调者,否则处于中间状态的事务就无法完成
- 网络分区可能带来数据不一致的问题
-
三阶段提交
-
MVCC
乐观锁和悲观锁 后者操作数据时完全上锁,禁止上锁期间其他的任何操作。 前者不会上锁,只是在执行更新时判断别人是否修改数据,只有在冲突时才取消操作,对于性能的影响就没后者那么大
TSO是软件实现的中心授时方式。
共识协议
-
Quorum NWR协议
是一种简化版的一致性模型
-
RAFT协议 保证了出现部分节点故障,也不会影响各节点
总结思维导图
引用参考
分布式理论 - 现代架构基石.pptx - 飞书云文档 (feishu.cn)