随笔分类 -  RocketMQ

源码分析RocketMQ 系列、RocketMQ实战与故障分析。
摘要:从官方这边获悉,RocketMQ在4.9.1版本中对消息发送进行了大量的优化,性能提升十分显著,接下来请跟着我一起来欣赏大神们的杰作。 根据RocketMQ4.9.1的更新日志,我们从中提取到关于消息发送性能优化的Issues:2883,具体优化点如截图所示: 首先先尝试对上述优化点做一个简单的介绍 阅读全文
posted @ 2021-12-06 22:43 中间件兴趣圈 阅读(464) 评论(0) 推荐(2)
摘要:1、背景 公司一个 RocketMQ 集群由4主4从组成,突然其中3台服务器“竟然”在同一时间下线,其监控显示如下: 依次查看三台机器的监控图形,时间戳几乎完美“吻合”,不可思议吧。 2、故障分析 出现问题,先二话不说,马上重启各服务器,尽快恢复集群,降低对业务的影响,接下来开始对日志进行分析。 J 阅读全文
posted @ 2019-12-29 15:51 中间件兴趣圈 阅读(1476) 评论(1) 推荐(1)
摘要:本文将在 "RocketMQ 消息发送system busy、broker busy原因分析与解决方案" 的基础上,结合生产上的日志尝试再次理解 broker busy 以及探讨解决方案。 首先,broker busy 相关的日志关键字如下: [REJECTREQUEST]system busy t 阅读全文
posted @ 2019-12-26 22:05 中间件兴趣圈 阅读(1914) 评论(0) 推荐(0)
摘要:本文主要介绍如何将 RocketMQ 集群从原先的主从同步升级到主从切换。 首先先介绍与 DLedger 多副本即 RocketMQ 主从切换相关的核心配置属性,然后尝试搭建一个主从同步集群,再从原先的 RocketMQ 集群平滑升级到 DLedger 集群的示例,并简单测试一下主从切换功能。 @ 阅读全文
posted @ 2019-12-22 17:26 中间件兴趣圈 阅读(4619) 评论(0) 推荐(1)
摘要:源码分析 RocketMQ DLedger 多副本系列已经进行到第 8 篇了,前面的章节主要是介绍了基于 raft 协议的选主与日志复制,从本篇开始将开始关注如何将 DLedger 应用到 RocketMQ中。 摘要:详细分析了RocketMQ DLedger 多副本(主从切换) 是如何整合到 Ro 阅读全文
posted @ 2019-12-19 23:10 中间件兴趣圈 阅读(1790) 评论(0) 推荐(1)
摘要:上一篇 "源码分析 RocketMQ DLedger(多副本) 之日志复制(传播)" ,可能有不少读者朋友们觉得源码阅读较为枯燥,看的有点云里雾里,本篇将首先梳理一下 RocketMQ DLedger 多副本关于日志复制的三个核心流程图,然后再思考一下在异常情况下如何保证数据一致性。 @ "TOC" 阅读全文
posted @ 2019-12-17 21:19 中间件兴趣圈 阅读(1421) 评论(0) 推荐(2)
摘要:消息组接到某项目组反馈,topic 在扩容后出现部分队列无法被消费者,导致消息积压,影响线上业务? 考虑到该问题是发送在真实的线上环境,为了避免泄密,本文先在笔者的虚拟机中来重现问题。 @ "TOC" 1、案情回顾 1.1 集群现状 集群信息如下: 例如业务主体名 topic_dw_test_by_ 阅读全文
posted @ 2019-12-12 22:11 中间件兴趣圈 阅读(3217) 评论(0) 推荐(3)
摘要:@ "TOC" RocketMQ DLedger 的存储实现思路与 RocketMQ 的存储实现思路相似,本文就不再从源码角度详细剖析其实现,只是点出其实现关键点。我们不妨简单回顾一下 CommitLog 文件、ConsumeQueue 文件设计思想。 其文件组成形式如下: 正如上图所示,多个 co 阅读全文
posted @ 2019-12-10 20:22 中间件兴趣圈 阅读(473) 评论(0) 推荐(0)
摘要:温馨提示:《RocketMQ技术内幕》作者倾力打造的全新专栏:RocketMQ 多副本(主从切换): 1、 "《RocketMQ 多副本前置篇:初探raft协议》" 本文将按照 "《RocketMQ 多副本前置篇:初探raft协议》" 的思路来学习RocketMQ选主逻辑。首先先回顾一下关于Lead 阅读全文
posted @ 2019-12-08 21:54 中间件兴趣圈 阅读(1089) 评论(0) 推荐(0)
摘要:Raft协议是分布式领域解决一致性的又一著名协议,主要包含Leader选举、日志复制两个部分。 温馨提示: 本文根据raft官方给出的raft动画进行学习,其动画展示地址:http://thesecretlivesofdata.com/raft/ @ "TOC" 1、Leader选举 1.1 一轮投 阅读全文
posted @ 2019-12-05 21:32 中间件兴趣圈 阅读(854) 评论(0) 推荐(1)
摘要:@ "TOC" 1、抛出问题 一个新的消费组订阅一个已存在的Topic主题时,消费组是从该Topic的哪条消息开始消费呢? 首先翻阅DefaultMQPushConsumer的API时,setConsumeFromWhere(ConsumeFromWhere consumeFromWhere)API 阅读全文
posted @ 2019-11-27 23:31 中间件兴趣圈 阅读(4643) 评论(0) 推荐(1)
摘要:本文沿着 "《RocketMQ消息轨迹 设计篇》" 的思路,从如下3个方面对其源码进行解读: 1. 发送消息轨迹 1. 消息轨迹格式 1. 存储消息轨迹数据 @ "TOC" 1、发送消息轨迹流程 首先我们来看一下在消息发送端如何启用消息轨迹,示例代码如下: java public void send 阅读全文
posted @ 2019-11-24 19:38 中间件兴趣圈 阅读(2011) 评论(0) 推荐(0)
摘要:@ "TOC" RocketMQ消息轨迹主要包含两篇文章:设计篇与源码分析篇,本节将详细介绍RocketMQ消息轨迹 设计相关。 RocketMQ消息轨迹,主要跟踪消息发送、消息消费的轨迹,即详细记录消息各个处理环节的日志,从设计上至少需要解决如下三个核心问题: 消费轨迹数据格式 记录消息轨迹(消息 阅读全文
posted @ 2019-11-19 20:52 中间件兴趣圈 阅读(1210) 评论(0) 推荐(0)
摘要:有关RocketMQ ACL的使用请查看上一篇 "《RocketMQ ACL使用指南》" ,本文从源码的角度,分析一下RocketMQ ACL的实现原理。 备注:RocketMQ在4.4.0时引入了ACL机制,本文代码基于RocketMQ4.5.0版本。 @ "TOC" 根据RocketMQ ACL 阅读全文
posted @ 2019-11-17 21:48 中间件兴趣圈 阅读(723) 评论(0) 推荐(0)
摘要:@ "TOC" 1、什么是ACL? ACL是access control list的简称,俗称访问控制列表。访问控制,基本上会涉及到用户、资源、权限、角色等概念,那在RocketMQ中上述会对应哪些对象呢? 用户 用户是访问控制的基础要素,也不难理解,RocketMQ ACL必然也会引入用户的概念, 阅读全文
posted @ 2019-11-14 21:03 中间件兴趣圈 阅读(4753) 评论(0) 推荐(0)
摘要:温馨提示:建议参考代码RocketMQ4.4版本,4.5版本引入了多副本机制,实现了主从自动切换,本文并不关心主从切换功能。 @ "TOC" 1、初识主从同步 主从同步基本实现过程如下图所示: RocketMQ 的主从同步机制如下: A. 首先启动Master并在指定端口监听; B. 客户端启动,主 阅读全文
posted @ 2019-11-12 20:21 中间件兴趣圈 阅读(3437) 评论(0) 推荐(0)
摘要:@ "TOC" 1、现象 最近收到很多RocketMQ使用者,反馈生产环境中在消息发送过程中偶尔会出现如下4个错误信息之一: 1)[REJECTREQUEST]system busy, start flow control for a while 2)too many requests and sy 阅读全文
posted @ 2019-11-10 20:00 中间件兴趣圈 阅读(1937) 评论(0) 推荐(1)
摘要:1、现象 很多网友会问,为什么明明集群中有多台Broker服务器,autoCreateTopicEnable设置为true,表示开启Topic自动创建,但新创建的Topic的路由信息只包含在其中一台Broker服务器上,这是为什么呢? 期望值:为了消息发送的高可用,希望新创建的Topic在集群中的每 阅读全文
posted @ 2019-11-06 23:13 中间件兴趣圈 阅读(2186) 评论(0) 推荐(0)