0


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

在这里插入图片描述

                                                                          **💧 
  
   
    
     
      
      
        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 处理分布式事务

分布式事务是在微服务架构中常见的挑战之一。随着微服务的快速发展,保持数据一致性变得越来越重要。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-Service

Inventory-Service

。订单服务负责创建订单,库存服务负责扣减库存。当一个订单创建成功时,我们需要确保库存被正确扣减,否则需要回滚订单操作。**

以下是一个简化的示例:

// Order-Service@ServicepublicclassOrderService{@AutowiredprivateOrderRepository orderRepository;@AutowiredprivateInventoryServiceClient inventoryServiceClient;@GlobalTransactionalpublicvoidcreateOrder(Order order){// 创建订单
        orderRepository.create(order);// 调用库存服务扣减库存
        inventoryServiceClient.decreaseStock(order.getProductId(), order.getQuantity());}}// Inventory-Service@ServicepublicclassInventoryService{@AutowiredprivateInventoryRepository inventoryRepository;@TransactionalpublicvoiddecreaseStock(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,我们可以轻松处理微服务架构中的分布式事务问题,保证数据的一致性。


在这里插入图片描述


🐳结语

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

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


本文转载自: https://blog.csdn.net/qq_58035032/article/details/131434253
版权归原作者 微风撞见云 所有, 如有侵权,请联系我们删除。

“【Spring Cloud Alibaba Seata 处理分布式事务】——每天一点小知识”的评论:

还没有评论