-
-
Notifications
You must be signed in to change notification settings - Fork 911
Developer Guide
liuyangming edited this page Apr 2, 2019
·
11 revisions
组件说明:
- TCC服务:由实现业务接口的三个实现类(业务实现类,确认实现类,取消实现类)一起构成一个TCC型服务;
- 业务代理逻辑:TCC服务的业务实现类,在spring容器中注册为bean之后,由Spring容器创建的AOP代理对象。该类与业务实现类实现相同的业务接口,spring容器基于该代理实现请求拦截以及事务控制;
- CompensableManager(TCC全局事务管理器):实现JTA规范的TransactionManager,供Spring容器直接调用,负责Spring容器中声明式事务的commit、rollback、suspend、resume等管理操作;
- CompensableTransaction:负责全局事务相关的处理逻辑,实现TransactionListener接口,在ByteJTA本地事务commit/rollback本地事务时会接收到相应的通知及状态;
- CompensableCoordinator(TCC分支事务协调者):实现TransactionParticipant接口。由RPC自定义拦截器(客户端)调度,提供远程事务分支管理接入入口;
- ByteJTA:实现TransactionManager & TransactionParticipant接口。由ByteTCC调度,提供本地事务管理接入入口;
- CompensableLogger(事务日志管理模块):负责事务日志的存储及读取;
- TransactionRecovery(事务恢复处理模块):负责未完成事务的数据恢复、状态判定并向事务管理模块提供事务完成方向建议;
- 业务子系统发起业务请求时,Spring容器使用事务拦截器拦截该业务请求,在转发业务请求之前,开启全局事务,并在转发业务请求之后完成(提交/回滚)全局事务。
- 全局事务回滚时,会回调当前事务中业务逻辑的补偿逻辑(前提是该业务逻辑的操作已经生效,即DB事务已经提交)。
- 业务子系统发起业务请求时,Spring容器使用事务拦截器拦截该业务请求,在转发业务请求之前,开启本地事务,并在转发业务请求之后完成(提交/回滚)本地事务。
- 事务管理器根据全局事务完成方向的决策判断来发起Confirm/Cancel请求;
- 当全局事务决定提交时,事务管理器触发确认操作,Spring容器使用事务拦截器拦截该确认请求,在转发确认操作之前,开启本地事务,并在确认操作完成之后提交该本地事务;
- 当全局事务决定回滚时,事务管理器触发取消操作,Spring容器使用事务拦截器拦截该取消请求,在转发取消操作之前,开启本地事务,并在取消操作完成之后提交该本地事务;
自定义的扩展类均需要注册到org.bytesoft.bytetcc.TransactionBeanFactoryImpl中(具体可参考bytetcc.xml中默认实现类的配置)。
org.bytesoft.compensable.logging.CompensableLogger接口是ByteTCC的事务日志管理接口,ByteTCC事务管理器通过该接口记录、读取活动事务的日志信息,该接口的默认实现为org.bytesoft.bytetcc.logging.SampleCompensableLogger。用户也可以根据需求自定义该接口的实现,扩展事务日志管理功能。
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
Alipay