这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天
一、分布式概述
优势:
- 去中心化
- 低成本
- 弹性:可扩容、可缩容
- 资源共享
- 可靠性高
挑战:
- 普遍的节点故障
- 不可靠的网络
- 异构的机器与硬件环境
- 安全
常见的分布式系统
二、系统模型
1、故障模型
故障的四个维度:正确性、时间、状态、原因
大多数分布式系统不解决拜占庭故障,通过容错、加密等方式防止消息被篡改。
2、拜占庭将军问题
3、共识和一致性
最终一致性:
线性一致性:也叫强一致性。
4、时间和事件顺序
三、理论基础
1、CAP理论
CAP理论:我们无法同时满足C、A、P。
2、ACID理论
【补充】
- MySql不一定保证D,Oracle不一定保证I,但都会保证AC。
- 案例
假设A和B账户均有2w元,现在一个操作是A给B转1w块。开启一个事务,这个事务中包含两个操作:A-1w元,B+1w元。
原子性指的是:这两个操作必须同时成功或同时失败。
一致性:指账户的总和保持一致(都是4w元)
ACID理论的一致性和CAP的一致性不同:
ACID的一致性:事务的一致性
CAP一致性:线性一致性,节点间的同一份数据在任何时刻都是一个状态
3、BASE理论
四、分布式事务
1、两阶段提交
两阶段提交分为投票和提交两个阶段。
投票阶段,协调者向参与者发送事务请求,参与者进行操作并记录进日志,但不提交,并将操作结果通知协调者。
提交阶段,协调者收到参与者的操作结果后,如果都是成功的,就通知参与者提交。如果有不成功,就通知参与者回滚。
网络分区带来的数据不一致:需要再次进行一次回滚,所有的事务要在一个锁的状态下进行,有锁就会产生一定的阻塞。
1、可靠:单机时代高可用硬件(IOE),分布式时代,会建立一层高可用的文件系统等。
2、会回滚整个事务,会浪费资源
2、三阶段提交
参考资料:www.zhangshilong.cn/work/290683…
3、MVCC
悲观锁:
乐观锁: