seata 模式相关

news/2024/10/13 20:03:09

Seata解决分布式的方案

1AT模式 数据最终一致 AT模式使用起来更加简单,无业务侵入,性能更好

AT 模式是 Seata 创新的一种非侵入式的分布式事务解决方案,Seata 在内部做了对数据库操作的代理层,我们使用 Seata AT 模式时,实际上用的是 Seata 自带的数据源代理 DataSourceProxy,Seata 在这层代理中加入了很多逻辑,比如插入回滚 undo_log 日志,检查全局锁等。

2XA模式 通过保持数据库连接达到数据强一致性

在 Seata 定义的分布式事务框架内,利用事务资源(数据库、消息服务等)对 XA 协议的支持,以 XA 协议的机制来管理分支事务的一种 事务模式

与 Seata 支持的其它事务模式不同,XA 协议要求事务资源本身提供对规范和协议的支持,所以事务资源(如数据库)可以保障从任意视角对数据的访问有效隔离,满足全局数据一致性。此外的一些优势还包括:

  1. 业务无侵入:和 AT 一样,XA 模式将是业务无侵入的,不给应用设计和开发带来额外负担。
  2. 数据库的支持广泛:XA 协议被主流关系型数据库广泛支持,不需要额外的适配即可使用。

XA prepare 后,分支事务进入阻塞阶段,收到 XA commit 或 XA rollback 前必须阻塞等待。事务资源长时间得不到释放,锁定周期长,而且在应用层上面无法干预,性能差。

3 SAGA 模式 Saga 模式是 SEATA 提供的长事务解决方案,在 Saga 模式中,业务流程中每个参与者都提交本地事务,当出现某一个参与者失败则补偿前面已经成功的参与者,一阶段正向服务和二阶段补偿服务都由业务开发实现。

  • 一阶段提交本地事务,无锁,高性能

  • 事件驱动架构,参与者可异步执行,高吞吐

  • 补偿服务易于实现

  • 不保证隔离性

4 TCC模式 TCC 模式是 Seata 支持的一种由业务方细粒度控制的侵入式分布式事务解决方案,是继 AT 模式后第二种支持的事务模式,最早由蚂蚁金服贡献。其分布式事务模型直接作用于服务层,不依赖底层数据库,可以灵活选择业务资源的锁定粒度,减少资源锁持有时间,可扩展性好,可以说是为独立部署的 SOA 服务而设计的。

TCC 完全不依赖底层数据库,能够实现跨数据库、跨应用资源管理,可以提供给业务方更细粒度的控制。

TCC 是一种侵入式的分布式事务解决方案,需要业务系统自行实现 Try,Confirm,Cancel 三个操作,对业务系统有着非常大的入侵性,设计相对复杂。

Seata的AT模式的执行流程

1 seata 的at 模式执行流程:

首先每个事务会被注册到tm上进行事务的管理,之后业务进行之后,rm事务资源管理器在执行完sql后会直接提交同时一阶段:业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源

在数据库中的undolog中会有之前数据的快照,之后向tc事务协调者报告事务状态,在执行完后,

二阶段:

  • 提交异步化,非常快速地完成。
  • 回滚通过一阶段的回滚日志进行反向补偿。

tm会根据事务状态来决定是否回滚或全局的提交,提交就会去删除undolog中的快照,如果是回滚就会用undolog中的快照来进行回滚。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/71180.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

基于VL812芯片的USB 3.0Hub设计

前言(设计初衷) 由于自己笔记本插接口不多,在网上购买了一款USB扩展坞,但平时要往返宿舍和工位,书包要放课本、笔记本等,不想再增加重量就动手搞一个放工位上方便。自己动手,丰衣足食(哈哈哈哈其实是自己不想包里放太多东西,同时也想练练画板),接下来就开始进入我们…

LLM中词向量的表示和词嵌入的一些疑问

LLM中词向量的表示和词嵌入的一些疑问 词向量的一些特点 在3blue1brown的视频【官方双语】GPT是什么?直观解释Transformer | 深度学习第5章_哔哩哔哩_bilibili中, 在15min左右介绍了LLM的词嵌入的过程. 其中提到mother的词向量减去father的词向量, 会近似于women的词向量-man的…

2024-2025-1 20241304 《计算机基础与程序设计》第3周学习总结

2024-2025-1 20241304 《计算机基础与程序设计》第3周学习总结 作业信息这个作业属于哪个课程 <[2024-2025-1-计算机基础与程序设计](https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP>)这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK0…

DrawPad 离线注册

DrawPad 离线注册 目录DrawPad 离线注册reg_dialog_549414parpms==>callbackreg_5486C3do_reg_5489A4check_key_547842calc_idkey_54AB37calc_54A9A5transform_54A8FFpy 仅分析离线注册,联网时注册会有网络校验regcheck reg_dialog_549414 定位注册对话框 char __stdcall…

2024-2025-1 20241415 《计算机基础与程序设计》第三周学习总结

2024-2025-1 20241415 《计算机基础与程序设计》第三周学习总结 作业信息这个作业属于哪个课程 <班级的链接>(2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标 <温习巩固本…

视野修炼-技术周刊第105期 | AI驱动全栈应用开发

① bolt - AI驱动一站式的应用开发 ② WebChat - 同网页在线聊天 ③ 一年一度的 js13kGames结果公布 - 13KB 大小的游戏 ④ 新的 CSS logo? ⑤ TS 类型体操练习 ⑥ 100+ 免费独特的 SVG 图标 ⑦ TutorialKit - 交互式教程创建欢迎来到第 105 期的【视野修炼 - 技术周刊】,下面…

Centos7---k8s集群 20241013

目录一、硬件准备(虚拟主机) 二、环境准备1、所有机器关闭防火墙 2、所有机器关闭selinux 3、所有机器关闭swap 4、所有机器上添加主机名与ip的对应关系 5、在所有主机上将桥接的ipv4流量传递到iptables的链三、为所有节点安装docker 四、集群部署1、为所有节点修改仓库,安装…

rsa基本攻击手法总结大全(还在更新中)

一些关于分解n的常用手法: 1.最简单的就是直接使用yafu分解 2.费马分解然后我们令p=a+b,q=a-b,此时n=\(a^{2}-b^{2}\),那么\(b^2=a^2-n\),那么\(b=\sqrt{a^2-n}\),我们就让a=\(\sqrt{n}\)开始然后慢慢加1开始遍历,直到找到能够使得\(a^2-n\)能够为一个平方数即可得到我们的b…