Skip to content

Developer Guide

liuyangming edited this page Sep 7, 2018 · 11 revisions

一、整体设计

1.1、模块设计


组件说明:

  1. TCC事务管理模块:实现JTA规范的TransactionManager,供Spring容器直接调用,负责Spring容器中声明式事务的commit、rollback、suspend、resume等管理操作;
  2. TCC事务分支协调者:实现RemoteCoordinator接口。由RPC自定义拦截器(客户端)调度,提供远程事务分支管理接入入口;
  3. 本地事务分支协调者:实现RemoteCoordinator接口。由TCC事务管理器调度,提供本地事务管理接入入口;
  4. 本地事务管理模块:负责管理本节点中的本地事务管理;
  5. 事务日志存取模块:负责事务日志的存储及读取;
  6. 事务恢复处理模块:负责未完成事务的数据恢复、状态判定并向事务管理模块提供事务完成方向建议;
  7. RPC模块:提供远程调用服务支持;ByteTCC通过其支持的自定义拦截器机制实现事务上下文的传播
1.2、执行原理介绍

二、全局事务管理

  1. 业务子系统发起业务请求时,Spring容器使用事务拦截器拦截该业务请求,在转发业务请求之前,开启全局事务,并在转发业务请求之后完成(提交/回滚)全局事务。
  2. 全局事务回滚时,会回调当前事务中业务逻辑的补偿逻辑(前提是该业务逻辑的操作已经生效,即DB事务已经提交)。

三、本地事务管理:Try业务操作

  1. 业务子系统发起业务请求时,Spring容器使用事务拦截器拦截该业务请求,在转发业务请求之前,开启本地事务,并在转发业务请求之后完成(提交/回滚)本地事务。

四、本地事务管理:Confirm/Cancel操作

  1. 事务管理器发起补偿请求时,Spring容器使用事务拦截器拦截该补偿请求,在转发补偿请求之前,开启本地事务,并在转发补偿请求之后完成(提交/回滚)本地事务。

五、扩展点

自定义的扩展类均需要注册到org.bytesoft.bytetcc.TransactionBeanFactoryImpl中(具体可参考bytetcc.xml中默认实现类的配置)。

5.1. CompensableLogger扩展

org.bytesoft.compensable.logging.CompensableLogger接口是ByteTCC的事务日志管理接口,ByteTCC事务管理器通过该接口记录、读取活动事务的日志信息,该接口的默认实现为org.bytesoft.bytetcc.logging.SampleCompensableLogger。用户也可以根据需求自定义该接口的实现,扩展事务日志管理功能。

5.2. TransactionInterceptor扩展

org.bytesoft.transaction.supports.rpc.TransactionInterceptor接口是ByteTCC用于在远程调用时拦截RPC请求/响应的处理接口,该接口用于为service的远程调用传播事务上下文等用途,默认实现为org.bytesoft.bytetcc.supports.rpc.CompensableInterceptorImpl。用户若需要新增RPC框架的支持时,需要自定义本接口。

注意:不同的RPC框架,根据其特性不同,需要定制的内容可能会相差较大。

If you've found byteTCC useful, and would like to support future development of byteTCC, please consider donating. Any amount is appreciated.

WeiXin

resources/donation/liuyangming@weixin.png

Alipay

resources/donation/liuyangming@alipay.png

Clone this wiki locally