SpringCloudAlibaba 之初识 Seata(客户端使用)

SpringCloud-Alibaba之Seata入门以及踩坑(二) 前言 上一篇文章:➣SpringCloud Alibaba之Seata入门以及踩坑(一)老顾介绍了seata相关的准备工作,以及版本的选择;今天老顾就来介绍一下seata的使用。以及在使用过程中遇到的问题。 案例背景 今天老顾介绍的案例场景也就是网上常用的场景,用户下单场景。整个流程就是用户下单时: 1)创建订单,订单状态为创建中 2)扣减商品库存 3)扣减用户金额 4)更改订单状态,订单状态为已完结 从以上业务流程,我们可以分为3个服务,如图 因为上面是3个分布式服务,事务问题就由此产生,我们来看看se 阅读详情

前言

本篇来使用一下Seata处理微服务下的分布式事务。我们准备先准备两个工程一个 seata_order 和seata_storage 下面我就贴一下引用的maven注意所有的Alibaba的maven 版本是 2.2.3.RELEASE

开始整合

先给两个库中添加表结构

##这是库存服务的表
DROP TABLE IF EXISTS `storage_tbl`; 
CREATE TABLE `storage_tbl` ( 
`id` int(11) NOT NULL AUTO_INCREMENT, 
`commodity_code` varchar(255) DEFAULT NULL, 
`count` int(11) DEFAULT 0, PRIMARY KEY (`id`),
UNIQUE KEY (`commodity_code`) ) 
ENGINE=InnoDB DEFAULT CHARSET=utf8; 

## 这是订单服务表
DROP TABLE IF EXISTS `order_tbl`;
CREATE TABLE `order_tbl` ( 
`id` int(11) NOT NULL AUTO_INCREMENT, `user_id` varchar(255) DEFAULT NULL, 
`commodity_code` varchar(255) DEFAULT NULL,
`count` int(11) DEFAULT 0, 
`money` int(11) DEFAULT 0, PRIMARY KEY (`id`) )
ENGINE=InnoDB DEFAULT CHARSET=utf8;
## seata用来做回滚用的 (如果是分库的话每个库都要创建这张表)
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;

下面我贴一下maven的依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.3.2.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>
<dependency> <!-- 连接池-->
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
</dependency>
<dependency> <!-- 远程调用 -->
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.17</version>
</dependency>
<dependency> <!-- nacos 注册中心-->
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency> <!--配置中心 读取seata 配置-->
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency> <!-- seata的依赖-->
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>

下面我们来看看yml 文件中的配置,主要是配置一个seata 的通信地址和seata的事务分组,因为我们的seata-serve已经注册到了nacos中

maven 依赖

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.1.7:3306/seata_order?autoReconnect=true&useUnicode=true&nullCatalogMeansCurrent=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    initialSize: 5
    minIdle: 5
    maxActive: 20
    # 配置获取连接等待超时的时间
    maxWait: 60000
    #上面都是数据库的链接信息没什么好说的
  cloud:
    nacos:
      discovery: #注册服务到nacos中去
        server-addr: 192.168.1.7:8848
    alibaba:
      seata:#设置事务分支 默认就是 my_test_tx_group
        tx-service-group: my_test_tx_group
  application:
    name: bugvip-order 
#mybatis
mybatis-plus:
  mapper-locations: classpath*:/mapper/***Mapper.xml
  map-underscore-to-camel-case: true
  global-config:
    #数据库相关配置
    db-config:
      #主键类型  AUTO:"数据库ID自增", INPUT:"用户输入ID", ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
      id-type: AUTO
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
seata: #设置seata的通讯地址 去nacos 找 seata服务端 TC的地址
  registry:
    type: nacos
    nacos:
      server-addr: 192.168.1.7:8848
      username: nacos
      password: nacos
      application:  seata-server #服务name要和nacos中保持一致 默认就是seata-server

下面我们看看业务中是怎么使用seata(没错很简单就是一个注解 @GlobalTransactional)远程调用那些我们这里就不多说了

@GlobalTransactional
@Override
public void insert(Order order) {
 //在order服务中添加订单信息
    orderMapper.insert(order);
    //远程待用库存服务进行库存扣减
    stockService.reduct(1);
    //我们手动抛出一个异常看看能不能将order中的订单信息回滚
    int i =10/0;
}

可以在order表中查看数据发现并没有插入(实现了回滚)

当然库存服务中可以看到先修改后面回滚了

数据表中的数据并没有变动,说明我们的seata的事务生效且成功保证了事务的一致性

服务端搭建成功之后客户端使用的时候还是很简单的。一个注解搞定 我们在异常之前打个断点就可以在 undo_log表中的数据就是用来回滚的数据(可以理解为反向解析我们执行的sql 后面一旦回滚就以他为准)

微服务系列:分布式事务 Spring Cloud Alibaba 之 Seata 实战篇 这篇中我们就要项目实战中来使用 Seata 了,毕竟学习它就是为了实战中使用的。 其实 Seata 使用起来很简单,主要就是使用 @GlobalTransactional注解,但是搭建过程却还是稍微有点复杂的。 话不多说,开始今天的学习。 一、前言 本案例使用的是 Seata 的 AT 模式 由于篇幅有限,本文只贴出核心代码和配置,完整代码地址:cloud-seata: seata demo - Gitee.com 本案例使用 Nacos 作为注册中心,使用 Nacos 作为配置中心 1. 版本 阅读详情

相关推荐

SpringCloudAlibaba集成Seata

1.环境准备 nacos

孤独书生冷夜宸的博客 2365

Spring cloud alibaba--Seata分布式事务

1.Seate是什么 Seate是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seate将为用户提供了AT、TCC、SAGA和XA事务模式,为用户打造一站式的分布式解决方案。AT模式是阿里首推的模式。 1.1seate的三大角色 TC(Transaction Coordinator)-事务协调者:维护全局和分支事务的状态,驱动全局事务提交或回滚 TM(Transaction Manager)-事务管理者:定义全局事务的范围,开始全局事务,提交或回滚全局事务。 RM(R

ZHANGLIZENG的博客 3731

史上最全的Seata教学并且连接springcloudAlibaba进行使用

我们知道在数据库中是可以保证事务的ACID四大特性的,但是我们现在做的项目如果是微服务项目,微服务的项目可能会涉及到多个服务涉及到多个数据库,那我们这个时候就要想一下我们是否还可以直接的使用Spring中提供给我们的@Transactional只可以保证到单体项目的情况下是可以运行成功的,但是在微服务的项目下,XA 模式是 Seata 中的一种事务模式,基于 X/Open XA 协议实现。如果 tx1 的二阶段全局回滚,则 tx1 需要重新获取该数据的本地锁,进行反向补偿的更新操作,实现分支的回滚。

qq_62325622的博客 948

SpringCloud Alibaba微服务 -- Seata的原理和使用

摸了两天鱼总结的分布式事务 seata 的相关原理和使用,绝对史诗级详细,绝对全网最保姆,还没有学习seata的同学快来看看吧~

知道的越多 不知道的就越多 5712

SpringcloudAlibaba+Nacos+Seata1.4.0分布式事务配置

seata-develop链接:https://pan.baidu.com/s/1WAMPzIwof3Z_RwfE-w6JqQ 提取码:df5n seata-server-1.4.0链接:https://pan.baidu.com/s/1JfsvN2ir6piou3aUbZO_Ow 提取码:6lt3 官网源码地址:https://github.com/seata/seata 网上许多搭建版本趋向于老版本,故自己参考官网 http://seata.io/en-us/和其他搭建方法总结出一套完整说明.

平常心丷的博客 2081

FPGA控制DDR读写(AXI4总线接口)

FPGA控制DDR读写

qq_42712308的博客 1万+

十八:Spring Cloud Alibaba整合Seata实战

目录 1. 启动Seata Server 1.1 环境准备 2. Seata如何整合到Spring Cloud微服务 2.1 导入依赖 2.2 微服务对应数据库中添加undo_log表 2.3 微服务需要使用seata DataSourceProxy代理自己的数据源 2.4添加seata的配置 demo代码下载: learn-seata.zip 1. 启动Seata Server 1.1 环境准备 1 指定nacos作为配置中心和注册中心 修改registry.conf文件 ..

Xx__WangQi的博客 3834

模拟退火算法详细讲解(含实例python代码)

模拟退火算法详细讲解(含实例python代码)(一)模拟退火算法简介三级目录(二)模拟退火算法原理(1)基本思想(2)算法步骤(3)参数控制(三)实例分析 最近老师要求做模拟退火算法实验,看了很多博客之后感觉还是不太清楚,最后问了老师之后才搞明白。想把自己的理解写下来,帮助大家更好的理解。本篇文章是在另一篇博客的基础上加了一下自己的理解,然后又把我们在实验中的实例写下来,还有参考代码。希望大家看了之后能够加深对模拟退火算法的理解。 另一篇博客链接: 深度学习 — 模拟退火算法详解. (一)模拟退火算法简介

weixin_48241292的博客 17万+

SpringCloudAlibaba-Seata整合

Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案,是阿里巴巴开源中间件与 Spring Cloud 体系的融合。

weixin_45982841的博客 832

中国 it 集成商 主要有哪些 主要做什么工作

既要懂技术(云计算/AI),又要吃透行业(金融/政务)。:用国产化方案(麒麟OS+达梦数据库)替换Oracle/Windows。:如为银行搭建数据中心(采购华为服务器+思科交换机)。:数据中心监控、故障处理(如华胜天成服务国家电网)。:核心交易系统(如中科软为保险公司开发精算平台)。:智慧城市(如太极股份承建“一网通办”政务平台)。:HIS医院信息系统(如东华软件的电子病历系统)。:硬件透明化(如服务器价格战)压缩集成毛利。:工厂设备联网(新华三的工业互联网平台)。

hxsln11的博客 3043

PrimeTime low power-多电压设计流程(2)

get_power_switches`、`get_supply_nets` 和 `get_supply_ports` 命令的操作方式类似,并具有类似的命令选项。PrimeTime 根据 UPF 命令构建电源供应网络,包括 create_power_domain、create_supply_net、create_supply_set、create_supply_port、set_domain_supply_net 和 connect_supply_net。电源集句柄是为电源域隐式创建的一个抽象电源集。

QRBQ 713

6-SpringCloudAlibaba整合Seata

springcloudalibaba整合seata

cl617287的博客 1955

AI大模型探索之路-应用篇11:AI大模型应用智能评估(Ragas)

随着人工智能技术的飞速发展,AI大模型(LLM)已经成为了推动技术创新和应用的关键因素。这些大模型在语言理解、图像识别、自然语言生成等领域展现出了惊人的能力。然而,随着模型规模的增大,它们对计算资源的消耗、环境适应性、模型稳定性、安全性和可解释性等方面也提出了新的挑战。因此,对AI大模型进行智能评估变得至关重要,以确保它们在实际应用中的稳定性、可靠性和有效性。本文将详细介绍Ragas框架,一个专为AI大模型设计的智能评估工具。

寻道AI,探索AI无限可能! 5547

分布式事务三 SpringCloudAlibaba整合Seata实战

Seata整合到Spring Cloud Alibaba微服务

东风麦芽糖 1027

【unity知识】最新的虚拟相机Cinemachine3简单使用介绍

本文介绍了Unity中Cinemachine 3虚拟相机系统的使用方法。相比旧版本,新版功能更强大且参数分类更直观。文章详细讲解了摄像机镜头参数、旋转控制(包括None、目标跟随、样条线推拉、旋转追随等6种模式)和位置控制(跟随、样条轨道、硬锁定等5种模式)。重点演示了样条轨道摄像机的创建与配置,以及如何实现第一人称和第三人称视角。通过丰富的GIF图示,展示了各种模式的运行效果,帮助用户快速掌握Cinemachine 3的核心功能。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 867

Vue Vben Admin 登录页修改全攻略:从登录界面定制到接口对接全流程配置

方式一:修改国际化文件找到对应的语言包文件,修改和的值。方式二:直接传递文本page-description="现代化的后台管理系统模板"page-title="欢迎使用 Vue Vben Admin"从上面的代码可以看出,登录表单使用了的方式来定义表单字段,这种方式提供了极大的灵活性。如果你想要自定义表单,可以修改formSchema数组。如果你的登录需求非常特殊,现有的组件无法满足,你可以完全自定义表单。只需在login.vue中替换<template><h2>自定义登录</h2>

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 481

SpringCloudAlibaba对应SpringCoud, Nacos, Seata, Springboot版本

SpringCloudAlibaba版本说明

Fall_enleaves的博客 2160

使用W5500与外网通信故障解决(MAC地址问题)

在蒲城项目的调试时,AMS500发现一个致命的问题,就是:在局域网跨网段通信时候和中心服务器不能通信,但是在一个HUB下是没有问题的,以前的串口服务器有过类似的问题出现,解决方法说是芯片的问题,结果也不了了之,换了芯片正常。 我们的网络通信芯片选择W5500,其中的MAC地址采用的是CPU的序列号作为Mac地址的问题就出在这,我们在使用的时候MAC地址的第一个必须是偶数,我们忽视了。 现象描...

zxm8513优快云博客 7757

Seata安装及SpringCloudAlibaba整合Seata

Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。当然我们一般使用 AT模式即可 公众号 : 倔强小狮子 文章目录公众号 : 倔强小狮子1. Seata安装(该教程使用 1.4.1)1.1 地址 : [https://github.com/seata/seata/releases](https://github.com/seata/seata/release.

braverlionet的博客 1267

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

SpringCloudAlibaba-Seata

Seata 简介 分布式事务 事务是数据库的概念,数据库事务(ACID:原子性、一致性、隔离性和持久性); 分布式事务的产生,是由于数据库的拆分和分布式架构(微服务)带来的,在常规情况下,我们在一个进程中操作一个数据库,这属于本地事务,如果在一个进程中操作多个数据库,或者在多个进程中操作一个或多个数据库,就产生了分布式事务; (1)数据库分库分表就产生了分布式事务; (2)项目拆分服务化也产生了分布式事务; Seata Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易

qq_47815451的博客 1244

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

SpringCloudAlibaba——Seata配置文件

Seata配置文件详解 在${SEATA_HOME}\conf目录下有两个配置文件,分别是registry.conf和file.conf。 registry.conf registry.conf包含两项配置: registry:表示配置Seata服务注册的地址,支持目前市面上所有主流的注册中心组件。它的配置非常简单,通过type指定注册中心的类型,然后根据指定的类型对应的服务地址信息,比如当type=nacos时,则匹配到Nacos的配置项如下: type="nacos" nacos { serverAd

吴声子夜歌的博客 3840

SpringCloud Alibaba——Seata 1.3.0配置和使用

文章目录Seata 1.4 下载解压文件修改配置文件配置导入nacos(可选)修改`nacos.txt`配置文件信息:编写nacos-config.sh脚本git base窗口操作工具安装nacos中创建namespace将配置信息推送nacosspringcloud子服务引用 Seata 1.4 下载 下载链接: github seata下载地址 解压文件 修改配置文件 1、file.conf文件的修改 ## transaction log store, only used in seata-ser

专注写bug 5704

springcloudalibaba之seata分布式事务

springcloudalibaba之seata分布式事务springcloudalibaba之seata分布式事务在需要使用分布式事务的地方加上@GlobalTransactional即可 springcloudalibaba之seata分布式事务 seata分布式事务的搭建网上都是星星散散的,总是有问题。今天出一章搭建案例 本篇基于 springcloud+nacos+seate1.2+mysql 搭建 1.首先下载seate1.2版本的源码和seate服务器http://seata.io/zh-cn/

qq_38496991的博客 488

Seata 1.5.1环境搭建使用

下载seata 1.5.1目录结构进入conf 修改配置文件yml 可以参照example使用nacos作为注册中心,mysql作为数据库seata使用需要创建数据库和表,建表如下每个参与全局事务的微服务的库都与要创建回滚表启动seata目录下的bin目录下的seata-server.bat(win)浏览器访问localhost:7091 账号密码喂yml中配置的seata,同时访问nacos也可以看到seata的服务成功注册。

weixin_43639667的博客 1811
上一篇: 【Java进阶】学好常用类,code省时省力
下一篇: 阿里P9“墙裂”推荐,Docker实战技术文档,从原理到实战
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值