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

苏州建网站网络销售推广平台

苏州建网站,网络销售推广平台,移动应用开发行业发展趋势,重庆沙坪坝疫情风险等级在现代软件开发中,随着微服务架构的普及,应用被分解为多个独立部署的服务。虽然这种方式提高了系统的灵活性和可扩展性,但也带来了新的挑战,尤其是在数据一致性方面。本文将介绍一个强大的开源解决方案——Seata,它旨在…

在现代软件开发中,随着微服务架构的普及,应用被分解为多个独立部署的服务。虽然这种方式提高了系统的灵活性和可扩展性,但也带来了新的挑战,尤其是在数据一致性方面。本文将介绍一个强大的开源解决方案——Seata,它旨在帮助开发者轻松应对微服务架构中的分布式事务问题。

目录

分布式事务介绍

Seata的核心概念与架构

Seata的核心组件

Seata的工作模式

XA 模式

AT 模式

TCC 模式

Saga 模式

Seata的部署及应用

部署Seata服务

微服务集成Seata


分布式事务介绍

分布式事务是指跨越多个计算机节点或数据库的事务处理过程。在传统的单体应用中,ACID(原子性、一致性、隔离性、持久性)特性相对容易实现。然而,在微服务环境中,由于涉及到不同服务之间的交互,确保这些特性的难度大大增加。例如,在订单处理过程中,既要更新库存系统也要更新支付信息,任何一步失败都可能导致数据不一致。

Seata的核心概念与架构

Seata 是一个开源的分布式事务解决方案,旨在为微服务架构中的分布式事务提供高可用、高性能的支持。它由阿里巴巴集团主导开发,并于2019年开源。

Seata的核心组件

  1. Transaction Coordinator (TC):事务协调器,维护全局事务和分支事务的状态,驱动全局事务的提交或回滚。
  2. Transaction Manager (TM):事务管理器,定义全局事务的边界,负责开启全局事务、提交或回滚全局事务。
  3. Resource Manager (RM):资源管理器,管理分支事务处理的数据的资源,与TC通信以注册分支事务并报告状态。

如下图所示:

Seata的工作模式

XA 模式

XA模式遵循XA规范,支持两阶段提交协议(2PC),适用于对一致性要求高的场景。XA模式需要数据库的支持,比如MySQL、Oracle等都提供了对XA的支持。(性能较低,强一致性)

AT 模式

这是一种无侵入式的分布式事务解决方案,适用于基于Spring Cloud、Dubbo等微服务框架的应用。在AT模式下,Seata自动拦截SQL操作,记录数据快照,并通过比较前后快照来决定如何提交或回滚事务。(推荐使用,Seata默认实现)

流程图如下:

TCC 模式

TCC是一种补偿型事务模式,要求业务逻辑必须分为三个阶段:尝试(Try)、确认(Confirm)和取消(Cancel)。尝试阶段完成所有业务检查,预留必要的业务资源;确认阶段执行实际的业务操作;取消阶段释放预留的业务资源。(对事务过程中的每一个步骤都有精确的控制)

Saga 模式

Saga模式适合长事务场景,将一个长事务拆分成多个本地事务序列,每个本地事务都有相应的补偿操作用于撤销之前的操作。如果前面的事务失败,则执行后续的补偿操作来恢复系统状态。(包含多个本地事务且能够接受最终一致性)

Seata的部署及应用

部署Seata服务

Seata支持多种存储模式,但考虑到持久化的需要,我们一般选择基于数据库存储。

准备一个seata目录,其中包含了seata运行时所需要的配置文件:

将整个seata文件夹拷贝到虚拟机的/root目录

在虚拟机的/root目录执行下面的命令:

docker run --name seata \
-p 8099:8099 \
-p 7099:7099 \
-e SEATA_IP=192.168.150.101 \
-v ./seata:/seata-server/resources \
--privileged=true \
--network hm-net \
-d \
seataio/seata-server:1.5.2

通过以下命令进行观察Seata日志:

docker logs -f seata

登录你自己的虚拟机地址:7099,如下页面即部署成功

微服务集成Seata

引入依赖

<!--统一配置管理--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--读取bootstrap文件--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency><!--seata--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-seata</artifactId></dependency>

在nacos上添加一个共享的seata配置,命名为shared-seata.yaml

seata:registry: # TC服务注册中心的配置,微服务根据这些信息去注册中心获取tc服务地址type: nacos # 注册中心类型 nacosnacos:server-addr: 192.168.150.101:8848 # nacos地址namespace: "" # namespace,默认为空group: DEFAULT_GROUP # 分组,默认是DEFAULT_GROUPapplication: seata-server # seata服务名称username: nacospassword: nacostx-service-group: hmall # 事务组名称service:vgroup-mapping: # 事务组与tc集群的映射关系hmall: "default"

在配置文件中配置shared-seata.yaml:(下方的共享seata配置)

spring:application:name: cart-service # 服务名称profiles:active: devcloud:nacos:server-addr: 192.168.12.132::8848 # nacos地址config:file-extension: yaml # 文件后缀名shared-configs: # 共享配置- dataId: shared-jdbc.yaml # 共享mybatis配置- dataId: shared-log.yaml # 共享日志配置- dataId: shared-swagger.yaml # 共享日志配置- dataId: shared-seata.yaml # 共享seata配置

在运行项目后,进行测试:

故意制造分布式事务不一致的情况:下单商品后,修改库存,进入支付业务中,观察控制台。

我们以AT模式为例,结果如下:

直接回滚到支付的状态,购物车也没有清除,实现了事务一致。

http://www.dtcms.com/wzjs/89153.html

相关文章:

  • 免费查企业最好的网站网球排名即时最新排名
  • wordpress增加标签优化营商环境
  • 惠州招聘网深圳网络seo推广
  • 集团网站设计开发it培训四个月骗局
  • 建设银行宁波招聘网站个人网站设计成品
  • 网络兼职做网站北京网站建设公司优势
  • wordpress ssl深圳网站设计专业乐云seo
  • 百度竞价排名怎么收费seo公司外包
  • wordpress的配置文件怎么写seo排名优化工具
  • 云服务器做网站要备案吗sem推广软件选哪家
  • 怎么选择合肥网站建设网络视频营销的案例
  • 中国软件园排名前十宁波谷歌seo
  • 中国水电建设集团网站机器人编程培训机构排名
  • h5网站价格方案seo快速优化软件网站
  • 旅游类网站建设方案竞价托管哪家专业
  • 电商购物网站建设如何将网站的关键词排名优化
  • 河北省城乡建设厅网站首页seo优化推广业务员招聘
  • url怎么做网站广告推广代运营公司
  • 石家庄网站建设网站建设推广途径有哪些
  • 知名wordpress架构网站培训课程网站
  • webapi做网站广告推广
  • 怎样注册一个自己的网站网站建设全网营销
  • 中国银行建设网站首页手机网站制作平台
  • 手机端网页设计规范广州seo工资
  • 网站策划书的意义百度服务电话在线人工
  • 珠江现代建设 杂志社网站上海网站制作公司
  • 网站流量多少做网盟写软文赚钱的平台都有哪些
  • 免费注册个人电子邮箱seo入门到精通
  • 手机网站如何做推广页面制作
  • 南昌定制网站开发营销推广渠道