news 2026/10/5 22:38:17

【TCC分布式事务】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【TCC分布式事务】

TCC实现指令原子性的原理

TCC(Try-Confirm-Cancel)通过三阶段操作实现业务层面分布式事务的原子性,其核心在于资源预留和状态管理的设计:

Try阶段(预留)

  • 对涉及的所有业务操作预先检查并预留资源,例如锁定库存、冻结账户余额、生成临时订单等。此阶段不直接提交最终操作,而是确保后续Confirm或Cancel可执行。
  • 每个子服务的Try操作独立执行,若全部成功则进入Confirm阶段;任一失败则触发Cancel阶段。

Confirm阶段(确认)

  • 基于Try阶段预留的资源,执行最终业务操作(如扣减库存、实际扣款)。此时因资源已预留,操作必然成功。
  • 需设计幂等性接口,防止网络重试导致重复提交。

Cancel阶段(撤销)

  • 当Try阶段部分失败时,撤销已预留的资源(如释放库存、解冻金额)。同样需保证幂等性。

对比二阶段提交(2PC)

  • 数据层:2PC在数据库层面通过Prepare/Commit实现,依赖数据库事务。
  • 业务层:TCC将事务控制上移到业务代码,通过预留+确认/撤销的抽象模式,灵活适配异构系统。

实际应用关键点

  1. 幂等性设计
    Confirm/Cancel可能因网络问题重试,需通过唯一事务ID或状态标记避免重复执行。

  2. 资源预留方式

    • 数据库操作:通过状态字段(如status=TRY_RESERVED)标记预留状态,Confirm时更新为CONFIRMED。
    • 外部服务调用:如机票预订场景,航空公司接口需提供预留、确认、撤销三个独立接口。
  3. 超时与悬挂问题
    需引入事务协调器记录状态,避免Try成功但因网络丢失导致长期未Confirm/Cancel的资源滞留。

开源实现参考

  • Seata:支持TCC模式,提供全局事务协调框架。
  • Hmily:轻量级TCC事务框架,适用于微服务场景。

示例场景解答(订票系统)

  1. Try阶段

    • 调用深圳航空接口预留深圳→上海机票(锁定座位,生成临时订单)。
    • 调用上海航空接口预留上海→北京机票。
  2. Confirm阶段

    • 两段机票均预留成功时,分别调用确认接口完成实际出票。
  3. Cancel阶段

    • 若深圳航空预留失败,则调用上海航空的撤销接口释放预留座位。

通过这种设计,无论涉及多少服务,只要所有Try成功则最终确认,否则全部撤销,从而保证原子性。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/5 6:50:05

NotepadNext十六进制编辑功能终极指南:5大实战技巧深度解析

NotepadNext十六进制编辑功能终极指南:5大实战技巧深度解析 【免费下载链接】NotepadNext A cross-platform, reimplementation of Notepad 项目地址: https://gitcode.com/GitHub_Trending/no/NotepadNext 你是否曾遇到过需要直接编辑二进制文件却苦于没有合…

作者头像 李华
网站建设 2026/10/5 2:36:19

从零部署 OpenKM 文档管理系统:企业级文档管理实战指南

从零部署 OpenKM 文档管理系统:企业级文档管理实战指南 【免费下载链接】document-management-system OpenKM is a Open Source Document Management System 项目地址: https://gitcode.com/gh_mirrors/do/document-management-system 还在为团队文档管理混乱…

作者头像 李华
网站建设 2026/10/6 4:45:31

VC++运行库终极解决方案:一键修复Windows系统依赖问题

VC运行库终极解决方案:一键修复Windows系统依赖问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 问题引爆:真实案例中的DLL缺失痛点 …

作者头像 李华
网站建设 2026/10/6 5:56:37

Umi-OCR技术架构深度解析:插件化引擎与多场景应用实战

Umi-OCR技术架构深度解析:插件化引擎与多场景应用实战 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件,适用于Windows系统,支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode.com/GitH…

作者头像 李华
网站建设 2026/10/5 19:01:56

六音音源修复版终极指南:3步解决洛雪音乐播放问题

六音音源修复版终极指南:3步解决洛雪音乐播放问题 【免费下载链接】New_lxmusic_source 六音音源修复版 项目地址: https://gitcode.com/gh_mirrors/ne/New_lxmusic_source 还在为洛雪音乐升级后无法正常播放音乐而烦恼吗?六音音源修复版为您提供…

作者头像 李华
网站建设 2026/10/5 20:07:54

数字孪生系统的测试验证方法体系研究

1. 数字孪生技术特性与测试挑战 1.1 技术架构复杂性 数字孪生作为物理实体的虚拟映射,其系统架构包含数据采集层、模型构建层、仿真分析层和决策应用层四个核心层级。测试人员需要面对多源异构数据融合、物理模型与数据模型耦合、实时性要求高等特殊挑战。特别是在…

作者头像 李华