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

浙公网安备 33010602011771号