分布式事务学习笔记

学习分布式事务文章:分布式事务上分布式事务下分布式系列文章

阅读笔记:

事务定义:事务是指在数据库在执行过程中的一个逻辑单位,由有限个操作序列构成。
事务拥有的四个特性(ACID):原子性(Atomicity),一致性(Consistency),隔离性(lsolation),持久性(Durability)
本地事务:单一的服务操作基于单一的数据库资源访问的事务,我们叫本地事务。
分布式事务的背景:在分布式应用环境中,越来越多的应用要求对多个数据库资源,多个服务的访问都能纳入到同一个事物中,分布式事务应运而生。
原子性: XA 协议使用2PC(两端提交),两端提交是为了保证分布式事务的原子性。
准备阶段:TM 向每个 RM 发送准备消息。如果 RM 的本地事务操作执行成功,则返回成功;如果 RM 的本地事务操作执行失败,则返回失败。
提交阶段:如果 TM 收到了所有 RM 回复的成功消息,则向每个 RM 发送提交消息;否则发送回滚消息;RM 根据 TM 的指令执行提交或者回滚本地事务操作,释放所有事务处理过程中使用的锁资源。
一致性:一致性有两层语义,一层是确保事务执行结束后,数据库从一个一致状态转变为另一个一致状态。另一层语义是事务执行过程中的中间状态不能被观察到。

XA模型流程

  1. 应用程序(AP,Application)向 TM 申请开始一个全局事务。
  2. 针对要操作的 RM,AP 会先向 TM 注册(TM 负责记录 AP 操作过哪些 RM,即分支事务),TM 通过 XA 接口函数通知相应 RM 开启分布式事务的子事务,接着 AP 就可以对该 RM 管理的资源进行操作。
  3. 当 AP 对所有 RM 操作完毕后,AP 根据执行情况通知 TM 提交或回滚该全局事务,TM 通过 XA 接口函数通知各 RM 完成操作。TM 会先要求各个 RM 做预提交,所有 RM 返回成功后,再要求各 RM 做正式提交,XA 协议要求,一旦 RM 预提交成功,则后续的正式提交也必须能成功;如果任意一个 RM 预提交失败,则 TM 通知各 RM 回滚。
  4. 所有 RM 提交或回滚完成后,全局事务结束。

TCC 模型

TCC(Try-Confirm-Cancel)分布式事务模型相对于 XA 等传统模型,其特征在于它不依赖资源管理器(RM)对分布式事务的支持,而是通过对业务逻辑的分解来实现分布式事务。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容