美文网首页
分布式事务理解

分布式事务理解

作者: liangxifeng833 | 来源:发表于2020-08-11 16:07 被阅读0次

实现分布式事务方式如下:

一. XA方式实现

  • XA二阶段提交实现分布式事务
  • 缺点一:同步性,一个全局的事务管理器协调和管理多个资源管理器(数据库连接),业务步骤执行顺序:A->B->C,因为是同步实现的,当C宕机后,A,B会一直等待C的回复一直把A,B服务拖垮。
  • 缺点二:nosql,kafka等产品不支持XA,也就是说如果系统使用nosql产品XA是无法实现分布式事务的。
  • 所以:需要强一致性的业务逻辑,可以选择XA方式实现分布式事务。(比如:用户抢购的业务逻辑,一旦用户抢购商品成功,商品库存就必须保证减一,否则会出现超卖现象)

二. TCC方式实现 (Try-Confirm-Cancel)

  • TCC事务机制相对于传统XA事务机制,其特征在于它不依赖资源管理器(RM)对XA的支持
  • 通过对 由业务系统提供的 业务逻辑的调度来实现分布式事务。
  • TCC机制中的Try仅是一个初步操作,它和后续的确认一起才能真正构成一个完整的业务逻辑;
        [传统事务机制]的业务逻辑 = [TCC事务机制]的初步操作(Try) + [TCC事务机制]的确认逻辑(Confirm)。
    
  • TCC事务机制以初步操作(Try)为中心的,确认操作(Confirm)和取消操作(Cancel)都是围绕初步操作(Try)而展开。因此,Try阶段中的操作,其保障性是最好的,即使失败,仍然有取消操作(Cancel)可以将其不良影响进行回撤。
  • 使用业务程序代码实现的 Try/Confirm/Cancel, 需要与各个数据库的本地事务配合使用。
  • 类似saga, 需要 可用性的业务逻辑,可以选择该方式实现;
  • TCC事务机制简介
  • 分布式事务 TCC 其实很简单
  • 拜托,面试请不要再问我TCC分布式事务的实现原理
  • 举例:
    1. 第一阶段:检查用户资金,如果资金充足,冻结用户本次交易资金,这笔资金被业务隔离,不允许除本事务之外的其它并发事务动用。
    2. 第二阶段:扣除第一阶段预冻结的用户资金,增加卖家资金,完成交易。

三. saga方式实现

  • 一种消息驱动的本地事务序列;
  • 通过消息,通过消息通知:本地事务A提交->本地事务B提交->本地事务C提交;
  • 注意以上的提交commit,分别在各自的私有数据库内,如果C失败了,那么需要手动写代码实现事务回滚(补偿事务),手动写代码实现事务回滚,顺序是:C->B->A;
  • 所以:需要 可用性的业务逻辑,可以选择该方式实现。比如:A代表收款成功,B代表发送用户短信,C代表增加用户积分,只要保证A成功,B/C即使真的失败的,也是可以容忍的(可以手工处理),但是保证了服务的可用性,对于用户来讲,系统没有阻塞,依然可以正常使用。

相关文章

  • 什么是分布式事务

    理解分布式事务

  • 分布式事务

    一、简述 分布式事务就是要在分布式系统中实现事务,它其实是由多个本地事务组合而成。可以理解为事务[https://...

  • 浅谈大规模分布式系统中那些技术点

    分布式事务 分布式系统的特性 分布式事务的基本介绍 常用的分布式技术说明 理解2PC和3PC协议 「点击阅读」 分...

  • 分布式事务理解

  • 理解分布式事务

    这篇文章将介绍什么是分布式事务,分布式事务解决什么问题,对分布式事务实现的难点,解决思路,不同场景下方案的选择,通...

  • 分布式事务理解

    1.事务的概念 事务,其实是包含一系列操作的、一个有边界的工作序列,有明确的开始和结束标志,且要么被完全执行, 要...

  • 分布式事务理解

    实现分布式事务方式如下: 一. XA方式实现 XA二阶段提交实现分布式事务 缺点一:同步性,一个全局的事务管理器协...

  • 分布式事务

    对分布式事务及两阶段提交、三阶段提交的理解 关于分布式事务、两阶段提交协议、三阶提交协议

  • 分布式事务与分布式锁

    一、分布式事务 什么事分布式事务 分布式事务就是指事务的资源分别位于不同的分布式系统的不同节点之上的事务。 分布式...

  • 微服务分布式事务--破局

    微服务架构下分布式事务设计实战 商品 订单 支付 分布式事务->长事务本地事务->短事务 分布式事务: 比如 下...

网友评论

      本文标题:分布式事务理解

      本文链接:https://www.haomeiwen.com/subject/gtelfhtx.html