美文网首页
分布式事务

分布式事务

作者: 追风还是少年 | 来源:发表于2023-09-18 23:07 被阅读0次

最大努力通知型

最大努力通知型( Best-effort delivery),适用于一些最终一致性时间敏感度低的业务,一般用于与外部系统接口交互,当调用外部系统接口成功之后,只是外部系统接收请求成功,并不代表外部系统处理完,因此后续接口处理完之后再异步通知处理结果。
典型的使用场景:如第三方支付结果通知。
最大努力通知型有以下特点:

  • 不可靠消息
    外部系统接口在完成业务处理之后,向接口调用方发送消息,直到通知N次后不再通知,允许消息丢失(不可靠消息)。

  • 定期校对
    外部系统接口调用方,根据定时策略,向外部系统查询(外部系统提供查询接口),恢复丢失的业务消息。

以短信发送平台为例:


image.png

TCC两阶段补偿型

TCC是Try-Confirm-Cancel的简称:

  • Try阶段:
    完成所有业务检查(一致性),预留业务资源(准隔离性)

  • Confirm阶段:
    确认执行业务操作,不做任何业务检查, 只使用Try阶段预留的业务资源

  • Cancel阶段:
    取消Try阶段预留的业务资源。

image.png image.png
  • 从业务服务
    每个从业务服务需要提供try接口供主业务服务调用,需要提供confirm、cancel接口供事务管理器调用。
    confirm和cancel接口需要设计为幂等性,因为事务管理/协调器调用失败的时候会重试。
    try接口可以设计返回预留资源的expire(过期时间),如果过期时间到了,事务管理/协调器还没有调用confirm或cancel接口,从业务服务自动释放预留的资源。

  • 事务管理/协调器
    事务管理/协调器需要提供的事务日志上报接口,让主业务服务上报try阶段各个从业务服务资源是否预留成功的信息;
    如果各个从业务服务资源都预留成功,调用各个从业务服务的confirm接口;
    如果有一个从业务服务资源都预留失败,调用各个从服务的cancel接口;
    如果调用从业务服务confirm或cancel接口失败,需要重试调用。

  • 主业务服务:主业务服务不需要提供任何接口,只需要调用从业务服务、事务管理/协调器提供的接口即可。

TCC事务的优缺点:

  • 优点
    XA两阶段提交资源层面的,而TCC实际上把资源层面二阶段提交上提到了业务层面来实现。有效了的避免了XA两阶段提交占用资源锁时间过长导致的性能地下问题。
    支持多个从业务服务与主业务服务的数据最终一致性。
  • 缺点
    主业务服务和从业务服务都需要进行改造,从业务方改造成本更高,需要改造成try、confirm、canel 3个接口,开发成本高。

可靠消息最终一致性

消息发送一致性是指产生消息的业务动作与消息发送的一致。也就是说,如果业务操作成功,那么由这个业务操作所产生的消息一定要成功投递出去,否则就丢消息。
消息发送一致性有两种方案

  • RocketMQ事务消息实现


    image.png
  • 本地消息表实现
    由于产生消息的业务动作操作的表与消息表在同一个数据库,这样就由数据库事务来保证当业务动作执行成功,消息就一定能成功落库。

image.png

相关文章

  • 分布式事务与分布式锁

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

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

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

  • 分布式事务

    目录 分布式事务解决方案 长事务: saga 短事务: 设计的时候尽量短事务,能不用分布式事务尽量不用,分布式事务...

  • ATOMIKOS+JTA分布式事务记录

    ATOMIKOS+JTA是用来分布式事务的中间件,那么什么是分布式事务呢? 事务,分为单机事务,分布式事务;单机事...

  • 分布式事务

    一、什么是分布式事务 二、分布式事务产生的原因/分布式事务的应用场景 三、分布式事务的基础/理论 CAP/BASE...

  • 微服务 14:初探微服务分布式事务 - Seata

    1:什么是事务,什么是ACID 2:什么是分布式事务 3:分布式事务解决方案 4:Seata 分布式事务框架 5:...

  • 分布式事务的解决方案

    本文从以下几个方面介绍分布式事务的解决方案: 为什么会有分布式事务分布式事务经典模型分布式事务解决方案 为什么会有...

  • MySQL分布式事务支持

    MySQL分布式事务介绍 InnoDB存储引擎提供了对XA事务的支持,并通过XA事务来支持分布式事务的实现。分布式...

  • 微服务中分布式事务解决方案

    分布式事务解决方案 1、阿里巴巴seata分布式事务 2、 京东ShardingSphere分布式事务 3、tcc...

  • 解密分布式事务框架-Fescar

    1.分布式事务 我曾经能不用分布式事务就别用分布式事务,因为会引入很多的复杂度。虽然再网上有很多开源的分布式事务框...

网友评论

      本文标题:分布式事务

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