这是我参与「第五届青训营 」伴学笔记创作活动的第 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,参与者根据自身情况回复预估值。