springcloud alibaba 整合seata的TCC

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

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

二、seata客户端的结构

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

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=joydayspring.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=nacosseata.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=nacosseata.tx-service-group=mall_tx_group
seata.enableAutoDataSourceProxy=false

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

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

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

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

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

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

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

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

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

seata.enableAutoDataSourceProxy=false

2.初始化NACOS配置实例。

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/2360.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

顺序栈着三种结构定义及其初始化

定义 顺序堆栈这三种结构定义及其初始化 - 知乎 (zhihu.com) 根据以上链接得到&#xff1a; 1.理解为数组&#xff0c;top是这个数组的索引值&#xff1b;定义这个结构体类型时&#xff0c;系统不分配空间 在主函数声明时&#xff0c;定义了关于这个结构体的变量&#xff0c…

Java 【数据结构】 二叉树(Binary_Tree)【神装】

登神长阶 第五神装 二叉树 Binary-Tree 目录 &#x1f3b7;一.树形结构 &#x1fa97;1.概念 &#x1f3b8;2.具体应用 &#x1f3b9; 二.二叉树&#xff08;Binary Tree&#xff09; &#x1f3ba;1.概念 &#x1f3bb;2.表现形式 &#x1fa95;3.特殊类型 &#x1f941…

自己手动在Linux上实现一个简易的端口扫描器

背景 常常听到网络攻击有一个东西叫做端口扫描器&#xff0c;可以扫描指定服务器开放的端口&#xff0c;然后尝试连接&#xff0c;并寻找漏洞&#xff0c;最终攻破服务器。而那些使用的端口扫描器都是一个个现成的程序&#xff0c;看上去很厉害的样子。而实际上这些东西对于懂…

【前端技术】HTML基础入门篇

1.1 HTML简介 ​ HTML&#xff08;HyperText Markup Language&#xff1a;超文本标记语言&#xff09;是一种标识性的语言。它包括一系列标签&#xff0e;通过这些标签可以将网络上的文档格式统一&#xff0c;使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组…

投资网站汇总

1、 中信证券(600030)历年财务指标——亿牛网https://eniu.com/gu/sh600030/cwzb 2、 3、 4、

每日一题 —— 最大子数组之和(动态规划)

1.链接 53. 最大子数组和 - 力扣&#xff08;LeetCode&#xff09; 2.描述 3.思路 4.参考代码 class Solution { public:int maxSubArray(vector<int>& nums) {int n nums.size();vector<int> dp(n1,0);int ret INT_MIN;for(int i 1;i<n;i){dp[i] ma…

跟着野火从零开始手搓FreeRTOS(6)多优先级的配置

在 FreeRTOS 中&#xff0c;数字优先级越小&#xff0c;逻辑优先级也越小。 之前提过&#xff0c;就绪列表其实就是一个数组&#xff0c; 里面存的是就绪任务的TCB&#xff08;准确来说是 TCB 里面的 xStateListItem 节点&#xff09;&#xff0c;数组的下标对应任务的优先级&a…

【Camera Sensor Driver笔记】五、点亮指南之Actuator配置

<slaveInfo> actuatorName dw9714v dirver IC 型号 slaveAddress 0x18 i2c write address i2cFrequencyMode FAST i2c 操作频率(400KHz) actuatorType VCM/BIVCM 马达类型 BIVCM&#xff08;中置马达&#xff…

ROS 2边学边练(33)-- 写一个静态广播(C++)

前言 通过这一篇我们将了解并学习到如何广播静态坐标变换到tf2&#xff08;由tf2来转换这些坐标系&#xff09;。 发布静态变换对于定义机器人底座与其传感器或非移动部件之间的关系非常有用。例如&#xff0c;在以激光扫描仪中心的坐标系中推理激光扫描测量数据是最简单的。 这…

服务器 BMC(基板管理控制器,Baseboard Management Controller)认知

写在前面 工作中遇到&#xff0c;简单整理博文内容涉及 BMC 基本认知理解不足小伙伴帮忙指正 不必太纠结于当下&#xff0c;也不必太忧虑未来&#xff0c;当你经历过一些事情的时候&#xff0c;眼前的风景已经和从前不一样了。——村上春树 基板管理控制器&#xff08;BMC&…

数字孪生创新工作流,助力百年大桥翻修

利用 Bentley 的 iTwin Capture 和 iTwin Experience 创建数字孪生模型&#xff0c;将现场施工时间缩短了 20% 重要交通枢纽焕然一新 罗伯特街大桥位于明尼苏达州圣保罗市&#xff0c;外观呈彩虹样拱形&#xff0c;近 100 年来一直是圣保罗市的标志性建筑。这座八跨钢筋混凝土…

Linux复习提纲2

Linux复习提纲 Linux概述 shell&#xff1a;交互式命令解释程序&#xff1b;用户和内核间交互的桥梁Shell不仅是交互式命令解释程序&#xff0c;还是一种程序设计语言shell是一种命令解释程序&#xff0c;批处理shell是linux的外壳&#xff0c;默认是bash2.1 Linux基础概念 log…

线上剧本杀小程序开发,未来行业的发展趋势?

当下&#xff0c;剧本杀成为了大众最喜欢的娱乐方式之一&#xff0c;作为以沉浸式为主的剧本杀正成为新时代下的发展潮流。 数据显示&#xff0c;剧本杀行业已达到了百亿元。面对发展迅猛的剧本杀市场&#xff0c;越来越多的资本进入到了市场中&#xff0c;剧本杀的产业链也逐…

【C语言】手撕二叉树

标题&#xff1a;【C语言】手撕二叉树 水墨不写bug 正文开始&#xff1a; 二叉树是一种基本的树形数据结构&#xff0c;对于初学者学习树形结构而言较容易接受。二叉树作为一种数据结构&#xff0c;在单纯存储数据方面没有 顺序表&#xff0c;链表&#xff0c;队列等线性结构…

菜鸟Java面向对象 2. Java 重写(Override)与重载(Overload)

Java 重写(Override)与重载(Overload) Java 重写与重载 Java 重写(Override)与重载(Overload)1. 重写(Override)1. 概念解释&#xff1a;2. 好处说明3. 异常规则处理 2. 方法的重写规则3. Super 关键字的使用4. 重载(Overload)**重载规则:**实例 5. 重写与重载之间的区别总结 1…

什么是手机运营商三要素验证API接口

手机运营商三要素验证API接口又叫手机运营商三要素核验API接口&#xff0c;指的是输入姓名、身份证号码及手机号&#xff0c;通过运营商数据库实时校验此三项是否匹配。手机运营商三要素核验API接口广泛用于实名注册、风控审核等场景&#xff0c;如电商、直播、游戏、金融等。接…

Leetcode刷题之链表小结(1)|92反转链表|206反转链表

TOC 小结 1. 如何反转某一个节点的指向? 206反转链表(简单)的递归解法——该方法的理念是: 若节点k1到节点m已经被反转&#xff0c;而我们当前处于k位置&#xff0c;那么我们希望k1指向k, 体现在以下代码的head->next->next head;这一句,可以记做一种常用的反转单个…

AI+招聘,激活企业的「新质生产力」

两会以来&#xff0c;「新质生产力」成为热词。而所谓的新质生产力&#xff0c;是创新起主导作用&#xff0c;摆脱传统经济增长方式、生产力发展路径&#xff0c;具有高科技、高效能、高质量特征&#xff0c;符合新发展理念的先进生产力质态。新质之「新」&#xff0c;很重要的…

wandb注册 wandb: ERROR api_key

wandb: ERROR api_key not configured (no-tty). call wandb.login(key[your_api_key]) Traceback (most recent call last): 背景 使用yolov8训练时 在pycharm中出现wandb账号未注册错误 Transferred 355/355 items from pretrained weights TensorBoard: Start with tensor…

平衡二叉树(AVLTree)

AVLTree 1、树的分类2、平衡二叉树2.1、构建一个平衡二叉树2.2、删除节点2.3、搜索方式2.3.1、广度优先搜索&#xff08;BFS&#xff09;2.3.2、深度优先搜索&#xff08;DFS&#xff09; 1、树的分类 树形结构是编程当中特别常见的一种数据结构。比如电脑中的文件管理系统就大…