分布式事务 可靠消息最终一致性方案

分布式事务 :可靠消息最终一致性方案 严格意义上的事务应该是具备原子性、一致性、隔离性和持久性,简称ACID。原子性(Atomicity),可以理解为一个事务内的所有操作要么都执行,要么都不执行。一致性(Consistency),可以理解为数据是满足完整性约束的,也就是不会存在中间状态的数据,比如你钱包有100,我钱包有100,你给我打50块,此时你钱包的钱应该是50,我钱包的钱应该是150,不会存在我钱加了,你钱没扣的中间状态。隔离性(Isolation)... 阅读详情
  1. A 系统先发送一个 prepared 消息到 mq,如果这个 prepared 消息发送失败那么就直接取消操作别执行了;

  2. 如果这个消息发送成功过了,那么接着执行本地事务,如果成功就告诉 mq 发送确认消息,如果失败就告诉 mq 回滚消息;

  3. 如果发送了确认消息,那么此时 B 系统会接收到确认消息,然后执行本地的事务;

  4. mq 会自动定时轮询所有 prepared 消息回调你的接口,问你,这个消息是不是本地事务处理失败了,所有没发送确认的消息,是继续重试还是回滚?一般来说这里你就可以查下数据库看之前本地事务是否执行,如果回滚了,那么这里也回滚吧。这个就是避免可能本地事务执行成功了,而确认消息却发送失败了。

  5. 这个方案里,要是系统 B 的事务失败了咋办?重试咯,自动不断重试直到成功,如果实在是不行,要么就是针对重要的资金类业务进行回滚,比如 B 系统本地回滚后,想办法通知系统 A 也回滚;或者是发送报警由人工来手工回滚和补偿。

  6. 这个还是比较合适的,目前国内互联网公司大都是这么玩儿的,要不你举用 RocketMQ 支持的,要不你就自己基于类似 ActiveMQ?RabbitMQ?自己封装一套类似的逻辑出来,总之思路就是这样子的。

Springboot2.X基于可靠消息rabbitmq最终一致性分布式事务+分布式全局唯一ID生成器 1、代码未实现部分      a、积分、红包相关代码未实现,按照下单逻辑操作即可      b、quatz调度未实现,这个相当简单,可以通过dubbo等rpc方式、或者httpclient方式进行远程调度,相关代码:            https://download.youkuaiyun.com/download/qq_22049773/12540998      c、其他均已实现      d、分布式全局ID生成器,ID生成非绝对递增有序,是趋向有序,这一点如果能接受,可以直接copy使用 2、事务回滚机制说明        a、每个消费端的事务处理都由本地事务负责        b、基于下单队列消费端临时表,查询红包、积分两个队列消费端的临时表中该订单的处理的状态,如果全部为消费成功,则更新业务订单表中的订单状态由  下单中  --》 待付款并删除所有临时表数据,如果非全部消费成功,则将定性为异常单并写入补单队列,并删除所有临时表数据。该逻辑有定时调度完成。 立即下载

相关推荐

使用RabbitMQ+延迟队列实现分布式事务的最终一致性方案

使用RabbitMQ+延迟队列实现分布式事务的最终一致性方案,demo以典型的订单+库存系统为例

分布式事务解决方案之基于RocketMQ

本文不仔细讲,详细的网上都有,画个流程图可以帮助理解一下 参考石杉的架构笔记 我们来解释一下这个方案的大概流程: A系统先发送一个prepared消息到mq,如果这个prepared消息发送失败那么就直接取消操作别执行了,后续操作都不再执行 如果这个消息发送成功过了,那么接着执行A系统的本地事务,如果执行失败就告诉mq回滚消息,后续操作都不...

liyuguanguan的博客 1799

汽车OTA自动化测试解决方案

目前OTA远程升级技术已成为众多汽车制造商的标配。由于OTA升级可能会带来潜在的风险(特别是包含ECU固件更新的FOTA升级),针对OTA系统的测试过程就尤为重要。

东舟技术的博客 7760

分布式事务(四):分布式事务解决方案之可靠消息最终一致性

什么是可靠消息最终一致性 可靠消息最终一致性方案是指当事务发起方执行完本地事务后并发出一条消息,事务参与方(消息消费者)一定能够接收消息并处理事务成功,此方案强调的是只要消息发给事务参与方最终事务要达到一直。 此方案利用消息中间件完成,如下图: 事务发起方(消息生产方)将消息发送给消息中间件,事务参与方从消息中间件接收消息,事务发起方和消息中间件之间,事务参与方(消息消费方)和消息中间件之间都是通过网络通信,由于网络的不确定性因素会导致分布式事务问题。 因此可靠消息最终一致性方案要解决以下几个问

帅过驴的袋鼠的博客 1976

不用SE63逐个翻译!ABAP函数LXE_OBJ_TEXT_PAIR_WRITE批量处理TCODE描述的3种姿势

本文介绍了三种利用ABAP函数LXE_OBJ_TEXT_PAIR_WRITE批量翻译SAP事务码(TCODE)描述的高效方案,旨在替代SE63逐个翻译的低效操作。内容涵盖从基础循环、Excel导入到全自动程序集成的实现方法,帮助开发者显著提升批量翻译效率,并深入解析了SAP翻译体系的核心原理与实战技巧。

weixin_42593130的博客 659

按照autoware.universe官方从零搭建自己的自动导航小车(三)(续)

本文介绍了在Autoware框架下完善自定义传感器套件描述包的详细过程。主要内容包括:1)创建传感器描述包tinyplc_sensor_kit_description,包含YAML标定文件和URDF模型;2)配置传感器与车辆基座的相对位姿,实现sensor_kit.xacro和sensors.xacro宏文件;3)更新sensor_kit.launch.xml文件以集成激光雷达和GNSS/IMU驱动。通过xacro验证URDF模型正确性后,下一步计划接入Helios16激光雷达数据并在Rviz2中验证点云显

qq_45335326的博客 1272

【进阶之路】可靠消息最终一致性解决方案

导言 大家好,我是南橘,从接触java到现在也有差不多两年时间了,两年时间,从一名连java有几种数据结构都不懂超级小白,到现在懂了一点点的进阶小白,学到了不少的东西。知识越分享越值钱,我这段时间总结(包括从别的大佬那边学习,引用)了一些平常学习和面试中的重点(自我认为),希望给大家带来一些帮助 这是消息中间件的文章,大家没有看过的可以跟着看一下 【进阶之路】消息队列——原理及选型(一) 【...

南橘Home 2476

深入解析SAP MM模块OBYC自动科目分配机制:从T030表到实战配置

本文深入解析SAP MM模块中OBYC自动科目分配机制,阐明其作为连接物流与财务核心桥梁的作用。文章以T030表为核心,详细拆解其字段结构与检索逻辑,并通过采购收货、生产发料等实战场景,手把手演示配置步骤与关键要点,帮助读者掌握从原理到实践的完整知识体系,实现业财无缝对接。

nft7creator的博客 358

可靠消息最终一致性【本地消息表、RocketMQ 事务消息方案】

可靠消息最终一致性方案是指当事务发起方执行完成本地事务后并发出一条消息,事务参与方(消息消费者)一定能够接收消息并处理事务成功,此方案强调的是只要消息发给事务参与方最终事务要达到一致。此方案是利用消息中间件完成,如下图:事务发起方(消息生产方)将消息发给消息中间件,事务参与方从消息中间件接收消息,事务参与方(消息消费方)和消息中间件之间都是通过网络通信,由于网络通信的不确定性会导致分布式事务问题。因此可靠消息最终一致性方案要解决以下几个问题: 【1】

很多时候犯错都是在不知情的情况下发生的 1372

Windows 11/10系统盘被BitLocker锁了别慌!手把手教你用manage-bde命令找回密钥并解锁

本文详细介绍了当Windows 11/10系统盘被BitLocker锁定后的恢复方法,重点讲解了如何使用manage-bde命令行工具找回密钥并解锁加密驱动器。通过进入Windows恢复环境、诊断锁定状态、提取恢复密钥ID以及执行解锁操作等步骤,帮助用户有效解决BitLocker锁定问题,同时提供了后续防护优化建议和高级故障排除技巧。

weixin_42542669的博客 1461

S32K3的STCU2模块详解:从硬件FSM到MCAL配置,搞懂BIST在线测试全流程

本文深入解析S32K3系列MCU的STCU2模块,从硬件FSM架构到MCAL配置,详细讲解BIST在线测试全流程。通过分区的安全策略和实战代码示例,帮助开发者掌握汽车电子系统中的功能安全实现,提升系统可靠性和安全性。

weixin_42525328的博客 446

分布式事务最终一致性方案之可靠消息

4.同一事务中,先操作库,再发送消息。但是如果事务执行成功,消息发送成功,由于网络原因,导致发送消息相应超时,抛出异常回滚了事务,这个时候消息可能已经被事务参与方消费了,并执行了业务。这里涉及到消息发送与确认机制,消息发送的不可靠性,如何保证消息发送的一致性。1.消息表耦合在业务库中,需要额外的处理发送消息的操作,不利于消息的扩展,同事如果消息表堆积了大量消息数据,会对业务操作产生一定的性能影响。事务发起方执行本地事务成功后发出一条消息,事务参与方也就是消息的消费者,接收到消息并执行成功本地事务。

softshow1026的博客 1554

头歌工程实训答案-机器学习篇之手写体识别篇

第2关:激活函数'''x:负无穷到正无穷的实数'''if x<=0:return 0else:return x#***第3关:反向传播算法import os。

m0_71537260的博客 2518

分布式事务解决方案之可靠消息最终一致性、最大努力通知

点击上方蓝色字体,选择“设为星标”优质文章,及时送达本文来源:https://dwz.cn/730BLvt0上篇文章主要介绍了分布式事务解决方案之2PC、TCC,传送门,这篇文章将主要讲...

u010821757的博客 4212

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

分布式事务解决方案之可靠消息最终一致性

可靠消息最终一致性方案是指当事务发起方执行完成本地事务后并发出一条消息,事务参与方(消息消费者)一定能 够接收消息并处理事务成功,此方案强调的是只要消息发给事务参与方最终事务要达到一致。此方案是利用消息中间件完成,如下图:\事务发起方(消息生产方)将消息发给消息中间件,事务参与方从消息中间件接收消息,事务发起方和消息中间件 之间,事务参与方(消息消费方)和消息中间件之间都是通过网络通信,由于网络通信的不确定性会导致分布式事 务问题。1.本地事务与消息发送的原子性问题。

LU58542226的博客 762

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

分布式事务 — 可靠消息最终一致性方案

大家好,我是狼王,一个爱打球的程序员事务想必大家并不陌生,比如经常被人提起的ACID,但是为了后续的分布式事务的内容,我们先来聊聊 ACID,然后再介绍下什么是分布式事务,最后着重讲下基于...

dabaoshiwode的博客 327

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

分布式事务解决方案(最终一致性【可靠消息解决方案】)

如果支付服务调用账户服务的接口超过了设置的最大次数,仍然没有调用成功,则支付服务需要提供查询支付结果的接口,以便账户服务调用并恢复丢失的业务。消息恢复服务会定期检测事务参与方业务的执行状态和消息库中的数据,如果发现事务参与方业务的执行状态与消息库中的数据不一致(这里的不一致,通常指的是事务参与方消费消息后,执行本地事务操作失败,导致事务参与方本地事务的执行状态与消息库中的数据不一致),消息恢复服务就会恢复消息库中消息的状态,使消息的状态回滚为事务发起方发送消息成功,但未被事务参与方消费的状态。

u012014505的博客 1154

可靠消息最终一致性分布式事务解决方案

之前文章写过主流的一些,但其实工作中很少有一些高并发的业务中去使用这些方案,因为对于高并发的场景来说,引入这些方案的性能损耗太大,且对系统事务侵入性太强影响系统稳定性。所以在高并发的业务中,如果对实时性可以容忍秒级的延迟,那么使用最终一致性事务方案是最合适的选择。

WannaRunning的博客 1373

分布式事务解决方案-可靠消息最终一致性

分布式事务解决方案之可靠消息最终一致性 什么是可靠消息最终一致性事务 可靠消息最终一致性方案是指当事务发起方执行完成本地事务后并发出一条消息,事务参与方(消息消费者)一定能 够接收消息并处理事务成功,此方案强调的是只要消息发给事务参与方最终事务要达到一致。 此方案是利用消息中间件完成,如下图: 事务发起方(消息生产方)将消息发给消息中间件,事务参与方从消息中间件接收消息,事务发起方和消息中间件 之间,事务参与方(消息消费方)和消息中间件之间都是通过网络通信,由于网络通信的不确定性会导致分布式事 务问题。

wry的博客 734

分布式事务解决方案-RocketMQ实现可靠消息最终一致性

1.什么是可靠消息最终一致性事务 ​ 可靠消息最终一致性方案是指当事务发起方执行完成本地事务后并发出一条消息,事务参与方(消息消费者)一定能够接收消息并处理事务成功,此方案强调的是只要消息发给事务参与方最终事务要达到一致。 ​ 此方案是利用消息中间件完成,如下图: ​ 事务发起方(消息生产方)将消息发给消息中间件,事务参与方从消息中间件接收消息,事务发起方和消息中间件之间,事务参与方(消息消费方)和消息中间件之间都是通过网络通信,由于网络通信的不确定性会导致分布式事务问题。 因此可靠..

z69183787的专栏 1098
上一篇: 分布式事务 本地消息表
下一篇: docker 常用命令
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值