ZHE知识库 ZHE知识库
首页
JAVA
中间件
易学
小说漫画
其他
Source (opens new window)
首页
JAVA
中间件
易学
小说漫画
其他
Source (opens new window)
  • JUC入门笔记
  • JVM入门笔记
  • Java微服务

    • 服务发现
    • 远程调用
    • 负载均衡
    • 服务保护
    • 网关组件
    • 分布式事务
      • Seata
  • Netty笔记
  • Java
  • Java微服务
张涵哲
2024-09-24
目录

分布式事务

# Seata

Seata 服务端配置文件

务必配置seata.registry属性,将 seata 注册到注册中心,SpringCloud 项目中 seata 的分布式事务只对微服务环境下的服务生效

seata:
  config:      # 控制 Seata 如何加载配置文件,可以让 seata 同其他微服务一样在配置中心拉取配置文件
    type: nacos      # 默认为 file,表示使用本地配置文件
    nacos:
      server-addr: 127.0.0.1:8848
      #group: 'SEATA_GROUP'
      #namespace: ''
      #username: 'nacos'
      #password: 'nacos'
  registry:    # 控制 Seata 使用哪个服务注册中心,分布式事务只会对注册中心内的微服务生效
    type: nacos      # 默认为 file,表示不是用注册中心
    nacos:
#      application: seata-server
      server-addr: nacos:8848
#      group: SEATA_GROUP
#      namespace:
#      cluster: default
      username: nacos
      password: nacos
  store:       # 控制事务数据如何持久化
    mode: file       # 默认为 file,表示将数据存储在本地文件中

Maven依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>

Seata的三个角色:

  1. TC事务协调者:维护全局和分支事务的状态,协调全局事务提交或回滚,TC为外部服务需要单独部署,就是 Seata 服务
  2. TM事务管理者:定义全局事务的范围,负责开始全局事务,提交或回滚全局事务
  3. RM资源管理器:与TC交互注册分支事务以及报告分支事务的状态

Seata 支持多种分布式事务处理模式:

  1. AT模式(默认事务模式,Seata 推荐的模式)
    • AT模式需要在库中创建undo_log表保存一份数据修改之前的快照
    • AT模式下每个微服务都有自己的事务,请求链路中服务 b 的业务没有处理完成并不影响服务 a 的提交
    • 请求链路中如果某一环节出现问题,会读取undo_log表保存的快照数据,对已修改的数据进行补偿恢复
    • 优点是效率高,单个事务执行完成后直接提交无需等待整条链路执行完成,缺点是中间可能会出现数据不一致,仅保证最终数据一致
  2. XA模式:
    • 当前微服务操作完成后并不提交事务,待所有事务执行完成后通知TC结束全局事务,TC通过每个分支事务的状态决定提交还是回滚
    • 优点是绝对安全,且常用的数据库都支持回滚方式恢复数据,缺点是会长期占用数据库所导致执行效率慢
  3. TTC模式:
    • TTC模式不同于
上次更新: 2024-12-06, 17:32:54
网关组件
Netty笔记

← 网关组件 Netty笔记→

Theme by Vdoing | Copyright © 2023-2025 Zhe | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式