使用MQ来保证分布式事务的最终一致性

使用MQ来保证分布式事务的最终一致性
参考URL:https://www.bbsmax.com/A/obzbM9QVdE/

生产者的逻辑
1、订单入库
2、消息记录入库
3、发送消息(采用确认模式)
4、mq收到消息之后给生产端一个确认消息
5、生产端监听这个确认消息
6、根据监听结果操作消息表的状态
7、定时任务定时去操作消息状态为1未发送的记录,就是那些没有监听到结果的记录进行重新发送

消费者的逻辑
1、将收到消息的消息入库
2、处理消息失败消息记录的状态就为未处理
3、处理消息成功修改消息记录的状态为处理成功
4、收到相同的消息id的消息直接丢弃
5、定时任务去操作那些未处理,并且已经经过一段时间的消息
6、针对那些一直处理失败的,且很长一段时间都没办法处理成功的消息交由人工或者其他途径处理

需要注意的问题
1、消息的100%投递
首先我们需要保证的就是消息一定要投递出去,要是我们消息都不能保证投递成功,那么后面的逻辑就走不下去了。

2、我们需要保证幂等性(无论多少次操作,最后造成的结果和只执行一次造成的结果是一样的。)
消息肯定会出现重复投递的问题,这里应该由消费端去保证,重复的消息不能进行消费

而保证这两个问题的方式就藏在上面的逻辑流程图中,请仔细揣摩其中的用意。

使用MQ来保证分布式事务的最终一致性相关推荐

  1. MQ如何保证分布式事务的最终一致性

    分布式事务:业务相关的多个操作,保证他们同时成功或者同时失败 最终一致性:与之对应的就是强一致性 MQ中要保证事务的最终一致性,就需要做到两点 1.生产者要保证100%的消息投递.事务消息机制 2.消 ...

  2. 分布式事务——消息最终一致性方案

    前言 分布式事务一直是服务化拆分后一个绕不开的话题,原来在单体应用中执行的多个逻辑操作,现在被拆分成了多个服务之间的远程调用.虽然服务化为我们的系统带来了水平伸缩的能力,然而随之而来挑战就是分布式事务 ...

  3. DotNetCore.Cap分布式事务实现最终一致性

    项目演化过程中,微服务已经遍地开花.一个大项目下几十上百个微服务已经是常态.但衍生出另外一个问题就是跨微服务事务,跨库事务的分布式事务.市面了解过的有2CP.3CP.TCC等等分布式事务解决方案,各有 ...

  4. 【分布式事务】最终一致性解决方案

    对于分布式事务一般采用的都是最终一致性方案,而不是强一致性.而在使用最终一致性的方案时,一定要提到的一个概念是状态机. 什么是状态机?是一种特殊的组织代码的方式,用这种方式能够确保你的对象随时都知道自 ...

  5. Seata-AT 如何保证分布式事务一致性

    作者 | 陈健斌(funkye) github id: a364176773 来源|阿里巴巴云原生公众号 Seata 是一款开源的分布式事务解决方案,star 高达 18100+,社区活跃度极高,致力 ...

  6. Seata-AT如何保证分布式事务一致性

    Seata-AT如何保证分布式事务一致性 Seata 是一款开源的分布式事务解决方案,star高达18100+,社区活跃度极高,致力于在微服务架构下提供高性能和简单易用的分布式事务服务,本文将剖析Se ...

  7. 「分布式架构」最终一致性:反熵

    在这个博客系列中,我们将探讨最终的一致性,如果没有合适的词汇表,这个术语很难定义.这是许多分布式系统使用的一致性模型,包括XDB Enterprise edition.理解最终一致性需要两个概念:暗示 ...

  8. 分布式事务之最终一致的Mq实现

    问题的起源 分布式系统的特性 对分布式系统有过研究的读者,可能听说过"CAP定律"."Base理论"等,非常巧的是,化学理论中ACID是酸.Base恰好是碱.这 ...

  9. rocket mq 监听端口_MQ消息最终一致性解决方案

    随着分布式服务架构的流行与普及,原来在单体应用中执行的多个逻辑操作,现在被拆分成了多个服务之间的远程调用.虽然服务化为我们的系统带来了水平伸缩的能力,然而随之而来挑战就是分布式事务问题,多个服务之间使 ...

最新文章

  1. PTA 基础编程题目集 7-13 日K蜡烛图 C语言
  2. 软件测试——等价类划分
  3. 数组索引必须为正整数或逻辑值_Office 365函数新世界——动态数组
  4. mysql启多_MySQL启多个实例
  5. redis sds的申请扩容源码
  6. java 画笔跟swing组件_「软帝学院」:2019思维最清晰的java学习路线
  7. OpenSSL SSL_connect: Connection was reset in connection to github.com:443
  8. 数据流(任务并行库 TPL)
  9. STM32选型与命名规则
  10. vs2008 sp1 regex
  11. C#开发工控上位机编程 csdn_5种将死的编程语言
  12. 看看别人家的神仙公司
  13. LeetCode 2300. 咒语和药水的成功对数(二分查找)
  14. matlab将z域变为s域,时域、S域、Z域转换
  15. 迅雷9右侧栏关闭广告
  16. 阿里云服务(四)—云数据库RDS
  17. xiaomi5小米5手机刷原生安卓实测稳定可靠方法,附下载全套刷机软件卡刷rom
  18. 手机屏幕坐标获取方法
  19. 2018年SCI论文--整合GEO数据挖掘完整复现 八 :STRING数据库构建蛋白质相互作用网络(PPI),cytoscape软件筛选hub基因
  20. 数组去重newset

热门文章

  1. 请写出一个智能排班系统的前端页面
  2. 常用阿拉伯字母书写以及读法
  3. 淘宝网店的建设!想开淘宝店的朋友欢迎找我!
  4. ubuntu下载及安装搜狗拼音输入法
  5. 瑞熙贝通|数字化实验室综合管理系统V3.0
  6. 自然语言处理简单介绍
  7. 2023年西北农林科技大学生物学考研上岸前辈备考经验指导
  8. 基于SRS服务器实现Android-Web端视频通话(3):Android端向SRS服务器推送WebRTC流
  9. 不同款式木屐各种角度的画法大全
  10. ElasticSearch搜索引擎(一)