
分布式事务解决方案之TCC
发布日期:2021-05-06 15:30:25
浏览次数:26
分类:精选文章
本文共 924 字,大约阅读时间需要 3 分钟。
TCC事务详解
TCC事务概述
TCC(Try、Confirm、Cancel)事务是一种用于分布式系统中实现高并发事务的方案。它通过将事务分为三个阶段:Try、Confirm 和 Cancel,确保在网络分区或系统故障时能够有效恢复。
TCC事务的三个阶段
Try 阶段
Try阶段主要负责业务检查(一致性)和资源预留(隔离)。这一阶段仅是初步操作,后续的Confirm阶段才能完成一个完整的事务逻辑。Confirm 阶段
Confirm阶段执行正式的业务提交。理论上,只要Try阶段成功,Confirm阶段就不会出错。若确实发生错误,需引入重试机制或人工处理。Cancel 阶段
Cancel阶段用于在事务执行错误时回滚业务。通常情况下,Cancel阶段也不会出错,但若发生错误,同样需要重试或人工处理。事务管理器(TM)
TM作为独立的服务或被全局事务发起方充当,其职责是发起全局事务并记录上下文,确保事务的幂等性和可重试性。TCC事务的异常处理机制
在实际应用中,TCC事务可能会遇到以下三种异常情况:
空回滚
空回滚指的是在没有调用TCC资源Try方法的情况下,直接调用了Cancel方法。这种情况需要识别为空回滚,避免资源泄漏或重复操作。幂等性
幂等性要求同一个操作无论被调用多少次,其结果都相同。通过记录操作状态,确保操作的幂等性,防止数据不一致。悬挂
悬挂指的是Cancel方法比Try方法先执行的情况。这通常发生在RPC调用中,网络拥堵导致Try方法未能及时执行。转账示例
优化方案
账户A
Try阶段检查余额是否足够扣除转账金额,扣减金额。Confirm阶段无需额外操作,Cancel阶段回滚时恢复扣除的金额。账户B
Try阶段增加转账金额,Confirm阶段正式执行。Cancel阶段恢复增加的金额。实现细节
- 幂等校验:检查本地事务日志,确保操作已执行。
- 空回滚处理:若Try未执行,Cancel需直接返回。
- 悬挂处理:若Confirm或Cancel已执行,Try不再执行。
结论
TCC事务通过分阶段处理和异常机制,确保分布式事务的高效完成。在实际应用中,需结合业务逻辑和系统架构,实现可靠的分布式事务处理。
发表评论
最新留言
很好
[***.229.124.182]2025年04月11日 06时08分36秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
vimscript学习笔记(二)预备知识
2019-03-05
Android数据库
2019-03-05
HTML基础,块级元素/行内元素/行内块元素辨析【2分钟掌握】
2019-03-05
STM8 GPIO模式
2019-03-05
23种设计模式一:单例模式
2019-03-05
Qt中的析构函数
2019-03-05
C语言实现dijkstra(adjacence matrix)
2019-03-05
三层框架+sql server数据库 实战教学-徐新帅-专题视频课程
2019-03-05
【单片机开发】智能小车工程(经验总结)
2019-03-05
【单片机开发】基于stm32的掌上游戏机设计 (项目规划)
2019-03-05
C++&&STL
2019-03-05
微信js-sdk使用简述(分享,扫码功能等)
2019-03-05
c++中ifstream及ofstream超详细说明
2019-03-05
web项目配置
2019-03-05
基于单片机简易信号误差分析设计-全套资料
2019-03-05
基于单片机简易脉搏测量仪系统设计-毕设课设资料
2019-03-05
Javascript中String支持使用正则表达式的四种方法
2019-03-05
eclipse引用sun.misc开头的类
2019-03-05
Servlet2.5的增删改查功能分析与实现------删除功能(四)
2019-03-05