前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式事务_03_2PC框架raincat源码解析-事务提交过程

分布式事务_03_2PC框架raincat源码解析-事务提交过程

作者头像
shirayner
发布2022-03-10 16:47:50
2790
发布2022-03-10 16:47:50
举报
文章被收录于专栏:Java成神之路Java成神之路

一、前言

前面两节,我们已经将raincat的demo工程启动,并简单分析了下事务协调者与事务参与者的启动过程。

这一节,我们来看下raincat的事务提交过程。

二、事务提交过程概览

1.二阶段对应图

raincat是一个二阶段分布式事务处理框架,在事务的提交过程中,对应的二阶段如下:

  • 第一阶段(准备阶段)

记录事务信息,准备提交。

  • 第二阶段(提交阶段)

协调者发送提交通知,各参与者分别提交事务。

raincat二阶段对应图
raincat二阶段对应图

2.事务提交过程概览

整个事务的提交过程,如下:

(1)切面开始,拦截 @TxTransaction 注解 (2)协调者为发起者创建事务组信息(入Redis) (3)发起者开启本地事务,并执行业务方法,等待业务方法返回结果 (4)参与者另起线程B,并阻塞主线程A。 线程B中,开启本地事务,让协调者将参与者的事务加入到(2)中的事务组中,然后执行本地业务方法。 以下异步执行 (5)唤醒线程A,参与者业务方法执行完毕。(3)中得到返回结果。 同时,在线程B中去保存补偿日志。并阻塞线程B。 (6)发起者的业务方法执行完毕,去保存补偿日志(入库),并发起预提交请求。 (7)协调者收到请求后,通知发起者提交事务。协调者更新事务组状态为提交,并判断是否能提交。然后通知参与者提交事务,接着通知其他TM提交事务。 (8)发起者提交本地事务,通知协调者完成事务,并删除补偿日志。 (9)参与者提交本地事务,通知协调者完成事务。并删除补偿日志。 (10)定时补偿线程,删除掉每个服务已经提交的补偿日志。

在这里插入图片描述
在这里插入图片描述

三、事务提交过程时序图

下图主要是以事务发起者的角度分析整个事务提交流程

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-09-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、事务提交过程概览
    • 1.二阶段对应图
      • 2.事务提交过程概览
      • 三、事务提交过程时序图
      相关产品与服务
      云数据库 Redis
      腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档