1.7 附录
1.7.5 本地开发工具说明
本地开发工具包含了本地轻量化微服务引擎,用于本地开发的轻量服务中心、配置中 心,并提供简单的界面。
使用说明请参考README文件。
表1-19 本地轻量化微服务引擎版本说明
版本 发行时间 获取路径
1.0.10 2021.09.14 Local-CSE-1.0.10.zip
说明1.0.10版本本地轻量化微服务
引擎仅作为本地开发调测,
请勿用于商业使用。
2 分布式事务管理开发指南
概述
使用非侵入模式接入DTM 使用TCC模式接入DTM MQ消息接入DTM事务 SQL参考
2.1 概述
2.1.1 开发简介
本文主要描述如何使用分布式事务管理DTM(Distributed Transaction
Management)来保证分布式场景下的数据一致性,结合样例讲解如何通过非侵入模 式和TCC模式将代码接入DTM,同时也说明了MQ消息如何接入DTM事务。其中样例 包括:
● 非微服务框架样例(未使用微服务框架)。
● Spring Cloud框架样例。
● Spring Cloud Huawei框架样例。
● ServiceComb框架样例。
● Dubbo框架样例。
● Dubbo ServiceComb框架样例。
本文假设您已经具备如下开发能力:
● 熟悉Java语言,并有Java程序开发经验。
● 熟悉Maven。
● 了解分布式事务相关知识。
● 熟悉常用SQL语句。
2.1.2 常用概念
事务关系
分布式事务(Distributed Transaction),是指涉及两个甚至更多服务节点的事务,例 如一个银行A向B转账的分布式事务就包括:银行A的转出操作和银行B的转入操作,分 布式事务需要保证所有操作要么全部成功,要么全部失败。在DTM中,分布式事务也 称之为全局事务(Global Transaction),而一个全局事务,是由多个分支事务
(Branch Transaction)所构成。通常,一个分支事务,对应于一个数据库本地事务。
彼此间关系如图2-1所示。
图2-1 事务关系
事务角色
DTM提供了定义业务场景中的事务发起者与事务参与者的方法。
● 事务发起者:使用了发起全局事务的入口方法。入口方法的生命周期,即是事务 发起者的生命周期。
● 事务参与者:被事务发起者所调用而被动参与到全局事务中的方法。被调用方法 的生命周期,即是事务参与者的生命周期。
分布式事务模式
DTM支持非侵入事务和TCC事务。
● 非侵入事务,基于应用层实现的一种对业务逻辑无侵入的事务模型。
● TCC(Try-Confirm-Cancel)事务,又称补偿事务,其核心思想是针对每个操作都 要注册一个与其对应的确认和补偿(撤销操作)。它分为3个操作:
a. Try阶段:主要是对业务系统做检测及资源预留。
b. Confirm阶段:确认执行业务操作。
c. Cancel阶段:取消执行业务操作。
须知
confirm回调方法和cancel回调方法需要保证幂等性。
2.1.3 开发流程
开发流程如下所示:
1. 版本获取及引入依赖
通过maven引入需要的依赖,是使用DTM的基础。
详细内容请参考:
– 非微服务框架:版本获取及引入依赖。
– Spring Cloud框架:版本获取及引入依赖。
– Spring Cloud Huawei框架:版本获取及引入依赖。
– ServiceComb框架:版本获取及引入依赖。
– Dubbo 框架:版本获取及引入依赖。
– Dubbo ServiceComb框架:版本获取及引入依赖。
2. 数据源配置
非侵入模式下需要用DTM数据源来封装业务数据源,从而实现对于数据的代理,
跟踪数据的信息。
TCC模式下可以不用配置。
详细内容请参考:
– 非微服务框架:数据源配置。
– Spring Cloud:数据源配置。
– Spring Cloud Huawei框架:数据源配置。
– ServiceComb框架:数据源配置。
– Dubbo 框架:数据源配置。
– Dubbo ServiceComb框架:数据源配置。
3. 添加客户端配置文件
通过添加客户端配置文件,接入DTM引擎。
其中DTM引擎配置信息从“应用管理与运维平台”中“分布式事务管理 DTM >
引擎实例”界面“服务发现与配置”模块得到。
详细内容请参考:
– 非微服务框架:添加客户端配置文件。
– Spring Cloud:添加客户端配置文件。
– Spring Cloud Huawei框架:添加客户端配置文件。
– ServiceComb框架:添加客户端配置文件。
– Dubbo 框架:添加客户端配置文件。
– Dubbo ServiceComb框架:添加客户端配置文件。
4. 业务库中创建事务表
记录分布式事务信息,方便DTM进行事务的回滚操作。
详细内容请参考:
– 非微服务框架:业务库中创建事务表。
– Spring Cloud:业务库中创建事务表。
– Spring Cloud Huawei框架:业务库中创建事务表。
– ServiceComb框架:业务库中创建事务表。
– Dubbo 框架:业务库中创建事务表。
– Dubbo ServiceComb框架:业务库中创建事务表。
5. 使用注解定义事务发起者和参与者
非侵入模式及TCC模式通过注解的方法实现DTM的接入,其中非侵入模式实现了 一种对业务逻辑无侵入的事务模型,TCC模式实现了每个操作都有对应的确认和补 偿的事务模型。
详细内容请参考:
– 非微服务框架:非侵入,定义全局事务发起者;TCC,定义全局事务和分支 事务。
– Spring Cloud:非侵入,定义全局事务发起者;TCC,定义全局事务和分支事 务。
– Spring Cloud Huawei框架:非侵入,定义全局事务发起者;TCC,定义全局 事务和分支事务。
– ServiceComb框架:非侵入,定义全局事务发起者;TCC,定义全局事务和分 支事务。
– Dubbo 框架:非侵入,定义全局事务发起者;TCC,定义全局事务和分支事 务。
– Dubbo ServiceComb框架:非侵入,定义全局事务发起者;TCC,定义全局 事务和分支事务。