分布式理论——现代架构基石| 青训营笔记

52 阅读2分钟

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

一、分布式概述

image.png

优势:

  • 去中心化
  • 低成本
  • 弹性:可扩容、可缩容
  • 资源共享
  • 可靠性高

挑战:

  • 普遍的节点故障
  • 不可靠的网络
  • 异构的机器与硬件环境
  • 安全

常见的分布式系统

image.png

二、系统模型

1、故障模型

image.png

故障的四个维度:正确性、时间、状态、原因

大多数分布式系统不解决拜占庭故障,通过容错、加密等方式防止消息被篡改

image.png

2、拜占庭将军问题

image.png

image.png

3、共识和一致性

image.png

最终一致性:

线性一致性:也叫强一致性。

4、时间和事件顺序

image.png

image.png

三、理论基础

1、CAP理论

image.png

CAP理论:我们无法同时满足C、A、P。

image.png

2、ACID理论

image.png

【补充】

  • MySql不一定保证D,Oracle不一定保证I,但都会保证AC。
  • 案例

假设A和B账户均有2w元,现在一个操作是A给B转1w块。开启一个事务,这个事务中包含两个操作:A-1w元,B+1w元。

原子性指的是:这两个操作必须同时成功或同时失败。

一致性:指账户的总和保持一致(都是4w元)

ACID理论的一致性和CAP的一致性不同:

ACID的一致性:事务的一致性

CAP一致性:线性一致性,节点间的同一份数据在任何时刻都是一个状态

3、BASE理论

image.png

四、分布式事务

1、两阶段提交

image.png

image.png

两阶段提交分为投票提交两个阶段。

投票阶段,协调者向参与者发送事务请求,参与者进行操作并记录进日志,但不提交,并将操作结果通知协调者。

提交阶段,协调者收到参与者的操作结果后,如果都是成功的,就通知参与者提交。如果有不成功,就通知参与者回滚。

image.png

image.png

网络分区带来的数据不一致:需要再次进行一次回滚,所有的事务要在一个锁的状态下进行,有锁就会产生一定的阻塞。

image.png

1、可靠:单机时代高可用硬件(IOE),分布式时代,会建立一层高可用的文件系统等。

2、会回滚整个事务,会浪费资源

2、三阶段提交

image.png

参考资料:www.zhangshilong.cn/work/290683…

3、MVCC

悲观锁:

image.png

乐观锁:

image.png

image.png

五、共识协议

1、Quorum NWR模型

image.png

2、RAFT协议

image.png

image.png

image.png

image.png

3、Paxos协议

image.png

六、分布式实践

1、MapReduce

image.png

2、分布式KV

image.png

思考题

image.png