首页 > 其他分享 >JeecgBoot 与分布式事务 Seata v1.7.0 集成实战

JeecgBoot 与分布式事务 Seata v1.7.0 集成实战

时间:2024-12-10 15:56:29浏览次数:6  
标签:seata db server cloud v1.7 JeecgBoot jeecg store Seata

准备环境

一、创建四个数据库,如下

jeecg_order(订单数据库)
jeecg_account(账户数据库)
jeecg_product(商品数据库)
seata(seata数据库)

以上数据库脚本已存放至 jeecg-cloud-test-seata 示例中,文件位置如下图所示

image

二、准备调试代码

1. 示例代码提供如下
  • jeecg-cloud-test-seata-order(下单服务)
  • jeecg-cloud-test-seata-product(库存服务)
  • jeecg-cloud-test-seata-account(账户服务)

该示例场景用于下单时检测库存是否车充足,余额是否充足,有一个不满足是则回滚事务

2. seata 服务端代码

本次实践的 seata 版本为 v1.7.0,下载地址: https://seata.apache.org/zh-cn/unversioned/release-history/seata-server

安装服务端 下载下来进行解压,目录结构如下:

image

进入 bin 目录启动 seata,seata 默认端口是 8091

window 下运行 seata-server.bat linux 下运行 seata-server.sh

  • 1.修改 seata 服务端的 yml 配置

image

image

启动 seata,如下图 输入如下信息后表示启动成功

image

微服务模块添加依赖,具体参考示例代码

<dependency>
    <groupId>org.jeecgframework.boot</groupId>
    <artifactId>jeecg-boot-starter-cloud</artifactId>
    <version>3.1.0</version>
</dependency>
<dependency>
    <groupId>org.jeecgframework.boot</groupId>
    <artifactId>jeecg-boot-starter-seata</artifactId>
    <version>3.1.0</version>
</dependency>

微服务模块添加配置,具体参考示例代码

seata:
  enable-auto-data-source-proxy: false
  service:
    grouplist:
      default: 127.0.0.1:8091
    vgroup-mapping:
      springboot-seata-group: default
  # seata 事务组编号 用于TC集群名
  tx-service-group: springboot-seata-group

启动测试 依次启动 jeecg-cloud-test-seata-order(下单服务) jeecg-cloud-test-seata-product(库存服务) jeecg-cloud-test-seata-account(账户服务)

启动完成如下图 浏览器输入 http://localhost:5001

即可进行测试,如下图所示

image

测试正常下参数见截图

image

测试余额不足,测试库存不足,然后观察数据库订单表插入数据是否回滚

注:本示例不通过网关所以需要排除认证权限 ShiroConfig.java 添加如下代码

//测试模块排除
filterChainDefinitionMap.put("/test/seata/**", "anon");

可使用 nacos 作为 seata 的配置中心 新建 seataServer.properties 配置文件内容如下

# 数据存储方式,db代表数据库
store.mode=db
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.cj.jdbc.Driver
store.db.url=jdbc:mysql://localhost:3300/seata?useUnicode=true&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai
store.db.user=root
store.db.password=root
store.db.minConn=5
store.db.maxConn=30
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.queryLimit=100
store.db.lockTable=lock_table
store.db.maxWait=5000
# 事务、日志等配置
server.recovery.committingRetryPeriod=1000
server.recovery.asynCommittingRetryPeriod=1000
server.recovery.rollbackingRetryPeriod=1000
server.recovery.timeoutRetryPeriod=1000
server.maxCommitRetryTimeout=-1
server.maxRollbackRetryTimeout=-1
server.rollbackRetryTimeoutUnlockEnable=false
server.undo.logSaveDays=7
server.undo.logDeletePeriod=86400000


# 客户端与服务端传输方式
transport.serialization=seata
transport.compressor=none
# 关闭metrics功能,提高性能
metrics.enabled=false
metrics.registryType=compact
metrics.exporterList=prometheus
metrics.exporterPrometheusPort=9898

标签:seata,db,server,cloud,v1.7,JeecgBoot,jeecg,store,Seata
From: https://www.cnblogs.com/jeecg158/p/18597500

相关文章

  • 13.SpringCloudSeata处理分布式事务
    分布式事务(引入)面试题你简历上写用微服务boot/cloud做过项目,你不可能只有一个数据库吧?请你谈谈多个数据库之间,你如何处理分布式事务?举例:在订单支付成功后,交易中心会调用订单中心的服务把订单状态更新,并调用物流中心的服务通知商品发货,同时还要调用积分中心的服务为用户增加相......
  • 【免费开源】JeecgBoot单点登录源码全部开源了
    JeecgBoot单点登录源码全部开源了,有需要的朋友可以来薅羊毛了。一、JeecgBoot介绍JeecgBoot是一款企业级的低代码平台!前后端分离架构SpringBoot2.x,SpringCloud,AntDesign&Vue3,Mybatis-plus,Shiro,JWT支持微服务。强大的代码生成器让前后端代码一键生成!JeecgBoot引领低代码开......
  • Seata事务隔离
    本文目标:帮助用户明白使用Seata AT模式时,该如何正确实现事务隔离,防止脏读脏写。希望读者在阅读本文前,已阅读过seata官网中对AT模式的介绍,并且对数据库本地锁有所了解(例如,两个事务同时在对同一条记录做update时,只有拿到recordlock的事务才能更新成功,另一个事务在recordloc......
  • Seata使用Apollo作为配置中心
    预备工作​当您将apollo-client整合到您的Seata工程之前,请确保后台已经启动Apollo服务。如果您尚且不熟悉Apollo的基本使用的话,可先行参考 Apollo快速入门。建议使用Apollo 1.6.0 及以上的版本。快速上手​Seata融合Apollo配置中心的操作步骤非常简单,大致步骤......
  • Seata之小结和测试
    目录一、本地事务二、分布式事务2.1、典型的分布式事务应用场景2.2、跨库事务2.3、分库分表2.4、微服务架构三、两阶段提交协议(2PC)2PC存在的问题四、Seata4.1、Seata的三大角色4.2、SeataAT模式的设计思路五、Seata快速开始SeataServer(TC)环境搭建步骤一:下载安装包步骤二:建表(db......
  • Seata TCC 模式
    概述​TCC模式是Seata支持的一种由业务方细粒度控制的侵入式分布式事务解决方案,是继AT模式后第二种支持的事务模式,最早由蚂蚁金服贡献。其分布式事务模型直接作用于服务层,不依赖底层数据库,可以灵活选择业务资源的锁定粒度,减少资源锁持有时间,可扩展性好,可以说是为独立部署......
  • 事务回顾及使用Seata解决分布式事务
    目录一、事务回顾1、什么是事务2、事务的作用3、事务ACID四大特性4、事务的并发二、Seata之原理简介1、TC、TM、RM三大组件2、分布式事务的执行流程3、AT模式如何做到对业务的无侵入3.1、一阶段加载3.2、二阶段提交3.3、二阶段回滚三、使用SEata添加分布式事务1......
  • 简述Seata的AT模型
    AT模式是分阶段提交的事务模型,不过缺弥补了XA模型中资源锁定周期过长的缺陷。1.Seata的AT模型阶段一RM的工作:●注册分支事务●记录undo-log(数据快照)●执行业务sql并提交●报告事务状态阶段二提交时RM的工作:●删除undo-log即可阶段二回滚时RM的工作:●根据undo-log......
  • Seata的AT模式的执行流程
    AT模式是解决分布式事务的一种方式AT模式与XA模式都是分阶段提交的事务模型,弥补了XA模型中资源锁定周期过长的缺陷,企业基本都用。1.AT模式基本流程图:阶段一RM的工作:注册分支事务记录undo-log(数据快照)执行业务sql并提交报告事务状态阶段二提交时RM的工作:删除undo-log即......
  • Seata简介;安装seata;应用seata
    一,Seata简介;用来管理分布式事务,由阿里巴巴出品。【1、TC(TransactionCoordinator)-事务协调者】用来维护事务的,包括主事务和分支事务。【2、TM(TransactionManager)-事务管理器】管理事务的,决定了事务什么时候开启,什么时候结束,提交还是回滚。TM用来做提交和回滚......