• 生产环境最小单元高可用部署模式:

如果192.168.3.100的broker假死,那么3.110,3.111的nameserver都能在2分钟内感知broker-a宕机,然后客户端能成功从nameserver处获得最新的路由信息,

如果nameserver假死,出现超时错误,只要broker不宕机,则通过缓存,还是能正常工作的,

但如果nanmeserver,broker一起假死,则上述架构还是无法规避上面的问题

最佳实践主要包含如下两条
1、nameserver与broker一定要分开部署,进行隔离。
2、nameserver与客户端的连接,应该在超时后,关闭连接,触发nameserver漂移,需要修改源码。

  • Half Message(半消息)

是指暂不能被Consumer消费的消息。Producer 已经把消息成功发送到了 Broker 端,但此消息被标记为暂不能投递状态,处于该种状态下的消息称为半消息。需要 Producer

对消息的二次确认后,Consumer才能去消费它。

  • 消息回查

由于网络闪段,生产者应用重启等原因。导致 Producer 端一直没有对 Half Message(半消息) 进行 二次确认。这时Brock服务器会定时扫描长期处于半消息的消息,会主动询问 Producer端 该消息的最终状态(Commit或者Rollback),该消息即为 消息回查

  1. A服务先发送个Half Message给Brock端,消息中携带 B服务 即将要+100元的信息。
  2. 当A服务知道Half Message发送成功后,那么开始第3步执行本地事务。
  3. 执行本地事务(会有三种情况1、执行成功。2、执行失败。3、网络等原因导致没有响应)
  4. 如果本地事务成功,那么Product主动向Brock服务器发送Commit,这样B服务就可以消费该message。
  5. 如果本地事务失败,那么Product主动向Brock服务器发送Rollback,那么就会直接删除上面这条半消息。
  6. 如果因为网络等原因迟迟没有返回失败还是成功,那么会执行RocketMQ的回调接口,来进行事务的回查(此时由Brock主动发送5)。

详见:浅入浅出-RocketMQ 《浅入浅出》-RocketMQ - 掘金

RocketMQ 消息幂等消费思考逻辑(先登记,再消费)

RocketMQ 分布式事务消息过程分析相关推荐

  1. Apache RocketMQ 正式开源分布式事务消息

    摘要: 近日,Apache RocketMQ 社区正式发布4.3版本.此次发布不仅包括提升性能,减少内存使用等原有特性增强,还修复了部分社区提出的若干问题,更重要的是该版本开源了社区最为关心的分布式事 ...

  2. 消息中间件学习总结(15)——Apache RocketMQ 正式开源分布式事务消息

    近日,Apache RocketMQ 社区正式发布4.3版本.此次发布不仅包括提升性能,减少内存使用等原有特性增强,还修复了部分社区提出的若干问题,更重要的是该版本开源了社区最为关心的分布式事务消息, ...

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

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

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

    背景 分布式系统中,我们时常会遇到分布式事务的问题,如更新订单然后发送短信提醒,但是这两个操作需要操作不同的数据库,那么此时数据库的事务就不能处理好了 传统方式存在的问题: 1.先发送消息,再执行数据 ...

  5. rocket mq 实现分布式事务消息 以及示例代码

    分布式事务的来龙去脉 业务场景:用户A转账100元给用户B,这个业务比较简单,具体的步骤: 1.用户A的账户先扣除100元 2.再把用户B的账户加100元 如果在同一个数据库中进行,事务可以保证这两步 ...

  6. RocketMQ(九):rocketMQ设计的全链路消息零丢失方案?+rocketmq消息中间件事务消息机制的底层实现原理?+half是什么?+half消息是如何对消费者不可见的?

    前言: 目前rocketmq更新已经更新了11篇博客了,预计接下来的2-3篇是暂时的更新进度了,准备更新一下springboot或者是jvm,mysql相关的专题出来,后续更新完事后,再分享一些实战性 ...

  7. RocketMQ的Producer详解之分布式事务消息(回顾事务)

    回顾什么事务 聊什么是事务,最经典的例子就是转账操作,用户A转账给用户B1000元的过程如下: 用户A发起转账请求,用户A账户减去1000元 用户B的账户增加1000元 如果,用户A账户减去1000元 ...

  8. RocketMQ的Producer详解之分布式事务消息(原理分析)

    Half(Prepare) Message 指的是暂不能投递的消息,发送方已经将消息成功发送到了 MQ 服务端,但是服务端未收到生产者对该消息的二次确认,此时该消息被标记成"暂不能投递&qu ...

  9. RocketMQ 分布式事务

    在RocketMQ中生产者有三种角色NormalProducer(普通).OrderProducer(顺序).TransactionProducer(事务),根据名字大概可以看出各个代表着什么作用,我 ...

最新文章

  1. Java中的BigDecimal类你真的了解吗?
  2. 某游戏在华为鸿蒙,部分安卓游戏在华为鸿蒙 OS 上运行,被识别成使用 PC 端模拟器...
  3. Go版本升级后编译出错:Load redeclared in this block
  4. micropython开发环境_micropython开发者指南
  5. 再见 CSV,速度提升 150 倍!
  6. [51CTO]给您介绍Windows10各大版本之间区别
  7. 操作系统 —— 文件管理
  8. 构建电商网站业务安全系统,防止“薅羊毛”
  9. Php jsondb,JsonDB-PHP
  10. python 白色怎么表示_python – 如何使用pil使用白色背景(透明?)的round_corner标识?...
  11. Android SlidingMenu开源库及其使用
  12. 80% 的学校还在给新生上 C 语言,它们 OUT 了吗?
  13. python 模拟自己的手写字体
  14. java 数组求极值题目_数组的求极值
  15. cmd 执行html文件,cmd执行bat文件 cmd文件和bat文件有什么区别?
  16. 第1讲(数据库软件的配置与游戏数据库的搭建)
  17. 阿里云因发现Log4j2 核弹级漏洞,未及时上报,被工信部处罚。。
  18. Mac-记录一些超好用的快捷键
  19. 《数据结构教程(李春葆主编 第五版)》第七章源代码—树和二叉树
  20. 2023二建建筑施工备考第二天Day03

热门文章

  1. 【ACWing】1063. 永无乡
  2. 脚本计算后台程序消耗资源
  3. 众包,一个不成熟的类威客概念
  4. 人脸识别 无法打开相机 笔记本_笔记本电脑提示找不到支持Windows hello人脸的摄像头的解决办法...
  5. 房产门户企业织梦模板/DedeCMS房地产楼盘网站模板下载
  6. SQL Server 2005中的分区表(一):什么是分区表?为什么要用分区表?如何创建分区表?
  7. 微信 libco 协程库原理剖析
  8. 动态获取bind dns日志IP脚本
  9. jmeter接口测试及详细步骤
  10. html实现折叠面板,js轻松实现折叠面板