RocketMQ
文章平均质量分 89
中间件兴趣圈
《RocketMQ技术内幕》一书作者、RocketMQ开源社区优秀布道师、CSDN2020博客之星TOP2,主打成体系剖析java中间件,已发布RocketMQ、Kafka、Dubbo、Sentinel、Canal、ElasticJob、ElasticSearch等15个专栏。
展开
-
RocketMQ ACL架构升级的一些建议与实践
官方开源版本不支持万亿级消息流程原创 2023-02-16 22:53:29 · 673 阅读 · 0 评论 -
大家心心念念的RocketMQ5.x入门手册来喽
为了更好的拥抱云原生,RocketMQ5.x架构进行了大的重构,提出了存储与计算分离的设计架构,本文将带领大家快速入门原创 2023-02-12 15:07:56 · 1743 阅读 · 3 评论 -
我擦,RocketMQ的tag还有这个“坑”
RocketMQ提供了基于Tag的消息过滤机制,但在使用过程中有很多朋友或多或少会有一些疑问,我不经意在RocketMQ官方钉钉群,我记得有好多朋友都有问到如下问题:今天我就与RocketMQ Tag几个值得关注的问题,和大家来做一个分享,看过后的朋友,如果觉得有帮助,期待你的点赞支持。消费组订阅关系不一致为什么会到来消息丢失?如果一个tag的消息数量很少,是否会显示很高的延迟?1、消费组订阅关系不一致导致消息丢失从消息消费的视角来看消费组是一个基本的物理隔离单位,每一个消费组拥有自原创 2022-03-21 22:19:36 · 3072 阅读 · 1 评论 -
RocketMQ这样做,压测后性能提高30%
RocketMQ4.9.1版本针对同步复制模型进行了性能优化,压测后提升30%原创 2021-11-29 12:01:31 · 28806 阅读 · 21 评论 -
7张图揭晓RocketMQ存储设计的奥妙
本文节选自最新上市《RocketMQ技术内幕》第二版本,一个最大的改变就是在进入源码分析之前,首先通过图文的方式,提炼出RocketMQ的核心工作机制,降低源码阅读的难度,引发思考。原创 2021-11-01 08:30:00 · 1786 阅读 · 1 评论 -
顺序消费可没你想的这么简单,队列数量的变更往往无法保证同一个账号的消息发送到同一个分区,怎么解决?
RocketMQ顺序消费在金融行业中的应用实战原创 2021-06-15 00:10:54 · 13526 阅读 · 17 评论 -
第一次尝试为Apache顶级开源项目贡献代码
我们离Apache顶级开源项目其实也很近。原创 2021-05-30 23:07:53 · 2855 阅读 · 22 评论 -
RocketMQ ACL版本升级过程中的曲折经历(大厂线上环境大规模MQ升级开启ACL实战)
RocketMQ是一款非常优秀的主流中间件,本文是RocketMQ系列的第52篇文章,重点阐述笔者在公司升级RocketMQ集群并开启ACL的真实经历,并且遇到的一些问题及其解决方案,实战性非常强。1、ACL机制的重要性某一天突然接到安全团队的通知,公司内网部署的RocketMQ集群安全性非常低,需要立马整改。接到安全团队的通知,马上开启了复盘,公司内部的RocketMQ集群还是基于RocketMQ4.1搭建的,存在重大安全隐患,因为生产环境的任意一台机器,不需要知道RocketMQ集群所在机器的密码原创 2021-05-09 20:49:20 · 1699 阅读 · 11 评论 -
性能调优篇:困扰我半年之久的RocketMQ timeout exception 终于破解了
在内网环境中,超时问题,网络表示这个锅我不背。经过这次漫长的排查过程,对网络抓包、TCP滑动窗口、Netty线程模型的理解更加深刻了。原创 2021-04-28 20:51:09 · 6113 阅读 · 13 评论 -
线上环境大规模RocketMQ集群不停机优雅升级实践
试图通过生产环境升级RocketMQ这个具体事项阐述一名架构师如何做架构方案设计、如何落地,一名优秀的架构师需要具备的最核心素质是什么?原创 2021-04-18 22:53:43 · 1541 阅读 · 5 评论 -
读写锁在高性能消息中间件RocketMQ中的妙用
《RocketMQ技术内幕》作者、博客:https://www.codingw.net/,专注成体系剖析java主流中间件,打造完备的互联网分布式架构体系。已发布12个java主流中间件源码分析专栏。原创 2021-03-31 22:17:50 · 3404 阅读 · 6 评论 -
剥丝抽茧|阿里面试题解读:MQ消费端遇到瓶颈该怎么办?
除了横向扩容外还有其他什么办法吗?原创 2021-03-15 12:09:34 · 9180 阅读 · 33 评论 -
事务消息应用场景、实现原理与项目实战(附全部源码)
本文目录1、活动中心场景介绍2、事务消息实现原理3、事务消息实战3.1 UserServiceImpl 核心实现3.2 UserRegTransactionListener 核心实现3.2.1 实现 executeLocalTransaction3.2.2 实现 checkLocalTransaction3.3 代码获取1、活动中心场景介绍在电商系统上线初期,往往会进行一些“拉新”活动,例如活动部门提出新用户注册送积分、送优惠券活动。基于分布式、微服务的设计理念,通常的架构设计(子系统交互)如下图所示原创 2021-03-08 23:32:44 · 2762 阅读 · 14 评论 -
RocketMQ专栏被阿里巴巴官方整理出两本电子书
『中间件兴趣圈』的RocketMQ免费专栏被阿里巴巴相中了,将公众号中的文章整理成电子书,更加方便读者朋友们的阅读。RocketMQ专栏相继获得CSDN2020年度博客之星专家评审团、阿里巴巴的高度好评,我想读者朋友们应该能窥探到一些信息,我觉得有两个方面:RocketMQ专栏的质量比较高中间件在互联网架构体系的重要性。接下来将简单介绍一下本文当之无愧的主角:《RocketMQ专栏》。RocketMQ专栏目录如下图所示:总的来看主要从如下三部分进行展开:线上故障分析结合笔者日原创 2021-03-04 22:25:14 · 4967 阅读 · 10 评论 -
RocketMQ避坑指南:你部署的RocketMQ集群真的是高可用?
笔者比较“悲催”,临近年末由笔者维护的生产MQ集群中的一台物理机内存故障导致操作系统异常重启,持续10分钟中出现众多的应用发送客户端出现发送消息络超时,导致事故并定性为S1,笔者的“年终奖”。。。1、故障描述RocketMQ 集群采取的部署架构为2主2从,其部署架构如下图所示:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传其部署架构中一个非常明显的特点是一台物理机上分别部署了 nameserver,broker 两个进程。其中一台机器(192.168.3.100)的内存出现原创 2020-12-31 12:24:56 · 5737 阅读 · 7 评论 -
Kafka与RocketMQ性能对比大揭秘
从文件布局、数据写入方式、消息发送三个方面剖析RocketMQ与Kafka的性能差异的原因。原创 2020-11-30 22:10:22 · 16863 阅读 · 21 评论 -
RocketMQ核心概念扫盲篇
在正式进入RocketMQ的学习之前,我觉得有必要梳理一下RocketMQ核心概念,为大家学习RocketMQ打下牢固的基础。1、RocketMQ部署架构在RocketMQ主要的组件如下:NameserverNameserver集群,topic的路由注册中心,为客户端根据Topic提供路由服务,从而引导客户端向Broker发送消息。Nameserver之间的节点不通信。路由信息在Nameserver集群中数据一致性采取的最终一致性。Broker消息存储服务器,分为两种角色:Master原创 2020-10-19 22:10:10 · 3724 阅读 · 1 评论 -
RocketMQ学习环境搭建(RocketMQ安装与IDEA Debug环境搭建)
本文主要分如下几个部分展开:Linux服务器安装RocketMQ、RocketMQ-ConsoleIDEA中搭建可调试环境1、Linux安装RocketMQ、RocketMQ-Console1.1安装RocketMQStep1:从如下地址下载RocketMQ安装包cd /opt/applicationwget https://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.z原创 2020-10-13 21:25:56 · 2470 阅读 · 4 评论 -
RocketMQ消息发送常见错误与解决方案
本文将结合自己使用RocketMQ的经验,对消息发送常见的问题进行分享,基本会遵循出现问题,分析问题、解决问题。1、No route info of this topic无法找到路由信息,其完整的错误堆栈信息如下:而且很多读者朋友会说Broker端开启了自动创建主题也会出现上述问题。RocketMQ的路由寻找流程如下图所示:上面的核心关键点如下:如果Broker开启了自动创建Topic,在启动的时候会默认创建主题:TBW102,并会随着Broker发送到Nameserver的心跳包汇报给Nam原创 2020-09-30 20:42:07 · 18554 阅读 · 1 评论 -
我的另一种参与 RocketMQ 开源社区的方式
一个草根程序员参与开源项目的另外一种方式。原创 2020-06-08 19:10:34 · 1685 阅读 · 1 评论 -
RocketMQ一行代码造成大量消息发送失败
1、问题现象首先接到项目反馈使用 RocketMQ 会出现如下错误:错误信息关键点:MQBrokerException:CODE:2 DESC:[TIMEOUT_CLEAN_QUEUE]broker busy,start flow control for a while,period in queue:205ms,size of queue:880。由于项目组并没有对消息发送失败做任何补偿,导致丢失消息丢失,故需要对这个问题进行深层次的探讨,并加以解决。2、问题分析首先我们根据关键字:TIMEO原创 2020-05-18 21:01:58 · 21416 阅读 · 21 评论 -
RocketMQ msgId与offsetMsgId释疑(实战篇)
消息发送、消息消费、RocketMQ queryMsgById命令以及rocketmq-console等使用场景中究竟是用的msgId还是offsetMsgId。原创 2020-03-08 20:43:03 · 7412 阅读 · 6 评论 -
踩坑记:rocketmq-console 消费TPS为0,但消息积压数却在降低是个什么“鬼”
本节目录1、背景2、问题分析2.1 rocketmq-console 数据获获取逻辑探讨2.2 rocketmq 消费TPS统计实现原理2.2.1 消费TPS计算逻辑2.2.2 如何采集消费TPS原始数据3、问题解答1、背景上周六的19:00,接到项目反馈,他们的项目从昨天的23:00就停止消费了,而整个集群没有出现异常,故此种情况更多的是因为项目组的原因,由于业务已积压将近一天,并且项目在昨...原创 2019-12-02 21:31:26 · 8457 阅读 · 5 评论 -
一次 RocketMQ 进程自动退出排查经验分享(实战篇)
1、背景公司一个 RocketMQ 集群由4主4从组成,突然其中3台服务器“竟然”在同一时间下线,其监控显示如下:依次查看三台机器的监控图形,时间戳几乎完美“吻合”,不可思议吧。2、故障分析出现问题,先二话不说,马上重启各服务器,尽快恢复集群,降低对业务的影响,接下来开始对日志进行分析。Java 进程自动退出(rocketmq 本身就是一个java进程),一种最常见的问题是由于内存溢出...原创 2019-10-27 09:58:04 · 4635 阅读 · 8 评论 -
再谈 RocketMQ broker busy(实战篇)
本文将在 RocketMQ 消息发送system busy、broker busy原因分析与解决方案 的基础上,结合生产上的日志尝试再次理解 broker busy 以及探讨解决方案。首先,broker busy 相关的日志关键字如下:[REJECTREQUEST]system busytoo many requests and system thread pool busy[PC_SY...原创 2019-10-24 09:04:28 · 3617 阅读 · 0 评论 -
源码阅读技巧篇:RocketMQ DLedger 多副本即主从切换专栏回顾
源码阅读技巧篇,以笔者从零开始学习 rocketmq dledger 多副本即主从切换为例,展示笔者的阅读源码的方法。原创 2019-10-20 22:04:02 · 1221 阅读 · 1 评论 -
RocketMQ 升级到主从切换(DLedger、多副本)实战
本文主要介绍如何将 RocketMQ 集群从原先的主从同步升级到主从切换。本文首先先介绍与 DLedger 多副本即 RocketMQ 主从切换相关的核心配置属性,然后尝试搭建一个DLedger 集群,从原先的 RocketMQ 集群平滑升级到 DLedger 集群的示例,并简单测试一下主从切换功能。本节目录1、RocketMQ DLedger 多副本即主从切换核心配置参数详解2、搭建主从同步...原创 2019-10-13 16:12:04 · 5294 阅读 · 8 评论 -
源码分析 RocketMQ DLedger 多副本存储实现
详细介绍了RocketMQ DLedger 多副本存储实现部分,主要参考RocketMQ 存储部分的设计理念,并重点阐述 DLedger 消除存储格式、索引文件存储格式,诸如内存映射、刷盘、过期文件删除、文件加载与恢复由于在《RocketMQ技术内幕》中详细介绍,故本文并未重复介绍。原创 2019-09-01 17:48:56 · 4264 阅读 · 2 评论 -
RocketMQ 主题扩分片后遇到的坑
消息组接到某项目组反馈,topic 在扩容后出现部分队列无法被消费者,导致消息积压,影响线上业务?考虑到该问题是发送在真实的线上环境,为了避免泄密,本文先在笔者的虚拟机中来重现问题。1、案情回顾1.1 集群现状集群信息如下:例如业务主体名 topic_dw_test_by_order_01 的路由信息如图所示:当前的消费者信息:broker 的配置信息如下:brokerClu...原创 2019-09-08 16:49:08 · 4809 阅读 · 4 评论 -
源码分析 RocketMQ DLedger(多副本) 之日志追加流程
详细剖析了客户端向 Leader 节点追加消息流程,重点讲述了判断 push 队列是否已满、leader 节点是如何存储日志的,关于日志的复制转发以及仲裁将在下一篇中重点介绍。原创 2019-09-15 19:11:39 · 2811 阅读 · 2 评论 -
源码分析 RocketMQ DLedger(多副本) 之日志复制(传播)
详细介绍了rocketmq dledger 多副本之日志转发、日志复制机制,从DLedgerEntryPusher、EntryHandler、QuorumAckChecker、EntryDispatcher的实现细节,并重点阐述了EntryHandler、QuorumAckChecker、EntryDispatcher 这三个线程如何协作完成日志的复制与数据一致性如何得到保证。原创 2019-09-22 17:03:12 · 2622 阅读 · 4 评论 -
基于 raft 协议的 RocketMQ DLedger 多副本日志复制设计原理
试图用3张流程图再次揭示 RocketMQ DLedger 多副本即主从切换关于日志复制的实现原理,并思考实现日志复制需要解决的问题。原创 2019-09-28 19:28:52 · 2845 阅读 · 1 评论 -
RocketMQ 整合 DLedger(多副本)即主从切换实现平滑升级的设计技巧
源码分析 RocketMQ DLedger 多副本系列已经进行到第 8 篇了,前面的章节主要是介绍了基于 raft 协议的选主与日志复制,从本篇开始将开始关注如何将 DLedger 应用到 RocketMQ中。摘要:详细分析了RocketMQ DLedger 多副本(主从切换) 是如何整合到 RocketMQ中,本文的行文思路首先结合已掌握的DLedger 多副本相关的知识初步思考其实现思路,...原创 2019-10-03 15:26:15 · 7219 阅读 · 2 评论 -
源码分析 RocketMQ DLedger 多副本即主从切换实现原理
DLedger 基于 raft 协议,故天然支持主从切换,即主节点(Leader)发生故障,会重新触发选主,在集群内再选举出新的主节点。RocketMQ 中主从同步,从节点不仅会从主节点同步数据,也会同步元数据,包含 topic 路由信息、消费进度、延迟队列处理队列、消费组订阅配置等信息。那主从切换后元数据如何同步呢?特别是主从切换过程中,对消息消费有多大的影响,会丢失消息吗?温馨提示:本文...原创 2019-10-07 16:08:32 · 2667 阅读 · 9 评论 -
源码分析RocketMQ之消息ACK机制(消费进度)
1、消息消费进度概述首先简要阐述一下消息消费进度:消费者订阅消息消费队列(MessageQueue), 当生产者将消息负载发送到 MessageQueue 中时,消费订阅者开始消费消息,消息消费过程中,为了避免重复消费,需要一个地方存储消费进度(消费偏移量)。消息模式主要分为集群模式、广播模式:集群模式:一条消息被集群中任何一个消费者消费。 广播模式:每条消息都被每一个消费者消费...原创 2018-01-17 22:56:34 · 9363 阅读 · 11 评论 -
源码分析 RocketMQ DLedger 多副本之 Leader 选主
温馨提示:《RocketMQ技术内幕》作者倾力打造的全新专栏:RocketMQ 多副本(主从切换):1、《RocketMQ 多副本前置篇:初探raft协议》本文将按照《RocketMQ 多副本前置篇:初探raft协议》的思路来学习RocketMQ选主逻辑。首先先回顾一下关于Leader的一些思考:节点状态需要引入3中节点状态:Follower(跟随者)、Candidate(候选者),...原创 2019-08-18 18:52:20 · 5689 阅读 · 11 评论 -
RocketMQ 多副本前置篇:初探raft协议
详细介绍了raft协议的Leader选举流程、日志复制两个重要部分,并提出实现raft协议需要考虑的问题点,为源码解析RocketMQ Dledger 多副本模块打下坚实的基础。原创 2019-08-11 22:37:26 · 4892 阅读 · 2 评论 -
源码分析RocketMQ顺序消息消费实现原理
所谓顺序消费,rocketmq支持同一消费队列上的消息顺序消费。 消息消费涉及3个点: 1、消息队列重新负载 2、消息拉取 3、消息消费 按照消息消费步骤来揭开RocketMQ顺序消息消费实现原理。 1、消息队列负载 RocketMQ在同一个JVM进程拥有一个clientConfigId(客户端ID),该JVM进程中不同的消息消费组的消息客户端ID相同,因为在JVM进程中对于每一个C...原创 2018-03-02 13:58:30 · 13174 阅读 · 3 评论 -
源码分析RocketMQ系列索引
1、RocketMQ源码分析之NameServer2、RocketMQ源码分析之Broker概述与同步消息发送原理与高可用设计及思考3、源码分析RocketMQ之CommitLog消息存储机制4、源码分析RocketMQ之消息消费5、源码分析RocketMQ消息消费机制----消费者拉取消息机制6、 源码分析RocketMQ消息消费机制----消费端消息负载均衡机制与重新分布...原创 2017-12-24 23:01:08 · 32864 阅读 · 11 评论 -
源码分析RocketMQ消息拉取拉模式PULL
消费者 与 消息存储方Broker一般有两种通信机制:推(PUSH)、拉(PULL) 推模式:消息发送者将消息发送到Broker,然后Broker主动推送给订阅了该消息的消费者。 拉模式:消息发送者将消息发送到Broker上,然后由消息消费者自发的向Broker拉取消息。 RocketMQ推拉机制实现: 严格意义上来讲,RocketMQ并没有实现PUSH模式,而是对拉模式进行一层包装,在消...原创 2018-02-22 22:41:56 · 15239 阅读 · 8 评论