springcloud分布式事务_SpringCloud 整合 TX-LCN分布式事务框架

微服务兴起,分布式事务也成为亟需解决的难题,业界解决方案很多,今天介绍一个我目前觉得最好用的TX-LCN。

官网地址:http://www.txlcn.org/zh-cn/

一、TX-LCN介绍

fe2e21096eb64237778d333ae8c1f8ff.png

f2120bb0ac77c4a23c177d712112791b.png

770b84c80fef6c123be0a8f4b376c078.png

TX-LCN由两大模块组成, TxClient、TxManager,TxClient就是你自己的服务,TxManager作为分布式事务的服务端。事务发起方或者参与反都由TxClient端来控制。

ServerA调用ServerB,同属于一个共同业务逻辑,比如买东西的业务流程:下单(订单服务)-扣除钱包金额(钱包服务)-减库存(库存服务),涉及到3个服务的调用,这个买东西的操作,下单-扣钱-减库存三个操作必须保证原子性。这里涉及到3个服务怎么保证原子性呢?

TX-LCN是这样处理的:

ServerA(事务发起方)发起调用时,创建一个事务组,会生成一个唯一的GroupId,这个GroupId会顺着服务调用链传递,每调用一个参与方服务,就会把这个参与方的事务信息通知给TxManager,加入该事务组。发起方收到调用返回(有可能是成功执行或者报错),将发起方执行结果状态通知给TxManager,TxManager将根据事务最终状态和事务组的信息来通知相应的参与模块提交或回滚事务,并返回结果给事务发起方。

二、版本说明

本文主要环境及依赖版本:

JDK8

SpringBoot - 2.1.5.RELEASE

SpringCloud - Greenwich.SR1

Spring-cloud-alibaba-dependencies - 0.9.0.RELEASE

TX-LCN - 5.0.2.RELEASE

整合的Spring-cloud-alibaba,注册中心用的Nacos,TX-LCN官网只有Dubbo和Consul的实例,不过差别不太大。

三、准备数据库

创建数据库:tx-manager

数据库脚本:

CREATE TABLE `t_tx_exception`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `group_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `unit_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `mod_id` varchar(128) CHARACTER SET utf8m
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TCC-Transaction是一个开源的TCC补偿性分布式事务框架。TCC是Try、Confirm、Cancel的缩写,表示事务的尝试、确认和取消阶段。TCC能够对分布式事务中的各个资源进行分别锁定、提交和释放。它的优点是能够实现严格一致性并且具有较短的执行时间和高实时性要求。同时,TCC也具有一定的缺点,例如对应用的侵入性较强,需要实现每个分支的try、confirm和cancel操作,实现难度较大。 关于Spring Cloud分布式事务和TCC,可以使用TCC-Transaction框架来实现。TCC-Transaction可以作为可靠性事件投递的替代品,并作为Spring Cloud Stream或Spring Cloud Bus的基础组件。此外,TCC还需要在事务管理器(协调器)节点上以高可用集群方式部署,并使用多数派算法来避免集群发生脑裂问题。 在实际应用中,TCC适用于一些需要严格一致性、执行时间短和实时性要求高的场景,例如红包和收付款业务。 更多关于TCC-Transaction框架的详细信息可以在其GitHub地址(https://github.com/changmingxie/tcc-transaction)和项目指南地址(https://github.com/changmingxie/tcc-transaction/wiki/使用指南1.2.x)中找到。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [SpringCloud(6) 分布式事务【概念、常见框架选择 - tx-lcn】](https://blog.csdn.net/qq_38225558/article/details/86103229)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [Spring Cloud综合实战 - 基于TCC补偿模式的分布式事务](https://blog.csdn.net/Solarison/article/details/68061157)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值