分布式事务解决方案之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事务通过分阶段处理和异常机制,确保分布式事务的高效完成。在实际应用中,需结合业务逻辑和系统架构,实现可靠的分布式事务处理。

    上一篇:分布式事务解决方案
    下一篇:seata实现2PC事务

    发表评论

    最新留言

    很好
    [***.229.124.182]2025年04月11日 06时08分36秒