• 沒有找到結果。

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,定义全局 事务和分支事务。