2PC模式 (XA Transactions)

核心:事务协调器,协调是否提交和回滚

2PC(2 phrase commit 二阶段提交),又叫做:XA Transactions

MySQL从5.5版本开始支持,SQL Server 2005开始支持,Oracle 7 开始支持。

其中,XA 是一个二阶段提交协议,该协议分为以下两个阶段:

第一阶段:事务协调器要求每个涉及事务的数据库预提交(precommit)此操作,并反映是否可以提交。

第二阶段:事务协调器要求每个数据库提交数据。

其中,如果有任何一个数据库否决此次提交,那么所有数据库都会被要求回滚它们在此事务中的那部分信息。

2PC模式在高并发场景下的不太理想,分布式场景下并不会选择这种模式

柔性事务-TCC事务补偿型方案

核心:自己实现回滚业务

刚性事务:遵循ACID原则,强一致性。

柔性事务:遵循BASE理论,最终一致性。

与刚性事务不同,柔性事务允许一定时间内,不同节点的数据不一致,但要求最终一致性。

try代码模块中需要自己编写业务逻辑,Confirm代码块中会提交数据,那么在Cancel中则需要编写回滚逻辑。

柔性事务-最大努力通知型事务

核心:异步回调通知,同步数据

按规律进行通知,不保证数据一定能通知成功,但会提供可查询操作接口进行核对。这种方案主要用在与第三方系统通信时,比如:调用微信或者支付宝支付后的支付结果。这种方案也是结合MQ进行实现,例如:通过MQ发送Http请求,设置最大通知次数。达到通知次数后即不再通知。

案例:银行通知、商户通知等(各大交易业务平台间的商户通知:多次通知、查询核对、对账文件),支付宝的支付成功异步回调。

柔性事务-可靠消息+最终一致性方案(异步确保型)

核心:子业务失败,主业务发送异步消息通知回滚

实现:业务处理服务在业务事务提交之前,向实时消息服务请求发送消息,实时消息服务只记录消息数据,而不是真正的发送。业务处理服务在业务事务提交之后,向实时消息服务确认发送。只有在得到确认发送指令后,实时消息服务才会真正发送。 

分布式事务-常见解决方案相关推荐

  1. 一致 先验分布 后验分布_分布式事务常见解决方案与最终一致性

    小编推荐:互联网大背景下,微服务盛行,平时开发中难免会遇到分布式事务问题.大家经常会听到CAP原理,即一致性(Consistency).可用性(Availability).分区容错性(Partitio ...

  2. 分布式事务常见解决方案

    分布式事务的目的是保障分布式存储中数据一致性,而跨库事务会遇到各种不可控制的问题,如个别节点宕机,像单机事务一样的ACID是无法奢望的 一. 二阶段提交(2PC)(XA Transactions) 在 ...

  3. 分布式事务常见解决方案-关于状态机

    在使用最终一致性的方案时,一定要提到的一个概念是状态机. 什么是状态机?是一种特殊的组织代码的方式,用这种方式能够确保你的对象随时都知道自己所处的状态以及所能做的操作.它也是一种用来进行对象行为建模的 ...

  4. 分布式事务 常见方法

    不知道你是否遇到过这样的情况,去小卖铺买东西,付了钱,但是店主因为处理了一些其他事,居然忘记你付了钱,又叫你重新付. 又或者在网上购物明明已经扣款,但是却告诉我没有发生交易.这一系列情况都是因为没有事 ...

  5. springcloud分布式事务解决方案_搞懂分布式技术18:分布式事务常用解决方案

    本文转载自 http://linkedkeeper.com 本文内容参考网络,侵删 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 http ...

  6. 分布式事务及解决方案

    分布式事务 1 微服务化带来的分布式事务问题 开发当中真实场景: 首先,设想一个传统的单体应用(Monolithic App),通过 3 个 Module,在同一个数据源上更新数据来完成一项业务. 很 ...

  7. cap理论与分布式事务的解决方案

    现在很火的微服务架构所设计的系统是分布式系统.分布式系统有一个著名的CAP理论,即一个分布式系统要同时满足一致性(Consistency).可用性(Availablility)和分区容错(Partit ...

  8. 分布式事务终极解决方案探讨

    2019独角兽企业重金招聘Python工程师标准>>> 分布式事务终极解决方案探讨 转载于:https://my.oschina.net/dslcode/blog/1606115

  9. 分布式事务的解决方案

    数据库事务 在说分布式事务之前,我们先从数据库事务说起. 数据库事务可能大家都很熟悉,在开发过程中也会经常使用到.但是即使如此,可能对于一些细节问题,很多人仍然不清楚.比如很多人都知道数据库事务的几个 ...

最新文章

  1. grub2 命令行进入系统
  2. SPU表管理之查询获取SPU表列表数据
  3. Java多线程- 线程池的基本使用和执行流程分析 - ThreadPoolExecutor
  4. ionic+angularJS+iOS混合开发app的学习资料介绍和基本步骤(干货)
  5. boost::hana::sort用法的测试程序
  6. 2.数据中心网络演进
  7. thinkCMF----导航高亮显示
  8. LinkedList源码学习
  9. Python 学习第十七天 jQuery
  10. python list定义_Python中list总结
  11. 软件工程考研内容有c语言吗,2020中科大软件工程考研初试科目是什么?
  12. Qt - 跨平台程序打包发布
  13. EOJ 2月月赛补题
  14. uniapp启动页面
  15. 关于mathtype中的等号=和括号
  16. 网格交易法策略优化-解决单边下跌问题,降低破网率
  17. 天津出差系列(一)----第一天
  18. 三维向量类Vector类封装,包含三维向量一些基本运算
  19. nginx服务器报错502 bad gateway!
  20. 无公网IP,外网远程连接MySQL数据库

热门文章

  1. java中使用poi读取excel单元格日期值
  2. 【华为云技术分享】敏捷设计,高效协同,凸显设计端云协同价值
  3. 给研发培训资料两篇(架构设计大数据)
  4. SQL Developer 输入sql快速显示表快捷键
  5. 【经典控制理论】| 自动控制原理知识点概要(上)
  6. veins车载通信仿真框架(3)--OMNET++基础
  7. Sharepoint2007自定义Feature(2)--使用Sharepoint自定义Featur
  8. PLX桥芯片信息总结
  9. Synctoy2.1使用定时任务0X1
  10. android 摄像头 测距,GitHub - infonous/Everest: Android 手机拍照测距