分布式事务说的的2PC、3PC、TCC是啥
2PC(Two Phase Commit)
顾名思义,二阶段提交的意思。
- 发起事务(Prepare)
事务的发起者提出一个请求(比如下单购买某个商品),要求其依赖的服务响应请求(比如锁定优惠券,冻结库存等等)
当所有的依赖方成都回复确认之后,事务的准备阶段完毕 - 确认/取消事务(Confirm/Cncel)
当请求得到所有的依赖服务的确认后,事务的发起者通知所有执行者确认(confirm)事务
如果第一步只有有一个执行者返回失败,则取消(Cancel)事务
需要考虑的问题:
- 执行者如果没有收到第二步事务,如何处理?此时执行者会一起锁定资源等待第二步事务
比起一直锁定和超时confirm,更适合直接超时cancel - 发起者如果第一步没有收到回复,如何处理?此时发起者无法得知是否所有执行者都锁定资源
超时重试,多次超时当作失败 - 发起者如果第二步没有收到回复,如何处理?此时的发起者无法得知是否所有执行者都确认了事务
这是一个无法回滚的异常,可能需要人工介入修复数据
3PC(Three Phase Commit)
2PC的改进版本,在Prepare阶段前加了一个阶段:是否可提交请求
询问是否可以执行事务提交操作,如果执行者都返回成功响应,则进入Prepare阶段,否则结束事务
这一步查询不会加锁,降低了反复“锁定-释放”的可能,提高了并发。
无论是2PC还是3PC,都无法彻底解决分布式的一致性问题。
TCC(Try-Confirm-Cancel)
TCC和2PC两阶段提交类似,2PC通常是跨库的DB层面,T本质上是一个应用层面的2PC。
优势在于,可以自己定义数据库操作的精度,从而降低锁冲突、提高吞吐量。
Try、Confirm、Cancel的缩写,又称补偿事务,要求每个分支事务实现这三个操作。
Try,对业务系统做检测及资源预留。和二阶段中提交协议,提交请求阶段类似,系统会将需要确认的资源预留、锁定,确保确认操作一定能执行成功
Confirm,确认执行业务操作。和二阶段提交协议中,提交执行阶段的操作类似,指系统将最终执行操作
Cancel,取消执行业务操作。比较像二阶段提交协议中的回滚操作,指系统将撤消之前预留的资源,也就是撤消已执行的预留操作对系统产生的影响
分布式事务说的的2PC、3PC、TCC是啥的更多相关文章
- 分布式事务解决方案汇总:2PC、3PC、消息中间件、TCC、状态机+重试+幂等(转)
数据一致性问题非常多样,下面举一些常见例子.比如在更新数据的时候,先更新了数据库,后更新了缓存,一旦缓存更新失败,此时数据库和缓存数据会不一致.反过来,如果先更新缓存,再更新数据库,一旦缓存更新成功, ...
- 分布式事务(4)---最终一致性方案之TCC
分布式事务(1)-理论基础 分布式事务(2)---强一致性分布式事务解决方案 分布式事务(3)---强一致性分布式事务Atomikos实战 强一致性分布式事务解决方案要求参与事务的各个节点的数据时刻保 ...
- 分布式事务之解决方案(XA和2PC)
3. 分布式事务解决方案之2PC(两阶段提交) 针对不同的分布式场景业界常见的解决方案有2PC.TCC.可靠消息最终一致性.最大努力通知这几种. 3.1. 什么是2PC 2PC即两阶段提交协议,是将整 ...
- [转帖]分布式事务之解决方案(XA和2PC)
分布式事务之解决方案(XA和2PC) https://zhuanlan.zhihu.com/p/93459200 3. 分布式事务解决方案之2PC(两阶段提交) 针对不同的分布式场景业界常见的解决方案 ...
- 【转帖】分布式事务之解决方案(XA和2PC)
分布式事务之解决方案(XA和2PC) https://zhuanlan.zhihu.com/p/93459200 博彦信息技术有限公司 java工程师 3. 分布式事务解决方案之2PC(两阶段提交 ...
- 分布式事务专题笔记(二)分布式事务解决方案之 2PC(两阶段提交)
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 前面已经了解了分布式事务的基础理论,以理论为基础,针对不同的分布式场景业界常见的解决方案有2PC.TCC ...
- 终于有人把“TCC分布式事务”实现原理讲明白了!
之前网上看到很多写分布式事务的文章,不过大多都是将分布式事务各种技术方案简单介绍一下.很多朋友看了还是不知道分布式事务到底怎么回事,在项目里到底如何使用. 所以这篇文章,就用大白话+手工绘图,并结合一 ...
- TCC分布式事务的实现原理(转载 石杉的架构笔记)
拜托,面试请不要再问我TCC分布式事务的实现原理![石杉的架构笔记] 原创: 中华石杉 目录 一.写在前面 二.业务场景介绍 三.进一步思考 四.落地实现TCC分布式事务 (1)TCC实现阶段一:Tr ...
- 拜托,面试请不要再问我TCC分布式事务的实现原理!(转)
一.写在前面 之前网上看到很多写分布式事务的文章,不过大多都是将分布式事务各种技术方案简单介绍一下.很多朋友看了不少文章,还是不知道分布式事务到底怎么回事,在项目里到底如何使用. 所以咱们这篇文章,就 ...
随机推荐
- Robotframework自动化6-基础关键字介绍3
这一章节介绍一下断言时用到的关键字,断言是写测试用例的必备,没有断言的测试用例是没有灵魂的. 一:Should Be Equal Should Be Equal 是用来判断实践结果和预期结果是否一致 ...
- Android端代码染色原理及技术实践
导读 高德地图开放平台产品不断迭代,代码逻辑越来越复杂,现有的测试流程不能保证完全覆盖所有业务代码,测试不到的代码及分支,会存在一定的风险.为了保证测试全面覆盖,需要引入代码覆盖率做为测试指标,需要对 ...
- [剑指Offer]33-根据后序序列判断是否能组成BST
题目 如题. 题解 从序列第一个大于根节点的值往后都是右子树,判断右子树是否都大于根节点. 然后递归判断左右子树是否是BST 代码 class TreeNode { int val = 0; Tree ...
- Mysql 多表连查 xml写法 非注解形式
1.xml写法 <!-- 联查用户users表 --> <resultMap type="nanh.entity.Tasks" id="selectTa ...
- 集群数据ID生成之美团叶子生成
转自https://tech.meituan.com/2017/04/21/mt-leaf.html 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识.如在美团点评的金融.支付.餐饮.酒店. ...
- java8的::
public static void main(String[] args) throws Exception { // 第一种方法引用的类型是构造器引用,语法是Class::new,或者更一般的形式 ...
- powershell中使用Get-FileHash计算文件的hash值
今天在公司一台windows服务器上.需要对两个文件进行比对,笔者首先就想到了可以使用md5校验 但是公司服务器上又不可以随意安装软件,于是笔者想到了可以试试windows自带的powershell中 ...
- 实现图片的上传(要求:上传到指定的FTP服务器)
考核的知识点: (1)Linux系统的使用 (2)tengine 纯HTTP的web服务器 (3)SpringMVC的上传功能 (4)FTP的数据传到 1.1 传统上传方式的问题 但是在 ...
- 《Linux从入门到精通》笔记
第一篇 基础篇 第1章 Linux概述 1.1 Linux的起源 1991年芬兰学生Linus Torvalds写的磁盘驱动和文件系统开源发布,Linux即"Linus的Minix&qu ...
- Alibaba高并发业务秒杀系统落地实战文档,已实践某大型秒杀场景
前言: 高并发,几乎是每个程序员都想拥有的经验.原因很简单:随着流量变大,会遇到各种各样的技术问题,比如接口响应超时.CPU load升高.GC频繁.死锁.大数据量存储等等,这些问题能推动我们在技术深 ...