TCC事务解决方案
适用场景:
适用于具有强隔离性,严格一致性要求,也适用执行时间比较短的业务。
方案优缺点
优点:
1)在应用层实现具体逻辑,锁定资源的粒度小,不会锁定所有资源,性能比较高
2)Confirm阶段和Cancel阶段的方法具备幂等性,能够保证分布式执行完的数据一致性。
3)TCC分布式事务解决方案由主业务发起,无论主业务还是分支事务都能部署为集群模式,解决XA规范的单点故障
缺点:
代码需要耦合到业务中,每个分支都需要拆分为Try,Confirm和Cancel
存在问题:
1.空回滚问题
原因:分支事务所在的服务器宕机或者网络原因等,分支事务调用失败,没有执行Try阶段方法。当恢复调用,TcC执行回滚操作,如果Cancel无法处理,就会出现回滚问题。
解决:创建一个全局事务记录,并生成一个全局唯一的事务ID,另外创建分支事务记录,记录分支事务执行状态。
2.幂等问题
原因:由于网络等原因,导致分支事务调用失败,Tcc引入重试机制,可能导致数据一致性问题。
解决:在分支事务记录中增加事务的执行状态,每次执行分支事务,查询confirm和Cancel阶段的执行状态,判断是否执行。
3.悬挂问题
原因:在调用分支事务的时候,RPC调用超时重试,事务管理器通知对应资源管理器经回滚事务,但是事务回滚后,请求到达执行Try阶段方法,导致资源无法释放。
解决:创建分支事务记录,查询如果执行过Confirm或Cancel就不在执行。
TCC事务解决方案的更多相关文章
- 分布式事务解决方案汇总:2PC、3PC、消息中间件、TCC、状态机+重试+幂等(转)
数据一致性问题非常多样,下面举一些常见例子.比如在更新数据的时候,先更新了数据库,后更新了缓存,一旦缓存更新失败,此时数据库和缓存数据会不一致.反过来,如果先更新缓存,再更新数据库,一旦缓存更新成功, ...
- 分布式事务专题笔记(三)分布式事务解决方案之TCC(三阶段提交)
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1.什么是TCC事务 TCC是Try.Confifirm.Cancel三个词语的缩写,TCC要求每个分支 ...
- 阿里开源分布式事务解决方案 Fescar
微服务倡导将复杂的单体应用拆分为若干个功能简单.松耦合的服务,这样可以降低开发难度.增强扩展性.便于敏捷开发.当前被越来越多的开发者推崇,系统微服务化后,一个看似简单的功能,内部可能需要调用多个服务并 ...
- 阿里微服务架构下分布式事务解决方案-GTS
虽然微服务现在如火如荼,但对其实践其实仍处于初级阶段.即使互联网巨头的实践也大多是试验层面,鲜有核心业务系统微服务化的案例.GTS是目前业界第一款,也是唯一的一款通用的解决微服务分布式事务问题的中间件 ...
- 分布式事务解决方案FESCAR
项目地址:FESCAR 以下是官网的文档.简介2019年,Fescar 是 阿里巴巴 开源的 分布式事务中间件,以 高效 并且对业务 0 侵入 的方式,解决 微服务 场景下面临的分布式事务问题. 1. ...
- 阿里分布式事务解决方案-GTS
摘要: 本文将深入和大家探讨微服务架构下,分布式事务的各种解决方案,并重点为大家解读阿里巴巴提出的分布式事务解决方案----GTS.该方案中提到的GTS是全新一代解决微服务问题的分布式事务互联网中间件 ...
- 微服务架构下分布式事务解决方案——阿里GTS
1 微服务的发展 微服务倡导将复杂的单体应用拆分为若干个功能简单.松耦合的服务,这样可以降低开发难度.增强扩展性.便于敏捷开发.当前被越来越多的开发者推崇,很多互联网行业巨头.开源社区等都开始了微服务 ...
- 来了!阿里开源分布式事务解决方案 Fescar
摘要: 阿里妹导读:广为人知的阿里分布式事务解决方案:GTS(Global Transaction Service),已正式推出开源版本,取名为“Fescar”,希望帮助业界解决微服务架构下的分布式事 ...
- 微服务架构下分布式事务解决方案——阿里云GTS
https://blog.csdn.net/jiangyu_gts/article/details/79470240 1 微服务的发展 微服务倡导将复杂的单体应用拆分为若干个功能简单.松耦合的服务,这 ...
- 分布式事务解决方案,中间件 Seata 的设计原理详解
作者:张乘辉 前言 在微服务架构体系下,我们可以按照业务模块分层设计,单独部署,减轻了服务部署压力,也解耦了业务的耦合,避免了应用逐渐变成一个庞然怪物,从而可以轻松扩展,在某些服务出现故障时也不会影响 ...
随机推荐
- C++语言程序设计实验一 类与对象
Complex.hpp文件源码: #include <iostream> using namespace std; class Complex { public: Complex(floa ...
- Spring oauth2 ,Spring security, Session,Cookie,token,SSO 是什么,解决什么问题,如何集成?
背景假设就是一个多个域名web系统需要SSO单点登陆 什么Session? 2.什么是Token? 3.什么是Cookie? 4.Spring security? 5.Spring oauth2?
- CSS:布局篇_用flex布局实现两边顶宽中间自适应(圣杯布局&双飞翼布局)
CSS:布局篇_用flex布局实现两边顶宽中间自适应(圣杯布局&双飞翼布局) <!DOCTYPE html> <html> <head> <title ...
- antd-vue 框架的日期选择选年份
<a-date-picker :placeholder="placeholder" mode="year" format="YYYY" ...
- 错误:/etc/sudoers: syntax error near line
错误 yang@ubuntu:/etc$ sudo cat sudoers >>> /etc/sudoers: syntax error near line 26 <<& ...
- iOS开发之将GIF存储本地相册
#import <AssetsLibrary/AssetsLibrary.h> 1.引用库 2.将GIF图片转为NSData类型 3.存储代码 ALAssetsLibrary *libra ...
- 靶机练习5: Sar
靶机地址 https://www.vulnhub.com/entry/sar-1,425/ 信息收集阶段 进行全端口扫描,枚举目标的端口和服务 nmap -n -v -sS --max-retries ...
- vue2实现tabs侧边导航栏点击内容跳转到对应位置,且内容滚动导航栏切换对应tab
vue2实现tabs侧边导航栏点击内容跳转到对应位置,且内容滚动导航栏切换对应tab 1.tabs使用了 element的插件tabs, 省的自己写滑动动画 2.左侧有用到了 element的插件 N ...
- Java笔记_this关键字_HomeWork(1 - 4 题)
第一题 /** * @ClassName HomeWork01 * @Description TODO * @Author Orange * @Date 2021/4/23 8:14 * @Versi ...
- vue二级联动 编辑
第一步先写布局: 然后写我们的二级联动的方法 getOptionsA() { this.$axios .get('http://localhost:55629/api/GetClassifies?p ...