springcloud alibaba 整合seata的TCC

这篇具有很好参考价值的文章主要介绍了springcloud alibaba 整合seata的TCC。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、seata服务端搭建同上篇。

Seata的AT模式客户端两阶段提交流程源码分析

二、seata客户端的结构

1.示例DEMO工程 下单,扣余额, 减库存。

springcloud alibaba 整合seata的TCC,分布式事务,spring cloud,后端,spring

2. MAVEN配置。

    父工程:由于spring-cloud-starter-alibaba-seata依赖的seata-spring-boot-starter项目版本太低,所以要排除,使用1.4.2的版本。

		<seata.version>1.4.2</seata.version>
		<spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version>
		
<dependency>
			<groupId>com.alibaba.cloud</groupId>
			<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
			<!-- 排除依赖,指定版本和服务端一致 -->
			<exclusions>
				<exclusion>
					<groupId>io.seata</groupId>
					<artifactId>seata-spring-boot-starter</artifactId>
				</exclusion>

			</exclusions>
		</dependency>

		<dependency>
			<groupId>io.seata</groupId>
			<artifactId>seata-spring-boot-starter</artifactId>
			<version>${seata.version}</version>
		</dependency>

子模块:只需要引入基本的WEB框架。

<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!--eureka client-->
<!--		<dependency>-->
<!--			<groupId>org.springframework.cloud</groupId>-->
<!--			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>-->
<!--		</dependency>-->




		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

3.配置文件

BOOTSTRAP配置

spring.profiles.active=dev
#spring.application.name=joyday



spring.cloud.nacos.username=nacos
spring.cloud.nacos.password = nacos
spring.cloud.nacos.config.file-extension=properties
spring.cloud.nacos.config.group=DEFAULT_GROUP
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.discovery.group=DEFAULT_GROUP
spring.cloud.nacos.discovery.server-addr=${spring.cloud.nacos.config.server-addr}

seata.config.nacos.data-id=storageServerSeata.properties
seata.config.nacos.group=MALL_GROUP
seata.config.nacos.namespace=seata
seata.config.nacos.server-addr=${spring.cloud.nacos.config.server-addr}
seata.config.nacos.username=${spring.cloud.nacos.username}
seata.config.nacos.password=${spring.cloud.nacos.password}
seata.config.type=nacos

seata.registry.nacos.application=seata-server
seata.registry.nacos.group=SEATA_GROUP
seata.registry.nacos.namespace=seata
seata.registry.nacos.server-addr=${spring.cloud.nacos.config.server-addr}
seata.registry.nacos.username=${spring.cloud.nacos.username}
seata.registry.nacos.password=${spring.cloud.nacos.password}
seata.registry.type=nacos

seata.tx-service-group=mall_tx_group
seata.enableAutoDataSourceProxy=false

这次引入的SEATA配置中心要特别注意,data-id无效,被直接用具体的KEY所覆盖了,所以只能直接配置具体的TEXT类型KEY。

springcloud alibaba 整合seata的TCC,分布式事务,spring cloud,后端,spring

SEATA注册中心的目的为从NACOS中寻找服务名为seata-server的服务的实例,作为SEATA的服务端。

springcloud alibaba 整合seata的TCC,分布式事务,spring cloud,后端,spring

这里还有一个细节要特别注意,首先程序中配置了事务分组,程序会通过用户配置的配置中心去寻找service.vgroupMapping .事务分组配置项,取得配置项的值就是TC集群的名称,

springcloud alibaba 整合seata的TCC,分布式事务,spring cloud,后端,spring

这里就是DEFAULT,所以SEATA的服务端就必须注册到集群名称为DEFAULT否则客户端找不到集群。

springcloud alibaba 整合seata的TCC,分布式事务,spring cloud,后端,spring

拿到集群名称程序通过一定的前后缀+集群名称去构造服务名,各配置中心的服务名实现不同。拿到服务名去相应的注册中心去拉取相应服务名的服务列表,获得后端真实的TC服务列表。 3.为什么这么设计,不直接取服务名? 这里多了一层获取事务分组到映射集群的配置。这样设计后,事务分组可以作为资源的逻辑隔离单位,当发生故障时可以快速failover。

三.SEATA读取NACOS配置流程分析。

1.初始化全局事务扫描器,从这里可以看到

SeataProperties的参数不能在NACOS配置。是由seata-springboot-start来自动配置的。

因为我们是用的TCC模式,所以不需要做数据源代理,也不会影响程序性能。

seata.enableAutoDataSourceProxy=false

springcloud alibaba 整合seata的TCC,分布式事务,spring cloud,后端,spring

2.初始化NACOS配置实例。

springcloud alibaba 整合seata的TCC,分布式事务,spring cloud,后端,spring

springcloud alibaba 整合seata的TCC,分布式事务,spring cloud,后端,spring

3.获取NACOS中某个KEY的配置

springcloud alibaba 整合seata的TCC,分布式事务,spring cloud,后端,spring

先读本地, 没有去远程NACOS服务器请求接口

springcloud alibaba 整合seata的TCC,分布式事务,spring cloud,后端,spring

这里我们看到从NACOS读到的配置数据。

这里特别有一点,会根据事务分组,从NACOS注册中心获取SEATA服务端的集群的IP信息。

springcloud alibaba 整合seata的TCC,分布式事务,spring cloud,后端,spring

springcloud alibaba 整合seata的TCC,分布式事务,spring cloud,后端,spring

接下来我们看到,读到了我们的自定义集群名称。

springcloud alibaba 整合seata的TCC,分布式事务,spring cloud,后端,spring文章来源地址https://www.toymoban.com/news/detail-860066.html

到了这里,关于springcloud alibaba 整合seata的TCC的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringCloud(17~21章):Alibaba入门简介、Nacos服务注册和配置中心、Sentinel实现熔断与限流、Seata处理分布式事务

    Spring Cloud Netflix项目进入维护模式 https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-now 说明 Spring Cloud Netflix Projects Entering Maintenance Mode 什么是维护模式 将模块置于维护模式,意味着 Spring Cloud 团队将不会再向模块添加新功能。我们将修复 block 级别的 bug 以及安全问题,我

    2024年01月19日
    浏览(48)
  • Java微服务分布式事务框架seata的TCC模式

    🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 专栏 描述 Java项目实战 介绍Java组件安装、使用;手写框架等 Aws服务器实战 Aws Linux服务器上操作nginx、git、JDK、Vue Jav

    2024年03月23日
    浏览(35)
  • Seata分布式事务AT、TCC、SAGA、XA模式

    Seata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata将为用户提供了AT、TCC、SAGA和XA事务模式,为用户打造一站式的分布式解决方案。 🍮实现原理 阿里SEATA独有模式,通过生成反向SQL实现数据回滚,需要在数据库额外附加UNDO_LOG表,

    2024年02月07日
    浏览(27)
  • 《微服务实战》 第三十章 分布式事务框架seata TCC模式

    第三十章 分布式事务框架seata TCC模式 第二十九章 分布式事务框架seata AT模式 本章节介绍分布式事务框架seata TCC模式,上一章节介绍seata以及集成到Springboot、微服务框架里。 一个分布式的全局事务,整体是 两阶段提交 的模型。全局事务是由若干分支事务组成的,分支事务要

    2024年02月12日
    浏览(37)
  • Spring Cloud Alibaba全家桶(九)——分布式事务组件Seata

    本文小新为大家带来 分布式事务组件Seata 相关知识,具体内容包括 分布式事务简介 (包括: 事务简介 , 本地事务 , 分布式事务典型场景 , 分布式事务理论基础 , 分布式事务解决方案 ), 分布式事务Seata使用 (包括: Seata是什么 , Seata的三大角色 , Seata的设计思路

    2024年02月03日
    浏览(51)
  • 【Spring Cloud】Spring Cloud Alibaba-- 分布式事务Seata原理

    Seata 是一款开源的分布式事务解决方案,致力于提供高性能与简单易用的分布式事务服务,为用户提供了 AT、TCC、SAGA 和 XA 几种不同的事务模式: AT模式:无侵入式的分布式事务解决方案,适合不希望对业务进行改造的场景,但由于需要添加全局事务锁,对影响高并发系统的

    2024年02月08日
    浏览(65)
  • 【Spring Cloud Alibaba Seata 处理分布式事务】——每天一点小知识

                                                                                   💧 S p r i n g C l o u d A l i b a b a S e a t a 处理分布式事务 color{#FF1493}{Spring Cloud Alibaba Seata 处理分布式事务} Sp r in g Cl o u d A l ibaba S e a t a 处理分布式事务 💧

    2024年02月12日
    浏览(34)
  • Eureka整合seata分布式事务

    在分布式系统下,一个业务跨越多个服务或数据源,每个服务都是一个分支事务,要保证所有分支事务最终状态一致,这样的事务就是分布式事务。 、CAP定理 1、一致性 用户访问分布式系统中的任意节点,得到的数据必须是一致的。 节点1的数据一旦发生修改,节点2的数据必

    2024年01月19日
    浏览(42)
  • SpringCloud入门实战(十五)分布式事务框架Seata简介

    📝 学技术、更要掌握学习的方法,一起学习,让进步发生 👩🏻 作者:一只IT攻城狮 ,关注我,不迷路 。 💐学习建议:1、养成习惯,学习java的任何一个技术,都可以先去官网先看看,更准确、更专业。 💐学习建议:2、然后记住每个技术最关键的特性(通常一句话或者

    2024年02月10日
    浏览(34)
  • 【springcloud微微服务】分布式事务框架Seata使用详解

    目录 一、前言 二、事务简介 2.1 原子性 2.2 一致性 2.3 隔离性 2.4 持久性

    2023年04月26日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包