首页 > 其他分享 >Seata简介

Seata简介

时间:2024-09-20 22:54:45浏览次数:11  
标签:事务 Seata 简介 nacos 提交 RM TC seata

Seata的架构

  • TC(Transaction Coordintor)-事务协调者:维护全局和分支事务的状态,协调全局事务提交或者回滚。
  • TM:(Transaction Manager)-事务管理器:定义全局事务的范围,开始全局事务,提交和回滚事务
  • RM(Resource Manager)-资源管理器:管理分支事务,与TC交谈以注册分支事务和报告分支事务的状态

微服务整合seata(前提是你已经部署好了seata)

引入依赖

<!--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 # 注册中心类型 nacos
    nacos:
      server-addr: 192.168.203.130:8848 # nacos地址
      namespace: "" # namespace,默认为空
      group: DEFAULT_GROUP # 分组,默认是DEFAULT_GROUP
      application: seata-server # seata服务名称
      username: nacos
      password: nacos
  tx-service-group: zxm # 事务组名称
  service:
    vgroup-mapping: # 事务组与tc集群的映射关系
      zxm: "default"

然后去项目中的bootstrap.yaml文件中引入shared-seata.yaml共享配置

XA模式:

一阶段的工作:

  1. RM注册分支事务到TC
  2. Rm执行分支业务sql但不提交
  3. RM报告执行状态到TC

二阶段的工作:

  • TC检测各分支事务执行状态

                a. 如果都成功,通知所有RM提交

                b. 如果有失败,通知所有RM回滚事务

  • RM接收TC指令,提交或者回滚事务

Java中如何实现?

非常简单,第一步,在application.yaml中

seata:
  data-source-proxy-mode: XA #开启数据源代理的XA模式

第二步:给发起全局事务的入口方法添加@GlobalTransactional注解,再给远程调用的方法上加上@Transactional注解


AT模式:Seata主推的是AT模式,AT模式同样是分阶段提交的事务模型,不过弥补了XA模型中资源锁定周期过长的缺陷

阶段一RM的工作:

  • 注册分支事务
  • 记录undo-log(数据快照)
  • 执行业务sql并提交
  • 报告事务状态

阶段二提交时RM的工作:

  • 删除undo-log即可

阶段二回滚时RM的工作:

  • 根据undo-log恢复数据到更新前

在Java中使用AT模式:

第一,首先在每一个微服务项目中准备一个undo-log表,就是seata-at.sql

第二,application.yaml中

seata:
  data-source-proxy-mode: AT #开启数据源代理的AT模式

标签:事务,Seata,简介,nacos,提交,RM,TC,seata
From: https://blog.csdn.net/iwjijksw/article/details/142392419

相关文章

  • HTPX 简介:适用于 JavaScript 和 Nodejs 的轻量级多功能 HTTP 客户端
    作为开发人员,我们的web应用程序通常需要一个可靠且高效的http客户端,无论我们是在浏览器中使用javascript还是在服务器端使用node.js进行构建。这就是我创建htpx的原因——一个强大的轻量级解决方案,旨在简化http请求,同时为现代开发提供一系列功能。在本文中,我将引导您......
  • 信息系统监理师简介(信息系统监理师是什么?有什么用?考什么?)
    一、信息系统监理师是什么信息系统监理师,属于计算机技术与软件(中级)专业技术资格。通过本考试的合格人员能掌握信息系统工程监理的知识体系、完整的监理方法、手段和技能;能运用信息技术知识和监理技术方法编写监理大纲、监理规划和监理细则等文档;能有效组织和实施监理项目;具有工程师......
  • 数据库系统工程师简介(数据库系统工程师是什么?有什么用?考什么?)
    一、数据库系统工程师是什么数据库系统工程师,属于计算机技术与软件(中级)专业技术资格。通过本考试的合格人员能参与应用信息系统的规划、设计、构建、运行和管理,能按照用户需求,设计、建立、运行、维护高质量的数据库和数据仓库;作为数据管理员管理信息系统中的数据资源,作为数据库管理......
  • 信息系统管理工程师简介(信息系统管理工程师是什么?有什么用?考什么?)
    一、信息系统管理工程师是什么信息系统管理工程师,属于计算机技术与软件(中级)专业技术资格。通过本考试的合格人员能对信息系统的功能与性能、日常应用、相关资源、运营成本、安全等进行监控、管理与评估,并为用户提供技术支持;能对信息系统运行过程中出现的问题采取必要的措施或对系统......
  • D23 kubernetes 工作负载资源对象-DaemonSet{简介}
    1、DaemonSet简介DaemonSet资源用于在集群中的每个节点上运行一个pod副本,具有以下特点-在每个节点上运行一个pod-当向集群中加入一个新节点或者从集群中移除一个节点时,DaemonSet会自动在新节点上启动一个pod或在移除的节点上删除pod-可以使用节点选择器或亲和性来定义pod......
  • http REST 简介
    REST简介REST代表表现层状态转移(REpresentationalStateTransfer),由RoyFielding在他的论文中提出。REST是一种软件架构风格,不是技术框架,REST有一系列规范,满足这些规范的API均可称为RESTfulAPI。REST规范中有如下几个核心:1,REST中一切实体都被抽象成资源,每个......
  • Java8的Optional简介
    文章目录环境背景方法1:直接获取方法2:防御式检查方法3:Java8的Optional概述map()测试flatMap()测试总结参考注:本文主要参考了《Java8实战》这本书。环境Ubuntu22.04jdk-17.0.3.1(兼容Java8)背景现有Insurance、Car、Person类,定义如下:Insurance:publ......
  • k8s 中的 Ingress 简介【k8s 系列之三】
    〇、前言前边已经介绍了k8s中的相关概念和Service,本文继续看下什么是Ingress。Ingress的重要性不言而喻,它不仅统一了集群对外访问的入口,还提供了高级路由、七层负载均衡、SSL终止等关键功能,同时支持动态配置更新、灰度发布等高级特性。下文将进行详细介绍。一、关于Ingr......
  • 机器人领域的国际会议简介 机器人学术会议
    JCR分区是什么意思?JCR分区,全称为JournalCitationReports分区,是由科睿唯安(Clarivate)发布的期刊引证报告。它使用期刊的影响因子(IF)来评价期刊的影响力,并将期刊分为不同的区域。JCR分区包括254个学科小类,每个小类中的期刊根据影响因子高低被平均分为四个区:Q1、Q2、Q3和Q4。其......
  • 网络变压器简介、功能、分类、应用组成等综合概述-沃虎电子
    网络变压器:网络变压器是在有限局域网中各级网络设备中都具备的变压器元件。网络变压器(EthernetTransformer,也称数据汞模块,是网卡电路中不可或缺的部分,它主要包含中间抽头电容、变压器、自耦变压器、共模电感。其又叫网络隔离变压器、以太网变压器、网络滤波器、网口变压......