(Java企业 / 公司项目)分布式事务Seata详解(含Seata+Nacos组合使用)

news2024/11/14 13:43:28

一. Seata介绍

 Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。在 Seata 开源之前,其内部版本在阿里系内部一直扮演着应用架构层数据一致性的中间件角色,帮助经济体平稳的度过历年的双11,对上层业务进行了有力的技术支撑。经过多年沉淀与积累,其商业化产品先后在阿里云、金融云上售卖。2019.1 为了打造更加完善的技术生态和普惠技术成果,Seata 正式宣布对外开源,未来 Seata 将以社区共建的形式帮助用户快速落地分布式事务解决方案。

 官方网站: Seata

 找到对应的版本进行下载: 下载地址: Releases · apache/incubator-seata (github.com)

 或者博主提供的两个版本一个是最新版2.0.0 一个是现在使用的是1.6.1版本

【免费】 Seata是一款开源的分布式事务解决方案资源-CSDN文库

Seata术语

TC (Transaction Coordinator) - 事务协调者​

维护全局和分支事务的状态,驱动全局事务提交或回滚。

TM (Transaction Manager) - 事务管理器​

定义全局事务的范围:开始全局事务、提交或回滚全局事务。

RM (Resource Manager) - 资源管理器​

管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

二. Seata分布式事务原理

官方文档就是最好的文档,多看官方的

 以下是Seata分布式事务四个模式的总结可以参考

  • AT模式,默认,简单,需要增加undo_log表,生成反向SQL,性能高,回滚后原来没数据的,现在还是没数据
  • TCC模式,try confirm/cancel,三个阶段的代码都得自己实现,Seata只负责调度对业务代码侵入性比较强,必要时可能还要修改数据库
  • SAGA模式,长事务解决方法,需要程序员自己编写两阶段的代码(AT模式不需要写)基于状态机来实现的需要一个JSON文件,可异步执行
  • XA模式,XA协议是由X/Open 组织提出的分布式事务处理规范基于数据库的XA协议来实现2PC又称为XA方案适用于强一致性的场景比如金融,银行等需要数据库本身支持XA协议可以跨数据库

Seata分布式事务体验

修改数据库字段,seata的AT模式会自动生成反向SQL,且没有反引号‘’,所以要求表里面不能有关键字,并且在模块中添加数据库表,我们使用的是AT模式

CREATE TABLE `undo_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `branch_id` bigint(20) NOT NULL,
  `xid` varchar(100) NOT NULL,
  `context` varchar(128) NOT NULL,
  `rollback_info` longblob NOT NULL,
  `log_status` int(11) NOT NULL,
  `log_created` datetime NOT NULL,
  `log_modified` datetime NOT NULL,
  `ext` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

然后添加seata分布式组件依赖,查看maven是否添加进来了依赖client和server都是用的1.6.1

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
        </dependency>

接下来就是项目中的配置文件的配置,第一个可以使不做配置,这三个配置项都有默认值,默认客户端的tx-service-group=default_tx_group,最后一个是seata默认端口

 之后代码已修改就是增加或者换成@GlobalTransactional注解, 全局事务注解

下载安装seata之后不需要修改任何配置就可以直接启动

在配置文件配置的默认端口是8091 ,下面显示的是7091的原因 

 在我们的模块配置以上之后启动这个时候就会显示是否连接上了seata客户端,上面也有说明连接的数据库

 可以在代码中加入显示这个,发现全部都是一样的

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

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

相关文章

Ubuntu22.04,Nvidia4070配置llama2

大部分内容参考了这篇非常详细的博客&#xff0c;是我最近看到的为数不多的保姆级别的教学博客&#xff0c;建议大家去给博主点个赞【Ubuntu 20.04安装和深度学习环境搭建 4090显卡】_ubuntu20.04安装40系显卡驱动-CSDN博客 本篇主要是基于这篇博客结合自己配置的过程中一些注…

soc算法【周末总结】

1 实验一&#xff08;SOC误差30%放电实验&#xff09; 1.1 实验过程 1、对电池包进行充电&#xff0c;将昨天放空的电池包进行充电&#xff0c;充电至SOC40%左右&#xff1b; 2、电池包SOC为38%时&#xff0c;手动修改SOC值为70%&#xff0c;开始放电 3、SOC由70%缓慢降至4…

BUUCTFMisc (我flag呢???)

刚好&#xff0c;更完密码学&#xff0c;然后就到下一个对新手还算 “友好” 的地方了--->Misc&#xff08;但他还是比密码学难&#xff09; 找不出flag belike &#xff1a; 看了别人的找法以后be like&#xff1a; 这里我就来讲几道我觉得比较有意思的题目吧&…

一键批量翻译,文件夹名称翻译器

文件夹名称往往是我们初步了解文件内容的重要窗口。有时&#xff0c;为了更好地与国际合作伙伴交流或是管理个人文件&#xff0c;我们需要对文件夹名称进行翻译。传统的逐一修改方法既费时又费力&#xff0c;还要借助翻译工具。现在有了【文件批量改名高手】&#xff0c;上面的…

PMP学习考试经验总结

PMP备考日程计划表 我的PMP的备考大概花了三个月的时间, 可以分为以下几个阶段&#xff1a; Week 1-4: 读完PMBoK 前面7个知识领域&#xff08;中英文版PMBoK一起看&#xff09;。每看完一个知识领域&#xff0c;就看参考书里面的相应章节&#xff08;汪博士那本&#xff09;…

oracle 19c容器数据库data dump数据泵传输数据(3)---完全传输

目录 查看pdb1 创建pdb2 从pdb1 中导出元数据 在pdb2中导入元数据&#xff08;dmp文件&#xff09; Full Transportable Export/Import: Example 只传输除了system&#xff0c;sysaux&#xff0c;temp&#xff0c;undo以外的用户表空间&#xff0c;這種方式傳輸的是用戶自定…

6.4、SDN在云数据中心的应用案例分析

云数据中心中的虚拟子网包含网关和IP网段,IP分配给各个服务器,服务器间能够互相通信或通过网关访问外部网络。 在SDN云数据中心内,用户可以随时订购任意网段的虚拟子网,而且这些子网是可以在不同用户之间复用的,也就是说,不同用户可以使用相同的私有网段。 SDN云数据中心…

Linux截图方法推荐

因为经常会遇到以图为证的情况&#xff0c;而办公设备基本都是linux,所以汇总一下常见的linux截图方式。 1&#xff1a;在 Linux 中系统集成的截图的默认方式 你想要截取整个屏幕&#xff1f;屏幕中的某个区域&#xff1f;某个特定的窗口&#xff1f; 如果只需要获取一张屏幕…

SSL安全证书普及

首先&#xff0c;我们来了解一下什么是SSL安全证书。SSL安全证书是一种遵循SSL协议的数字证书&#xff0c;由受信任的第三方机构——认证中心&#xff08;CA&#xff09;颁发&#xff0c;其主要功能是为互联网通信提供加密处理&#xff0c;确保在用户浏览器和服务器之间传输的信…

深入分析 Spring 中 Bean 名称的加载机制

目录 前言 通过前文&#xff1a;《深入分析-Spring BeanDefinition构造元信息》一文我们可以了解到&#xff1a;Spring Framework共有三种方式可以定义Bean&#xff0c;分别为&#xff1a;XML配置文件、注解、Java配置类&#xff0c; 从Spring Framework 3.0&#xff08;2019年…

美力AI变革:生成式AI在美妆和时尚领域的巨大改变

美妆AI技术解决方案提供商—玩美移动于今日发布最新全球趋势报告&#xff1a;《生成式AI在美妆和时尚领域的巨大改变》&#xff0c;就生成式AI在美妆和时尚行业的崛起&#xff0c;为品牌商提供了富有洞见的深入分析。该报告分析了来自玩美移动屡获殊荣的玩美系列APP应用套件的大…

Linux Bonding 技术解析与配置指南

介绍 在复杂的网络环境中&#xff0c;为了提高带宽、负载均衡和冗余备份&#xff0c;Linux 提供了 Bonding 技术。Bonding 技术允许将多个物理网络接口绑定在一起&#xff0c;形成一个逻辑接口&#xff0c;以提高网络性能和可用性。 Bonding 七种模式 Linux Bonding 支持多种模…

jar包部署到linux虚拟机的docker中之后连不上mysql

前言&#xff1a; 跟着黑马学习docker的时候&#xff0c;将java项目部署到了docker中&#xff0c;运行访问报错&#xff0c;反馈连不上mysql。 错误描述&#xff1a; 方法解决&#xff1a; 概述&#xff1a;在虚拟中中&#xff0c;我进入项目容器的内部&#xff0c;尝试ping…

软件测试|web自动化测试神器playwright教程(三十八)

简介 在我们使用selenium时&#xff0c;我们可以获取元素的属性&#xff0c;元素的文本值&#xff0c;以及输入框的内容等&#xff0c;作为比selenium更为强大的web自动化测试神器&#xff0c;playwright也可以实现对元素属性&#xff0c;文本值和输入框内容的抓取&#xff0c…

Docker五部曲之二:Docker引擎

文章目录 前言Docker引擎镜像管理容器管理容器运行前台运行和后台运行容器识别重启策略清除 容器日志 数据管理卷挂载创建和管理卷启动带有卷的容器通过Docker Compose使用卷使用只读卷备份、恢复和迁移卷 绑定挂载用绑定挂载启动一个容器Docker Compose使用绑定挂载使用只读绑…

AcWing 103. 电影(map、pair连用or离散化)

题目 方法一&#xff08;mappair&#xff09; 其实上面这么长巴拉巴拉就是在说 首先&#xff0c;每个科学家会的语言都不同。但是呢每部电影的字幕和语言是不一样的&#xff08;字幕和语言一定不相同&#xff09; 要求找到一部电影使得在场能听懂的科学家最多&#xff08;如果存…

JVM基础(10)——老年代调优

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

MySQL数据库入门到大牛_高级_00_MySQL高级特性篇的内容简介

文章目录 一、整个MySQL的思维导图二、MySQL高级特性篇大纲1. MySQL架构篇2. 索引及调优篇3. 事务篇4. 日志与备份篇 一、整个MySQL的思维导图 下图为整个MySQL内容&#xff0c;01-05是基础篇&#xff0c;06-09是高级篇 二、MySQL高级特性篇大纲 MySQL高级特性分为4个篇章&…

2.4G水墨屏电子标签|RFID电子纸基站CK-RTLS0501G_VT硬件功能与联机方法

2.4G水墨屏|RFID电子纸基站CK-RTLS0501G_VT是基于2.4G无线技术的可视化标签基站&#xff0c;支持10个通道范围根据使用环境情况来设定使用通道能有效避免干扰的情况。该基站支持对可视化标签进行固件及显示模板的更新等功能&#xff0c;更好集中管理可视化标签。可广泛应用于制…

AI文本生图模型Stable Diffusion部署教程

本文基于CentOS8进行Stable Diffusion开源框架部署. 1. DNS配置(但是今天出现了偶尔无法下载问题) 为了加速Github访问,我在本机配置如下 (sd) [rootshenjian stable-diffusion-webui]# cat /etc/hosts 127.0.0.1 shenjian localhost localhost.localdomain localhost4 loca…