首页 > 其他分享 >【分布式系统】之 分布式事务解决方案 Seata

【分布式系统】之 分布式事务解决方案 Seata

时间:2024-08-19 09:51:41浏览次数:13  
标签:事务 Seata 数据库 XA 模式 分布式系统 分布式

快速导航

  • 一、什么是分布式事务?
    • 什么是分布式?
    • 什么是事务?
  • 二、分布式事务面临的问题?
  • 三、Seata是什么?
    • 1、简述:
    • 2、Seata角色:
      • 以购买商品的业务逻辑为例:
      • 架构图
      • SEATA 的分布式交易解决方案:
    • 3、Seata模式:
    • 4、Seata支持的配置中心和注册中心

一、什么是分布式事务?

分布式事务,分开来讲就是分布式和事务。

什么是分布式?

分布式:是一种抽象规范,即分别部署在不同的服务器节点的模式

分布式包括:

  1. 不同功能的模块的分开部署
  2. 相同功能的模块基于高性能高并发高可用的集群部署

什么是事务?

事务:是一组原子性的执行过程,该过程要么全部执行成功,要么全部执行失败,不存在中间状态。

二、分布式事务面临的问题?

在分布式部署的场景下,出现的问题主要有:

  1. 数据一致性
  2. 数据可用性
  3. 分区容错性

CAP原理:

  1. C 一致性
  2. A 可用性
  3. P 分区容错性

在分布式环境下,总是会存在部分服务节点故障或数据同步时网络抖动等问题,这就将数据分成了新的和旧的两个部分,所以P是永远存在的。而若要保证C,则在发生数据分区后,必须加锁,保证数据先同步完成,然后再被使用,这样在这个时候,可用性A很明显是不能保证的。若是要保证A,则P分区的数据都可能被访问到,这时很明显是不符合一致性的原则,故一致性C是不能保证的。所有在分布式环境下,只能存在CP或者AP

BASE理论:

  1. BA 基本可用
  2. S 软状态
  3. E 最终一致性

三、Seata是什么?

1、简述:

描述:一款开源的分布式事务解决方案
愿景:致力于提供高性能和简单易用的分布式事务服务
提供:提供了AT、TCC、SAGA和XA四种事务模式

2、Seata角色:

  1. TC (Transaction Coordinator) - 事务协调者

    维护全局和分支事务的状态,驱动全局事务提交或回滚。

  2. TM (Transaction Manager) - 事务管理器:定义全局事务的范围

    开始全局事务、提交或回滚全局事务。

  3. RM (Resource Manager) - 资源管理器:

    管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

以购买商品的业务逻辑为例:

用户购买商品的业务逻辑。整个业务逻辑由 3 个微服务提供支持:

  1. 仓储服务:对给定的商品扣除仓储数量。
  2. 订单服务:根据采购需求创建订单。
  3. 帐户服务:从用户帐户中扣除余额。

架构图

在这里插入图片描述

SEATA 的分布式交易解决方案:

在这里插入图片描述

3、Seata模式:

ATTCCSAGAXA
优势1.一阶段完成直接提交事务,释放数据库资源,性能比较好。2.利用全局锁实现读写分离。3.没有代码侵入,框架自动完成回滚和提交完全不依赖底层数据库,能够实现跨数据库、跨应用资源管理,可以提供给业务方更细粒度的控制1.一阶段提交本地事务,无锁,高性能。2.事件驱动架构,参与者可异步执行,高吞吐 3.补偿服务易于实现1.事务资源(如数据库)可以保障从任意视角对数据的访问有效隔离,满足全局数据一致性。2.业务无侵入:和 AT 一样,XA 模式将是业务无侵入的,不给应用设计和开发带来额外负担。3.数据库的支持广泛:XA 协议被主流关系型数据库广泛支持,不需要额外的适配即可使用。
缺点1.两阶段之间属于软状态,属于最终一致。2.框架的快照功能会影响性能,但比XA模式要好得多是一种侵入式的分布式事务解决方案,需要业务系统自行实现 Try,Confirm,Cancel 三个操作,对业务系统有着非常大的入侵性,设计相对复杂。不保证隔离性XA prepare 后,分支事务进入阻塞阶段,收到 XA commit 或 XA rollback 前必须阻塞等待。事务资源长时间得不到释放,锁定周期长,而且在应用层上面无法干预,性能差。
使用场景TCC 模式是高性能分布式事务解决方案,适用于核心系统等对性能有很高要求的场景。1.业务流程长、业务流程多。2.参与者包含其它公司或遗留系统服务,无法提供 TCC 模式要求的三个接口适用于想要迁移到 Seata 平台基于 XA 协议的老应用,使用 XA 模式将更平滑,还有 AT 模式未适配的数据库应用。
数据源支持支持MySQL、Oracle、PostgreSQL、TiDB、MariaDB1.4.2 版本及之前:不依赖数据源。1.4.2版本之后,添加了TCC防悬挂措施,需要数据源支持不依赖数据源只支持实现了XA协议的数据库。包括MySQL、Oracle、PostgreSQL和MariaDB

4、Seata支持的配置中心和注册中心

  1. Nacos
  2. Apollo
  3. Etcd3
  4. Consul
  5. Zookeeper

标签:事务,Seata,数据库,XA,模式,分布式系统,分布式
From: https://blog.csdn.net/qq_22129643/article/details/140953643

相关文章

  • 分布式事务的两阶段提交和三阶段提交分别有什么优缺点?
    分布式事务的两阶段提交(2PC)和三阶段提交(3PC)是分布式系统中常用的事务管理协议,它们各自有优缺点。两阶段提交(2PC)流程:准备阶段(PreparePhase):协调者向所有参与者发送请求,询问是否可以提交事务。每个参与者执行本地事务操作,但不提交(仅预提交),并返回成功或失败的响应给协调者。......
  • 基于SpringBoot3框架-数据库乐观锁、悲观锁、Redis、Zookeeper分布式锁的简单案例实现
    1.分布式锁的定义分布式锁是一种在分布式系统中用来协调多个进程或线程对共享资源进行访问的机制。它确保在分布式环境下,多个节点(如不同的服务器或进程)不会同时访问同一个共享资源,从而避免数据不一致、资源竞争等问题。2.分布式锁的工作原理分布式锁的工作原理与单机锁......
  • Redis实现分布式锁
    Redis分布式锁是一种在分布式系统中协调多个进程对共享资源访问的同步机制。在单机系统中,可以使用传统的锁机制来保证同一时间只有一个线程访问某个资源。然而,在分布式系统中,由于多个进程可能在不同的服务器上运行,传统的锁机制就不再适用。这时就需要一种跨多个进程的锁机制,即......
  • 一文搞懂后端面试之数据库分布式事务【中间件 | 数据库 | MySQL | ACID】
    单库拆分为分库分表之后,一个巨大的挑战就是本地事务变成了分布式事务。事实上,即使没有分库分表,在微服务架构之下我们也还是会面临分布式事务的问题。前置知识分布式事务既可以是纯粹多个数据库实例之间的分布式事务,也可以是跨越不同中间件的业务层面上的分布式事务。前表......
  • Jenkins配置分布式构建环境——添加固定Agent并使用JNLP启动Agent详解
    1、概述在《Jenkins部署架构概述 》这篇博文中对Jenkins部署架构进行了讲解。对于分布式架构,Jenkins包括固态Agent和动态Agent两种方案。固定Agent(常用于虚拟机):Agent容器一直运行,任务构建完成后不会销毁,创建完成后将一直占用集群资源,配置过程较简单。动态Agent(常用于K8s):构建......
  • Spring Cloud Alibaba 集成分布式定时任务调度功能
    作者:千习背景简介定时任务是指在约定的时间,或者按照固定频率周期性执行的任务。在企业应用中,非用户行为发起的后台业务,一般都是通过定时任务来实现,常见场景如下:异步数据处理:比如先将订单入库,每分钟扫描未支付的订单做批处理。自动化运维:比如每小时清理一次数据库的历史记录。......
  • 分布式任务调度的架构与选型
    场景任务调度是指系统在约定的特定时刻自动去执行指定任务的过程。比如:某新闻App每天上午10点给用户推送最新新闻。某电商系统需要在每天上午10点,下午3点,晚上8点等不同适合发放一批优惠券。某银行系统需要在信用卡到期还款日的前三天每天进行短信提醒。某财务系统需要......
  • Redis 实现分布式锁
    目录Redis实现分布式锁及续约机制详解1、Redis分布式锁的基本实现2、引入守护线程[看门狗机制】Redis实现分布式锁及续约机制详解在分布式系统中,多个节点对同一资源的访问可能会产生竞争,为了解决这个问题,我们需要一种机制来保证同一时间内只有一个节点可以访问资源,......
  • 分布式知识总结(一致性Hash算法)
    文章收录在网站:http://hardyfish.top/文章收录在网站:http://hardyfish.top/文章收录在网站:http://hardyfish.top/文章收录在网站:http://hardyfish.top/一致性Hash算法假如有三台服务器编号node0、node1、node2,现在有3000万个key,希望可以将这些个key均匀的缓存到三台机......
  • 电商导购系统的数据一致性与分布式事务处理
    电商导购系统的数据一致性与分布式事务处理大家好,我是阿可,微赚淘客系统及省赚客APP创始人,是个冬天不穿秋裤,天冷也要风度的程序猿!在电商导购系统中,数据一致性与分布式事务处理是确保系统稳定运行的关键技术。本文将深入探讨电商导购系统中的数据一致性问题,并提出相应的分布......