当前位置: 首页 > news >正文

苏州网站建设制作服务商企业建设网站

苏州网站建设制作服务商,企业建设网站,企业网站只用静态页,网络工程师考试内容上篇文章简单介绍了SpringCloud系列链路追踪神器:Sleuth与Zipkin的搭建及基本用法,今天继续讲解下SpringCloud的分布式事务处理组件:Seata的使用!在分享之前继续回顾下本次SpringCloud的专题要讲的内容: 前言 这次我们…

上篇文章简单介绍了SpringCloud系列链路追踪神器:Sleuth与Zipkin的搭建及基本用法,今天继续讲解下SpringCloud的分布式事务处理组件:Seata的使用!在分享之前继续回顾下本次SpringCloud的专题要讲的内容:

前言

这次我们将聚焦于当下热门的分布式事务框架Seata,探讨如何在微服务架构中解决跨服务事务一致性的难题。在单体应用中,我们只需使用本地事务即可保证数据一致性,但随着业务拆分到不同微服务中,传统事务机制已无法满足需求。

阅读须知

本教程适合具备以下基础的开发者:

  • 熟悉SpringBoot框架基础
  • 了解微服务架构概念
  • 使用Spring Cloud Hoxton RELEASE版本

本系列前源码放在附件资源内,可以下载源码一起练习

Seata简介

Seata(Simple Extensible Autonomous Transaction Architecture)是阿里巴巴开源的分布式事务解决方案,提供高性能且易用的分布式事务服务。它支持四种事务模式:

  • AT(自动补偿型)
  • TCC(尝试/确认/取消)
  • SAGA(长事务)
  • XA(XA协议)

更多原理细节可参考官方文档

环境准备

Seata Server安装

  1. 下载安装包
    • Windows用户下载zip包
    • Linux/Mac用户下载tar.gz包
    • 下载地址
  2. 配置注册中心
    修改registry.conf文件,配置Nacos作为注册中心:
registry {type = "nacos"nacos {serverAddr = "127.0.0.1:8848"namespace = "public"cluster = "default"username = "nacos"password = "nacos"}
}
  1. 配置中心设置
    同样在registry.conf中配置Nacos作为配置中心:
config {type = "nacos"nacos {serverAddr = "127.0.0.1:8848"namespace = "public"group = "SEATA_GROUP"username = "nacos"password = "nacos"}
}

配置上传

  1. 下载config.txt到Seata根目录
  2. 获取nacos-config.sh脚本
  3. 执行配置上传命令:
sh script/config-center/nacos/nacos-config.sh -h 127.0.0.1 -p 8848 -g SEATA_GROUP -u nacos -w nacos

成功上传后,可在Nacos控制台(127.0.0.1:8848/nacos)查看配置。

关键配置说明

特别注意service.vgroupMapping配置项,服务端和客户端必须保持一致。例如:

service.vgroupMapping.my_test_tx_group=default

对应客户端配置:

seata:tx-service-group: my_test_tx_group

服务启动

启动Seata Server:

  • Windows: ./seata-server.bat -h 127.0.0.1
  • Linux/Mac: sh seata-server.sh -h 127.0.0.1

成功启动后,可在Nacos服务列表看到Seata服务注册。

数据库准备

执行Seata提供的建表SQL,创建seata数据库及相关表。

项目改造

1. 工程复制与重命名

复制原有工程并重命名:

  • spring-cloud-nacos-consumerorder-server
  • spring-cloud-nacos-providerstock-server

修改pom.xml中的基础配置:

<artifactId>order-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>order-server</name>

2. 添加依赖

在两个模块中添加Seata依赖:

<dependency><groupId>io.seata</groupId><artifactId>seata-spring-boot-starter</artifactId><version>1.4.2</version>
</dependency>

3. 配置调整

在application.yml中添加Seata配置:

seata:tx-service-group: my_test_tx_group

4. 业务数据库准备

创建订单和库存数据库及表结构:

-- 订单库
CREATE TABLE `order_tbl` (`id` int(11NOT NULL AUTO_INCREMENT,`user_id` varchar(255DEFAULT NULL,`commodity_code` varchar(255DEFAULT NULL,`count` int(11DEFAULT 0,`money` int(11DEFAULT 0,PRIMARY KEY (`id`)
);-- 库存库
CREATE TABLE `stock_tbl` (`id` int(11NOT NULL AUTO_INCREMENT,`commodity_code` varchar(255DEFAULT NULL,`count` int(11DEFAULT 0,PRIMARY KEY (`id`),UNIQUE KEY (`commodity_code`)
);

5. 业务逻辑实现

订单服务关键代码:

@GlobalTransactional
public void placeOrder(String userId, String commodityCode, Integer count) {// 创建订单Order order = new Order().setUserId(userId).setCommodityCode(commodityCode).setCount(count);orderMapper.insert(order);// 调用库存服务扣减stockFeignClient.deduct(commodityCode, count);
}

库存服务关键代码:

public void deduct(String commodityCode, int count) {if ("product-2".equals(commodityCode)) {throw new RuntimeException("模拟业务异常");}Stock stock = stockMapper.selectByCommodityCode(commodityCode);stock.setCount(stock.getCount() - count);stockMapper.updateById(stock);
}

网关配置

在Gateway中添加路由规则:

spring:cloud:gateway:routes:- id: order-serveruri: lb://order-serverpredicates:- Path=/order/**- id: stock-serveruri: lb://stock-serverpredicates:- Path=/stock/**

测试验证

  1. 启动所有服务:
    • Gateway
    • Auth服务
    • Order服务
    • Stock服务

  1. 测试正常提交:
    • 访问/order/placeOrder/commit
    • 验证订单创建和库存扣减是否成功

  1. 测试异常回滚:
    • 访问/order/placeOrder/rollback
    • 验证事务是否完整回滚

总结

通过本教程,我们完成了:

  1. Seata Server的安装与配置
  2. SpringCloud项目整合Seata
  3. 分布式事务场景的模拟与验证

Seata作为一款成熟的分布式事务框架,为微服务架构提供了可靠的事务保障。开发者可以根据业务特点选择合适的事务模式,更多高级配置可参考官方文档。

http://www.dtcms.com/a/473021.html

相关文章:

  • 怎样做企业的网站首页做网站的主要收入
  • 河北建设银行招聘网站标准网站建设报价
  • 免费建网站知乎公司网页设计毕业设计
  • 衡阳网站建设步骤江西 网站 建设 开发
  • 网站开发 页面功能布局合肥中小型企业网站建设方案模板
  • 婚姻网站建设注意事项永久免费国外域名注册
  • 学习做网站要多久大学生文创产品设计方案
  • 网站首页做跳转顺德网站建设价位
  • 零食网站怎么做个人工商注册查询网站
  • 网站建设哪家公司比较好护肤品网站建设的意义
  • 网站建设的总体需求分析怎么做公司网站需要什么
  • 网站引导页一般是什么格式分销系统搭建
  • 河南省建设银行网站小程序制作的公司
  • 黄岛王台有做网站的吗找谁做百度关键词排名
  • 佛山企业设计网站建设网站快速优化排名推荐
  • 定制程序网站简单美食网站模板免费下载
  • 长沙做网站设计的公司青岛网站建设选圣城
  • 做网站前端有前途么?没有自己的境外网站怎么做谷歌推广
  • 个人业余做网站怎么弄怎样免费制作网页
  • 做卡贴的网站少儿编程十大培训机构
  • 网站建设菜单栏设计网站建设的目标和需求分析
  • 某网站seo诊断分析和优化方案中国南京网站
  • c2c网站管理系统下载seo优化什么意思
  • 潍坊在线制作网站钦州网站建设
  • 网站在谷歌怎么做排名百度推广没有效果怎么办
  • 汕头网站建设公司哪个好百度不收录网站
  • 怎么建立一个好公司网站北京响应式网站
  • 温江建设局备案网站厦门门户网站制作服务商
  • 如何建立公司网站账号工程材料信息价查询网免费
  • 企业网站做口碑营销百度sem竞价推广