关于TCC的理论部分请参考:分布式事务基础理论——TCC

概述

目前市面上的TCC框架众多(都是国内的呢):

框架名称 GitHub地址
tcc-transaction https://github.com/changmingxie/tcc-transaction
Hmily https://github.com/dromara/hmily
ByteTCC https://github.com/liuyangming/ByteTCC
EasyTransaction  https://github.com/QNJR-GROUP/EasyTransaction

Hmily

Hmily是dromara团队设计开发的金融级柔性分布式事务解决方案

功能

  • 高可靠性 :支持分布式场景下,事务异常回滚,超时异常恢复,防止事务悬挂

  • 易用性 :提供零侵入性式的 Spring-BootSpring-Namespace 快速与业务系统集成

  • 高性能 :去中心化设计,与业务系统完全融合,天然支持集群部署

  • 可观测性 :Metrics多项指标性能监控,以及admin管理后台UI展示

  • 多种RPC : 支持 DubboSpringCloud,MotanSofa-rpcbrpctars 等知名RPC框架

  • 日志存储 : 支持 mysqloraclemongodbrediszookeeper 等方式

  • 复杂场景 : 支持RPC嵌套调用事务

支持范围

  • 必须使用 JDK8+

  • TCC模式下,用户必须要使用一款 RPC 框架, 比如 : DubboSpringCloud,Montan

  • TAC模式下,用户必须使用关系型数据库, 比如:mysqloraclesqlsever

TCC中的特别处理

空回滚

在没有调用TCC中Try方法的情况下,调用了第二阶段的Cancel方法,Cancel方法需要直接识别出来这是一次空回滚,直接返回成功结果。

出现原因:分支事务所在系统服务宕机或者网络波段,分支事务的调用记录是失败的,该情况下其实分支事务没有进行Try操作,当故障恢复后,分布式事务进行了回滚则会调用二阶段的Cancel方法,既而形成了空回滚。

解决方法:已知全局事务id会贯穿整个全局分布式事务的调用链,额外增加一张分支事务记录表,其中有全局事务id和分支事务id,每一次成功的Try执行后插入一条分支事务执行记录,第二阶段Cancel执行时读取该表记录,如果该分支事务对应的执行记录存在,就回滚,如果不存在就认为是空回滚,直接返回成功。

幂等性

为了保证第二阶段中出现的失败情况,Hmily会有重试机制,此时就会出现幂等性问题。如果Cancel执行过程中没有保证好幂等性问题,会导致数据污染。

悬挂

悬挂就是Cancel先于Try执行了。

出现原因:当全局事务发起者通过RPC方式调用分支分支事务执行Try的时候,出现了调用网络延迟的问题,此时TM会认为RPC调用超时需要回滚,但是可能这次RPC的Try请求在回滚之后执行成功了。此次Try操作预留的资源只有该分布式事务可以使用,该次预留的资源无法进行后续的处理,这就是选个挂。

解决思路:在执行第一阶段Try操作之前,要在事务记录表中是否有该分支事务对应的二阶段事务,如果有记录就不执行Try。

总结

  • 在TCC模式下,所有操作要保证幂等性
  • 需要有事务的执行记录
  • 执行Try和Cancel时候都需要进行操作记录判断

分布式事务TCC方案——Hmily金融级柔性分布式事务解决方案介绍相关推荐

  1. 又快又稳,金融级分布式架构如何实现?

    作者:杜茂森 在互联网和信息技术革命推动下,金融领域的"底层物质"正在发生深刻变化.以移动化.云计算.大数据.区块链等技术为主,传统金融业务与互联网技术融合,通过优化资源配置与技术 ...

  2. 国内首个,京东云金融级分布式数据库StarDB通过这项权威认证

    2021年5月18日,中国信通院分布式事务型数据库产品能力评测结果评审会圆满结束.凭借在复杂金融场景中应对生产环境极端故障突出表现,京东云StarDB恒星数据库以优异的成绩一次性通过分布式事务型数据库 ...

  3. tdsql完全兼容mysql吗_金融级数据库 TDSQL:已支持日 3.6亿+ 的交易量,TPS 10万+

    原标题:金融级数据库 TDSQL:已支持日 3.6亿+ 的交易量,TPS 10万+ 作者: 胡盼盼:微众银行数据库平台负责人.硕士毕业于华中科技大学,毕业后加入腾讯,任高级工程师,从事分布式存储与云数 ...

  4. 分布式事务框架_1024开源首发 | 金融级分布式事务框架 TXLE

    金融级分布式事务框架 TXLE Distributed Transaction Solution 在 2017 年和 2018 年的 10 月 24 日,爱可生开源社区出品了 MySQL 分布式中间件 ...

  5. 分布式事务2PC、3PC、TCC、RocketMQ事务消息方案详解与对比(详细图解)

    这篇文章将介绍分布式事务中的多种实现方案,及各种分布式事务方案的实现原理.事务执行过程.优缺点,读完这篇文章相信你会对2PC.3PC.TCC.MQ事务消息有个详细的了解 分布式事务的处理方法有哪些? ...

  6. [分布式事务-TCC] 4. TCC的优化方案之一:最末参与者优化(LPO)

    文章导航 优化动机和指导原则 最末参与者优化(LPO) 优化动机和指导原则 当一笔分布式事务的参与者较多时,同时每个参与者都涉及到一阶段和二阶段,还有异常场景下的幂等控制,空回滚以及防资源悬挂处理,调 ...

  7. 分布式事务实施方案总结

    一.术语介绍 TX协议:应用或者应用服务器与事务管理器的接口 XA协议:全局事务管理器与资源管理器的接口. 两阶段提交协议(Two-phase Commit,2PC) BASE理论:BA指的是基本业务 ...

  8. 腾讯分布式数据库TDSQL金融级能力的架构原理解读

    导语:为帮助开发者更好地了解和学习分布式数据库技术,2020年3月,腾讯云数据库.云加社区联合腾讯TEG数据库工作组特推出为期3个月的国产数据库专题线上技术沙龙<直播预告 | 你想了解的国产数据 ...

  9. 为数据赋能:腾讯TDSQL分布式金融级数据库前沿技术

    作者简介:李海翔,网名"那海蓝蓝",腾讯金融云数据库技术专家.中国人民大学信息学院工程硕士企业导师.著有<数据库事务处理的艺术:事务管理和并发访问控制>.<数据库 ...

最新文章

  1. Coding and Paper Letter(二十)
  2. 针对ie6的一些小总结
  3. 动态sql语句输出参数
  4. WSDL中文版——详解
  5. 《剑指offer》左旋转字符串
  6. php 判断是否文件,利用PHP判断文件是否为图片的方法总结
  7. 2020牛客国庆集训派对day2 MATRIX MULTIPLICATION CALCULATOR
  8. 有人认为,“中文编程”是解决中国程序员效率的秘密武器,请问它是一个“银弹”么?...
  9. Vue.js尚硅谷视频学习笔记(第一章:Vue 核心)
  10. EXCEL表格-利用随机函数制作抽签工具(RAND)
  11. hdu5294||2015多校联合第一场1007 最短路+最大流
  12. html中版权怎么写,html版权符号代码怎么打?通过什么方式输入?
  13. xamarin其实也是一个鸡肋
  14. 成龙寿宴筹善款7000万 嘉宾:比春晚还热闹
  15. 常见的行业认证和资质清单介绍
  16. Mail企业邮箱登录入口在哪里?如何注册企业邮箱账号?
  17. SpringSecurity全局方法安全性:预授权和后授权
  18. kali官方ios下载今天刚刚下载的
  19. 痞子衡嵌入式:MCUBootUtility v4.0发布,开始支持MCX啦
  20. OpenDDS开发人员指南中文版3.23(1)简介

热门文章

  1. 东方龙怎么画?西方龙怎么画?东方龙与西方龙的画法区别!
  2. 昭阳 E49 XP系统如何开启AHCI
  3. 绝地服务器维护7月5日,绝地求生7月5日更新到几点 更新维护公告
  4. 关于浏览器以及各种内置浏览器造成黑屏的解决办法
  5. oracle表空间权限赋予,oracle创建表空间以及给用户授予权限
  6. Chrome 的书签太多如何分类整理比较好
  7. pix2pix的简介
  8. 医疗器械与知识产权保护
  9. Android AIDL(接口定义语言)简单理解和基本使用方法
  10. 【安卓开发】安卓页面跳转