3分钟带你了解下分布式事务TCC与SAGA

这篇具有很好参考价值的文章主要介绍了3分钟带你了解下分布式事务TCC与SAGA。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章首发地址

TCC 事务

TCC(Try-Confirm-Cancel)是一种分布式事务方案,它通过将事务拆分成“尝试(Try)”、“确认(Confirm)”和“取消(Cancel)”三个阶段来实现。

在TCC中,每个参与者都需要实现这三个阶段来协调分布式事务的执行。具体流程如下:

  • 尝试(Try)阶段:在这一阶段中,参与者会预留需要参与事务的资源,并锁定这些资源。如果所有参与者都成功执行了尝试操作,则事务进入确认阶段。如果有任何一个参与者执行失败,则事务进入取消阶段。
  • 确认(Confirm)阶段:在这一阶段中,参与者将之前预留的资源提交到事务中心,完成事务的提交操作。如果所有参与者都成功执行确认操作,则事务最终提交成功。如果有任何一个参与者执行失败,则事务进入取消阶段
  • 取消(Cancel)阶段:在这一阶段中,参与者释放之前预留的资源,并撤销之前执行的操作。如果所有参与者都成功执行取消操作,则事务最终取消成功。如果有任何一个参与者执行失败,则事务无法取消,需要手动进行补偿操作。
  • TCC的优点是可以保证强一致性和数据完整性,缺点是实现难度较高,需要对每个参与者进行修改。因此,它适用于需要保证事务强一致性和数据完整性的场景,例如金融和电商领域。

在实现TCC时,可以使用分布式事务管理器来协调各个参与者的操作,例如阿里巴巴的Seata和美团的TCC-transaction。这些分布式事务管理器提供了可靠的分布式事务协调功能,可以大大简化TCC的实现。

SAGA事务

SAGA(Saga)是一种分布式事务方案,它通过使用长事务(Long Transaction)和补偿事务(Compensating Transaction)来保证分布式环境下事务的一致性。

在SAGA中,每个参与者是一个服务,通过发送和接收消息来协调事务的执行。具体流程如下:

  1. 事务发起方(Saga orchestrator)向参与者发送执行请求。
  2. 参与者接收到请求,并执行相关的操作。
  3. 如果所有参与者成功执行了操作,则事务进入提交(Commit)阶段,所有参与者将数据提交到数据存储中。
  4. 如果任何一个参与者执行失败,则事务进入回滚(Rollback)阶段,所有参与者将执行补偿事务,将之前的操作撤销。补偿事务需要与主要事务保持一致,例如删除一条记录的补偿事务就是插入一条记录。
  5. 如果所有参与者都成功执行了补偿事务,则事务最终回滚成功。

SAGA的优点是实现相对简单且易于扩展,缺点是可能会出现部分提交的情况,需要通过补偿机制来保证数据完整性。因此,它适用于需要保证最终一致性和容错性的场景,例如物流和电影票务领域。

在实现SAGA时,可以使用分布式事务管理器来协调各个参与者的操作,例如Apache ServiceComb Saga和华为的ServiceStage。这些分布式事务管理器提供了可靠的分布式事务协调功能,可以大大简化SAGA的实现。

适用场景

TCC是一种通过将事务拆解成Try、Confirm和Cancel三个步骤来实现的分布式事务方案。在TCC中,每个参与者都需要实现这三个步骤来协调分布式事务的执行。Try阶段用于预留资源和锁定资源,Confirm阶段用于提交资源,Cancel阶段用于释放资源。TCC的优点是可以保证强一致性和数据完整性,缺点是实现难度较高,且需要对每个参与者进行修改。

SAGA是一种基于消息的分布式事务方案,通过使用长事务和补偿事务来保证分布式环境下的事务一致性。在SAGA中,每个参与者都是一个服务,通过发送和接收消息来协调事务的执行。如果一个参与者执行失败,它会发送一条补偿消息来撤销之前的操作,从而保持事务的一致性。SAGA的优点是实现相对简单且易于扩展,缺点是可能会出现部分提交的情况,需要通过补偿机制来保证数据完整性。

总之,TCC适用于需要保证强一致性和数据完整性的场景,而SAGA适用于需要保证最终一致性和容错性的场景。具体选择哪种方案需要根据具体业务场景和技术架构来进行评估和决策。文章来源地址https://www.toymoban.com/news/detail-621239.html

到了这里,关于3分钟带你了解下分布式事务TCC与SAGA的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java微服务分布式事务框架seata的TCC模式

    🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 专栏 描述 Java项目实战 介绍Java组件安装、使用;手写框架等 Aws服务器实战 Aws Linux服务器上操作nginx、git、JDK、Vue Jav

    2024年03月23日
    浏览(41)
  • 《微服务实战》 第三十章 分布式事务框架seata TCC模式

    第三十章 分布式事务框架seata TCC模式 第二十九章 分布式事务框架seata AT模式 本章节介绍分布式事务框架seata TCC模式,上一章节介绍seata以及集成到Springboot、微服务框架里。 一个分布式的全局事务,整体是 两阶段提交 的模型。全局事务是由若干分支事务组成的,分支事务要

    2024年02月12日
    浏览(44)
  • 【计算系统】5分钟了解超算,高性能计算,并行计算,分布式计算,网格计算,集群计算以及云计算的区别

    超级计算机(Supercomputer)是一种计算力极强的计算机,学术界通常称这一领域为高性能计算(High-Performance Computing)。超级计算机主要为最顶尖的科学研究服务,包括核聚变模拟、石油勘探、量子力学、气候模拟、癌症研究、基因组学、分子动力学、飞机和航天器空气动力学

    2024年02月06日
    浏览(40)
  • 分布式:一文吃透分布式事务和seata事务

    什么是事务 事务是并发控制的单位,是用户定义的一个操作序列。 事务特性 原子性(Atomicity): 事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做。 一致性(Consistency): 事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性

    2024年02月07日
    浏览(57)
  • 【分布式事务】Seata 开源的分布式事务解决方案

    Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 阿里巴巴作为国内最早一批进行应用分布式(微服务化)改造的企业,很早就遇到微服务架构下

    2024年02月02日
    浏览(51)
  • 【分布式】分布式事务:2PC

    分布式事务的问题可以分为两部分: 并发控制 concurrency control 原子提交 atomic commit 分布式事务问题的产生场景:一份数据被分片存在多台服务器上,那么每次事务处理都涉及到了多台机器。 可序列化(并发控制): 定义了事务执行的正确性 真正地并行执行事务,获得真正的

    2024年02月09日
    浏览(45)
  • Redis分布式锁和分布式事务

    Redis分布式锁和分布式事务 一、Redis分布式锁 1.1 watch和事务实现分布式锁 原理是通过watch来观察一个变量,一个线程在操作的时候,其他线程会操作失败,相当于乐观锁。 1.2 setnx实现分布式锁 原理是通过setnx设置一个变量,设置成功的线程抢到锁,执行相关的业务,执行完毕

    2024年02月09日
    浏览(41)
  • 【分布式】java实现分布式事务的五种方案

    用户支付完成会将支付状态及订单状态保存在订单数据库中,由订单服务去维护订单数据库。由库存服务去维护库存数据库的信息。下图是系统结构图: 如何实现两个分布式服务(订单服务、库存服务)共同完成一件事即订单支付成功自动减库存,这里的关键是如何保证两个

    2024年04月11日
    浏览(47)
  • 微服务·数据一致-事务与分布式事务

    事务是计算机科学和数据库管理中的一个关键概念,用于确保数据的一致性和可靠想。事务管理是大多数应用程序和数据库系统中不可或缺的一部分。分布式事务扩展了事务的概念,用于多个分布式系统和服务的数据一致性管理。本调查报告将深入探讨事务和分布式事务的概

    2024年02月09日
    浏览(45)
  • 【高级篇】分布式事务

    本地事务,也就是传统的 单机事务 。在传统数据库事务中,必须要满足四个原则: 分布式事务 ,就是指不是在单个服务或单个数据库架构下,产生的事务,例如: 跨数据源的分布式事务 跨服务的分布式事务 综合情况 在数据库水平拆分、服务垂直拆分之后,一个业务操作

    2024年02月08日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包