【Spring Cloud Alibaba Seata 处理分布式事务】——每天一点小知识

news/2024/12/1 0:24:47/

在这里插入图片描述

                                                                              💧 S p r i n g C l o u d A l i b a b a S e a t a 处理分布式事务 \color{#FF1493}{Spring Cloud Alibaba Seata 处理分布式事务} SpringCloudAlibabaSeata处理分布式事务💧          


🌷 仰望天空,妳我亦是行人.✨
🦄 个人主页——微风撞见云的博客🎐
🐳 《数据结构与算法》专栏的文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺
💧 《Java学习笔记》专栏的文章是本人在Java学习中总结的一些知识点~ 💐
🥣 《每天一点小知识》专栏的文章可以丰富你的知识库,滴水成河~ 🌊
🪁 希望本文能够给读者带来一定的帮助~🌸文章粗浅,敬请批评指正!🐥


文章目录

  • 🐳Spring Cloud Alibaba Seata 处理分布式事务
    • 分布式事务问题
    • Seata 简介
    • Seata-Server 安装
    • 实战小案例
    • TC/TM/RM 三个组件
    • AT 模式如何做到对业务的无侵入
    • 总结
  • 🐳结语


🐳Spring Cloud Alibaba Seata 处理分布式事务

分布式事务是在微服务架构中常见的挑战之一。随着微服务的快速发展,保持数据一致性变得越来越重要。Spring Cloud Alibaba Seata 是一个开源的分布式事务解决方案,它提供了一套完整的工具和框架,用于管理和协调分布式事务。

分布式事务问题

在微服务架构中,每个服务通常都有自己的数据库。当一个业务操作涉及到多个服务时,就需要保证这些操作要么全部成功,要么全部失败,以保持数据的一致性。然而,传统的本地事务机制无法直接应用于分布式环境,因为分布式事务面临网络延迟、节点故障和并发访问等挑战。


Seata 简介

Seata 是由阿里巴巴开源的分布式事务解决方案。它提供了一个简单而强大的机制来管理和协调分布式事务。Seata 主要由三个核心组件组成:

  • TC (Transaction Coordinator): TC 是事务协调器,负责协调并管理分布式事务的提交和回滚。
  • TM (Transaction Manager): TM 是事务管理器,负责事务的开始、提交和回滚操作。
  • RM (Resource Manager): RM 是资源管理器,负责管理和协调参与分布式事务的各个资源。

在这里插入图片描述

Seata-Server 安装

首先,我们需要安装 Seata-Server,它是 Seata 的服务端组件。您可以按照以下步骤进行安装:

  1. 下载 Seata-Server 压缩包并解压。
  2. 进入解压后的目录,修改 conf/registry.conf 文件中的注册中心配置,例如使用 Nacos 作为注册中心。
  3. 修改 conf/file.conf 文件中的事务日志存储配置。
  4. 运行 bin/seata-server.sh(Linux/macOS)或 bin/seata-server.bat(Windows)启动 Seata-Server。

实战小案例

让我们通过一个简单的示例来演示如何在 Spring Cloud Alibaba 中使用 Seata 处理分布式事务。

假设我们有两个微服务:Order-ServiceInventory-Service。订单服务负责创建订单,库存服务负责扣减库存。当一个订单创建成功时,我们需要确保库存被正确扣减,否则需要回滚订单操作。

以下是一个简化的示例:

// Order-Service@Service
public class OrderService {@Autowiredprivate OrderRepository orderRepository;@Autowiredprivate InventoryServiceClient inventoryServiceClient;@GlobalTransactionalpublic void createOrder(Order order) {// 创建订单orderRepository.create(order);// 调用库存服务扣减库存inventoryServiceClient.decreaseStock(order.getProductId(), order.getQuantity());}
}// Inventory-Service@Service
public class InventoryService {@Autowiredprivate InventoryRepository inventoryRepository;@Transactionalpublic void decreaseStock(Long productId, int quantity) {// 扣减库存inventoryRepository.decreaseStock(productId, quantity);}
}

在上述示例中,我们使用了 @GlobalTransactional 注解标记了 createOrder 方法,表示该方法是一个分布式事务的入口。当 createOrder 方法执行时,Seata 将自动创建一个分布式事务,并协调两个服务的事务操作。

TC/TM/RM 三个组件

Seata 的 TC、TM 和 RM 组件在示例中起着关键作用。以下是这些组件的详细解释:

  • TC (Transaction Coordinator): TC 组件负责协调并管理分布式事务的提交和回滚。它接收来自 TM 的事务操作请求,并与 RM 协同工作来保持事务的一致性。

  • TM (Transaction Manager): TM 组件负责事务的开始、提交和回滚操作。在示例中,@GlobalTransactional 注解标记的方法会由 TM 来处理。

  • RM (Resource Manager): RM 组件负责管理和协调参与分布式事务的各个资源。在示例中,Order-Service 和 Inventory-Service 分别充当了 RM 的角色。

AT 模式如何做到对业务的无侵入

Seata 采用了 AT (Auto-Transfer) 模式来实现对业务的无侵入。AT 模式是一种基于数据库的分布式事务解决方案。Seata 通过在分布式事务中记录和回放 SQL 日志的方式,来确保分布式事务的原子性和一致性。

在示例中,@GlobalTransactional 注解将自动开启一个分布式事务,并在需要的时候将相关的数据库操作纳入到事务管理中。这种方式对业务代码是无侵入的,您可以像普通的本地事务一样编写代码,而无需关心分布式事务的处理细节。

总结

Spring Cloud Alibaba Seata 是一个功能强大的分布式事务解决方案,它提供了对分布式事务的管理和协调支持。通过使用 Seata,我们可以轻松处理微服务架构中的分布式事务问题,保证数据的一致性。


在这里插入图片描述


🐳结语

🐬初学一门技术时,总有些许的疑惑,别怕,它们是我们学习路上的点点繁星,帮助我们不断成长。

🐟积少成多,滴水成河。文章粗浅,希望对大家有帮助!


http://www.ppmy.cn/news/622022.html

相关文章

windows10密钥激活失败 0x80072efe

window10(专业版)正版密钥激活失败,错误代码:0x80072efe. 首先检查密钥是否输错,在没有输错和网络没有问题的情况下,使用正版光盘里面的激活密钥激活系统,出现激活失败无法激活,有时…

win7激活提示错误代码0x80072EE2的最可行解决办法

很多同学在激活win7旗舰版,专业版和家庭版的时候遇到过提示错误代码0x80072EE2的困难,小编经过几次周折,终于完美解决问题,下面小编就把相关经验为大家分享一下。一,首先保证你的密钥是可用的,如果密钥失效…

软件测试面试题(完整版)

1、B/S架构和C/S架构区别 B/S 只需要有操作系统和浏览器就行,可以实现跨平台,客户端零维护,维护成本低,但是个性化能力低,响应速度较慢 C/S响应速度快,安全性强,一般应用于局域网中&#xff0c…

漏洞分析|死磕Jenkins漏洞回显与利用效果

0x01 背景 近期我们发起了一个Goby漏洞挑战赛的活动,在活动期间收到了大量的反馈信息,延伸出一系列在编写POC漏洞检测与利用中考虑场景不全的问题,我们针对发现的各种场景用市面上常见的工具进行了一些列的对比工作,发现市面上工…

20200222在ubuntu20.04下编译全志R16的tinav3.0.4成功

20200222在ubuntu20.04下编译全志R16的tinav3.0.4成功(烧录/运行的任何问题,概不负责!^_) 2020/2/22 22 17:48 全志R系列的Tina系统官方推荐使用Ubuntu12.04编译,不过Ubuntu12.04的LTS生命支持周期结束了。 Ubuntu14.0…

ERP的前世今生

原题目为: ORACLE ERP 的前世今生 公司被国航收购以后,新的财务总监发出了ORACLE上线的命令,听到这个消息,觉得这个财务总监还是比较务实的,还是想要干一些事情,比起那些只会耍官腔,只会耍口头…

oracle erp

2019独角兽企业重金招聘Python工程师标准>>> 一个伟大的公司必有一个伟大的产品。如果说数据库是ORACLE在上世纪最后二十年赖以起家并奠定江湖地位的旗舰产品,那么,企业应用产品(或曰ERP)则毫无疑问是ORACLE在本世纪初…

Chrome OS 现可运行Android应用 仅限特定机型

许多Chromebook用户早就梦想着有一天他们可以在自己的机器上运行Android应用。现在,这一天终于到来,谷歌发布了Chrome操作系统一个新的稳定版本,提供访问整个Play商店的能力。不幸的是,仍然有一个问题。这个更新仅提供给两个最新的…