探索TCC:释放高可用性和弹性事务的潜力

news/2024/12/12 13:18:01/

1、TCC简介

分布式事务是指在分布式系统中,多个服务之间需要保证数据的一致性和完整性的场景。传统的单机事务无法满足分布式系统的需求,因此需要引入一种新的事务模型来解决分布式事务问题。

TCC(Try-Confirm-Cancel)是一种基于补偿机制的分布式事务模型,它将一个分布式事务拆分为三个阶段:Try、Confirm和Cancel。每个参与者(服务)都需要提供这三个阶段对应的业务逻辑,以保证在不同的情况下能够达到数据的最终一致性。

  • Try阶段:在这个阶段,每个参与者尝试执行业务操作,并预留必须的业务资源,例如锁定库存、冻结账户余额等。如果所有参与者都成功执行了Try操作,则进入下一个阶段;否则,执行Cancel操作,释放预留资源,回滚事务。
  • Confirm阶段:在这个阶段,每个参与者确认执行业务操作,并提交预留资源,例如扣减库存、扣款账户余额等。如果所有参与者都成功执行了Confirm操作,则事务完成;否则,执行Cancel操作,释放预留资源,回滚事务。
  • Cancel阶段:在这个阶段,每个参与者取消执行业务操作,并释放预留资源,例如解锁库存、解冻账户余额等。这个阶段只有在Try或Confirm失败时才会触发。

TCC模型的优点是:

  • 无需依赖第三方中间件或数据库来实现分布式事务,降低了系统复杂度和成本。
  • 无需锁定全局资源,提高了系统的并发性能和可用性。
  • 适用于各种类型的业务场景,只要能够定义出清晰的Try、Confirm和Cancel逻辑。

TCC模型的缺点是:

  • 需要开发人员手动编写三个阶段的业务逻辑,并保证其正确性和一致性,增加了开发难度和维护成本。
  • 需要考虑各种异常情况和边界情况,并提供相应的补偿策略和重试机制,增加了系统复杂度和风险。
  • 需要引入一个TCC分布式事务框架来管理和协调各个参与者的状态和行为,例如国内开源的ByteTCC、Himly、TCC-transaction。

2、支持TCC的中间件

以下是一些支持TCC的流行事务中间件:

  1. Atomikos: Atomikos是一个Java事务管理器(TM),提供了对TCC事务模型的支持。它可以与Spring等框架集成,并提供了可靠的分布式事务管理能力。
  2. Narayana: Narayana是JBoss事务管理器(TM)的开源版本,支持TCC事务模型。它具有高度可扩展性和可靠性,可以与各种Java应用程序集成。
  3. Seata: Seata是一个开源的分布式事务解决方案,支持TCC模型和其他事务模型。它提供了高性能和高可用性的分布式事务管理能力,并可以与Spring Cloud、Dubbo等微服务框架无缝集成。

  1. ByteTCC: ByteTCC是一个轻量级的TCC事务中间件,适用于高并发场景。它提供了简单易用的API,并且支持自动回滚和恢复功能。

这些事务中间件都具有各自的特点和适用场景,可以根据具体需求选择合适的中间件来支持TCC事务模型。此外,一些主流的数据库也提供了自身的分布式事务解决方案,例如MySQL的XA事务和Oracle的Global Transaction Services(GTS)等,可以根据具体数据库选择相应的解决方案。

3、TCC相关问题

如果发现某个服务的Cancel或者Confirm一直没成功,会不停的重试调用他的Cancel或者Confirm逻辑,务必要他成功。

===================================

如果文章对你有帮助,请不要忘记加个关注、点个赞!


http://www.ppmy.cn/news/581581.html

相关文章

使用自定义 C++ 运算符扩展 TorchScript

使用自定义 C 运算符扩展 TorchScript PyTorch 1.0 版本向 PyTorch 引入了一种新的编程模型,称为 TorchScript 。 TorchScript 是 Python 编程语言的子集,可以通过 TorchScript 编译器进行解析,编译和优化。 此外,已编译的 Torch…

PSCC安装字体

下载好字体后,将文件复制到C:\Windows\Fonts即可

ps 2020更新啦 安装包

Photoshop是Adobe公司的王牌产品,它是一款图像处理软件,在图形图像处理领域拥有毋庸置疑的权威。无论是平面广告设计、室内装潢,还是处理个人照片,Photoshop都已经成为不可或缺的工具。随着近年来个人电脑的普及,使用P…

PS设计字体

PS设计字体 姓名:蒋林松 日期:2019年5月3日 大家看到这个标题就会在想它到底设计的是什么字体呢,要是学会了我就可以那我设计的字体去炫耀,其实呢我们也是没事做就在看ps里面那些工具有什么功能,我玩了半天才知道有一个…

【PS】字体

–PS制作字体– 模糊的(创建之初用小像素 有锯齿,感觉模糊) 清晰的(创建之初用大像素最后改成小像素,显示清晰) 操作步骤: 本文字体用的是新魏字体 先新建一个大一些像素的PNG透明格式的图层(以便于缩小到…

数据库信息速递 DataStax与谷歌合作将向NoSQL AstraDB引入向量搜索技术

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

如何给photoshop cc 安装字体

给photoshop cc安装字体库需要先下载 》》解压 》》之后选中字体,右键, 点击”安装”即可: 重新打开photoshop cc 软件,软件会自动识别新安装的字体

ps字体怎么安装

经常有新手在论坛问下载了的ps字体怎么安装? 首先各位同学先要搞清楚一件事,下载好的字体不是装到photoshop里面。photoshop只是调用我们自己电脑里的字体,也就是说,只要把字体装到电脑里面,photoshop就能正常使用了。 那么字体怎么安装到电…