分布式事务TCC方案——Hmily金融级柔性分布式事务解决方案介绍
关于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-Boot
,Spring-Namespace
快速与业务系统集成高性能 :去中心化设计,与业务系统完全融合,天然支持集群部署
可观测性 :Metrics多项指标性能监控,以及admin管理后台UI展示
多种RPC : 支持
Dubbo
,SpringCloud
,Motan
,Sofa-rpc
,brpc
,tars
等知名RPC框架日志存储 : 支持
mysql
,oracle
,mongodb
,redis
,zookeeper
等方式复杂场景 : 支持RPC嵌套调用事务
支持范围
必须使用
JDK8+
TCC模式下,用户必须要使用一款
RPC
框架, 比如 :Dubbo
,SpringCloud
,Montan
TAC模式下,用户必须使用关系型数据库, 比如:
mysql
,oracle
,sqlsever
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金融级柔性分布式事务解决方案介绍相关推荐
- 又快又稳,金融级分布式架构如何实现?
作者:杜茂森 在互联网和信息技术革命推动下,金融领域的"底层物质"正在发生深刻变化.以移动化.云计算.大数据.区块链等技术为主,传统金融业务与互联网技术融合,通过优化资源配置与技术 ...
- 国内首个,京东云金融级分布式数据库StarDB通过这项权威认证
2021年5月18日,中国信通院分布式事务型数据库产品能力评测结果评审会圆满结束.凭借在复杂金融场景中应对生产环境极端故障突出表现,京东云StarDB恒星数据库以优异的成绩一次性通过分布式事务型数据库 ...
- tdsql完全兼容mysql吗_金融级数据库 TDSQL:已支持日 3.6亿+ 的交易量,TPS 10万+
原标题:金融级数据库 TDSQL:已支持日 3.6亿+ 的交易量,TPS 10万+ 作者: 胡盼盼:微众银行数据库平台负责人.硕士毕业于华中科技大学,毕业后加入腾讯,任高级工程师,从事分布式存储与云数 ...
- 分布式事务框架_1024开源首发 | 金融级分布式事务框架 TXLE
金融级分布式事务框架 TXLE Distributed Transaction Solution 在 2017 年和 2018 年的 10 月 24 日,爱可生开源社区出品了 MySQL 分布式中间件 ...
- 分布式事务2PC、3PC、TCC、RocketMQ事务消息方案详解与对比(详细图解)
这篇文章将介绍分布式事务中的多种实现方案,及各种分布式事务方案的实现原理.事务执行过程.优缺点,读完这篇文章相信你会对2PC.3PC.TCC.MQ事务消息有个详细的了解 分布式事务的处理方法有哪些? ...
- [分布式事务-TCC] 4. TCC的优化方案之一:最末参与者优化(LPO)
文章导航 优化动机和指导原则 最末参与者优化(LPO) 优化动机和指导原则 当一笔分布式事务的参与者较多时,同时每个参与者都涉及到一阶段和二阶段,还有异常场景下的幂等控制,空回滚以及防资源悬挂处理,调 ...
- 分布式事务实施方案总结
一.术语介绍 TX协议:应用或者应用服务器与事务管理器的接口 XA协议:全局事务管理器与资源管理器的接口. 两阶段提交协议(Two-phase Commit,2PC) BASE理论:BA指的是基本业务 ...
- 腾讯分布式数据库TDSQL金融级能力的架构原理解读
导语:为帮助开发者更好地了解和学习分布式数据库技术,2020年3月,腾讯云数据库.云加社区联合腾讯TEG数据库工作组特推出为期3个月的国产数据库专题线上技术沙龙<直播预告 | 你想了解的国产数据 ...
- 为数据赋能:腾讯TDSQL分布式金融级数据库前沿技术
作者简介:李海翔,网名"那海蓝蓝",腾讯金融云数据库技术专家.中国人民大学信息学院工程硕士企业导师.著有<数据库事务处理的艺术:事务管理和并发访问控制>.<数据库 ...
最新文章
- Coding and Paper Letter(二十)
- 针对ie6的一些小总结
- 动态sql语句输出参数
- WSDL中文版——详解
- 《剑指offer》左旋转字符串
- php 判断是否文件,利用PHP判断文件是否为图片的方法总结
- 2020牛客国庆集训派对day2 MATRIX MULTIPLICATION CALCULATOR
- 有人认为,“中文编程”是解决中国程序员效率的秘密武器,请问它是一个“银弹”么?...
- Vue.js尚硅谷视频学习笔记(第一章:Vue 核心)
- EXCEL表格-利用随机函数制作抽签工具(RAND)
- hdu5294||2015多校联合第一场1007 最短路+最大流
- html中版权怎么写,html版权符号代码怎么打?通过什么方式输入?
- xamarin其实也是一个鸡肋
- 成龙寿宴筹善款7000万 嘉宾:比春晚还热闹
- 常见的行业认证和资质清单介绍
- Mail企业邮箱登录入口在哪里?如何注册企业邮箱账号?
- SpringSecurity全局方法安全性:预授权和后授权
- kali官方ios下载今天刚刚下载的
- 痞子衡嵌入式:MCUBootUtility v4.0发布,开始支持MCX啦
- OpenDDS开发人员指南中文版3.23(1)简介