分布式理论 | 青训营笔记

123 阅读2分钟

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

一、课程内容

  • 理论基础
  • 分布式事务

二、详细知识点

1、CAP 理论

  • 一致性(Consistency)

一个写操作成功,后续的请求都必须读到这个新数据;如果操作失败,那么后续的读操作都不能读到这个数据。所有节点访问同一份最新的数据。

  • 可用性(Avaliablity)

对数据更新具有高可用性,请求可以及时处理

  • 分区容错性(Partition tolerance)

容忍网络分区的情况下,被分隔的节点仍然能够对外提供服务。

CA:放弃分区容错性,加强一致性和可用性(单机数据库)

AP:放弃(强)一致性,追求分区容错性和可用性(例:注重用户体验的系统)

CP:放弃可用性,追求一致性和分区容错性(例:金融、安全相关系统)

2、ACID 理论

  • 原子性(Atomicity)

事务内操作要么全部成功,要么全部失败回滚。

  • 一致性(Consistency)

事务执行前后状态是一致的(例:两人转账,存款总和在转账前后相等)

  • 隔离性(Isolation)

多个事务之间相互隔离。

  • 持久性(Durability)

事务完成后数据永久保存。

3、BASE 理论

  • 基本可用(Basically Avaliable)

分布式系统在出现故障时,允许损失部分可用性。

  • 软状态(Soft state)

允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性。

  • 最终一致性(Eventually consistent)

系统中的所有数据副本,在经过一段时间的同步后,最终能达到一个一致的状态。

4、二阶段提交(Two-Phase Commit)

第一阶段:投票

协调者向所有的参与者发送事务执行请求,等待参与者反馈。

参与者收到请求后执行事务但不提交,记录日志。

参与者将结果反馈给协调者,阻塞等待协调者的后续指令。

第二阶段:事务提交

所有参与者回复可以正常执行事务。

一个或多个参与者回复事务执行失败。

协调者等待超时。

5、三阶段提交

相比二阶段提交,多一个can_commit,参与者根据自身情况回复预估值。