02 2021 档案
摘要:Broker消息存储机制 RocketMQ 使用 CommitLog 文件将消息存储到磁盘上,那么 RocketMQ 存储消息到磁盘的过程是怎么样的呢? RocketMQ 首先将消息数据写入操作系统 PageCache,然后定时将数据刷入磁盘。 一、Broker 消息存储的流程是什么? 下面主要介绍
阅读全文
摘要:Broker 消息结构、PageCache和零拷贝技术 堆积能力是消息队列的一个重要考核指标。存储机制是 RocketMQ 中的核心,也是亮点设计,因为存储机制决定写入和查询的效率。 一、Broker 消息存储结构 1.1 Broker 存储概述 Broker 通过 CommitLog、Consum
阅读全文
摘要:Broker 概述、启动和停止流程 Broker 是 RocketMQ 体系中核心组件之一,存储是 Broker 的核心功能之一,决定整个 RocketMQ 体系的吞吐性能、可靠性和可用性。 一、Broker 概述 1.1 什么是 Broker Broker 是 RocketMQ 中核心的模块之一,
阅读全文
摘要:RocketMQ的路由原理 生产者发送消息、消费者消费时都需要从 Namesrv 拉取 Topic 路由信息,那么这些路由信息是如何注册到 Namesrv 的呢?如果 Broker 异常宕机,路由信息又是如何更新的呢? 一、路由注册 Namesrv 获取的 Topic 路由信息来自 Broker 定
阅读全文
摘要:Namesrv 服务 Namesrv 在 RocketMQ 体系中,可以看做是一个 Topic 路由注册和管理、Broker注册和发现的角色。 一、概述 Namesrv 在 RocketMQ 体系中主要用于保存元数据、提高 Broker 的可用性。 1.1 什么是 Namesrv 在 RocketM
阅读全文
摘要:RocketMQ部署拓扑和部署实践 一、常用的拓扑图 常用的 RocketMQ 的部署拓扑方式有 5 种,不同的部署方式可靠性不同。 一个基本的部署拓扑至少包含 Console 管理平台、Namesrv 和 Broker: Namesrv 部署:推荐一个集群并部署 2~3 个Namesrv 节点。
阅读全文
摘要:RocketMQ体系架构 Github:https://github.com/apache/rocketmq/blob/master/docs/cn/architecture.md 一、概述 RocketMQ 不单单是一个技术,它还是一个体系。一个可用的 RocketMQ 体系简单总结如下: Pro
阅读全文
摘要:消费者最佳实践 Gitbhub地址:https://github.com/apache/rocketmq/blob/master/docs/cn/best_practice.md 2.1 消费过程幂等 RocketMQ无法避免消息重复(Exactly-Once),所以如果业务对消费重复非常敏感,务必
阅读全文
摘要:消费过滤 一、为什么要涉及过滤功能? RocketMQ 设计了消息过滤,来解决大量无意义流量的传输:即对于客户端不需要的消息,Broker 就不会传输给客户端,以免浪费宽带。 二、RocketMQ 支持消息过滤 RocketMQ 4.8.0 支持 Tag 过滤、SQL92过滤、Filter Serv
阅读全文
摘要:消费方式 RocketMQ 包含2种消费方式: Pull Push Pull方式:用户主动Pull消息,自主管理位点。默认的 Pull 消费者实现类:D:\rocketmq-master\client\src\main\java\org\apache\rocketmq\client\consumer
阅读全文
摘要:RocketMQ(4.8.0)——消费进度保存机制 在消费者启动时会同时启动位点管理器,那么位点具体是怎么管理的呢? RocketMQ 设计了2种位点管理方式: 远程位点管理方式(集群消费时,位点由客户端交给 Broker 保存,代码路径:D:\rocketmq-master\client\src\
阅读全文
摘要:RocketMQ(4.8.0)——消费者的Rebalance机制 客户端是通过 Rebalance 服务做到高可靠的。当发生 Broker 掉线、消费者实例掉线、Topic 扩容等各种突发情况时,消费者组中的消费者实例是怎么重平衡,以支持全部队列的正常消费的呢? RebalancePullImpl
阅读全文
摘要:RocketMQ(4.8.0)——DefaultMQPushConsumer 启动流程
阅读全文
摘要:RocketMQ(4.8.0)——DefaultMQPullConsumer 启动流程
阅读全文
摘要:RocketMQ(4.8.0)——默认的两种消费者核心属性和方法 RocketMQ客户端有两个独立的消费者实现类:org.apache.rocketmq.client.consumer.DefaultMQPullConsumer 和 org.apache.rocketmq.client.consum
阅读全文
摘要:RocketMQ(4.8.0)——消费流程 一、消费者概述 消费者一般指获取消息、转发消息给业务代码处理的一系列代码实现。在RocketMQ中,消费行为是如何进行的呢? RocketMQ消费者支持订阅发布模式和Queue模式。下面以集群模式消费为例,描述生产、消费是如何进行的,见下图: 基本概念:
阅读全文
摘要:RocketMQ(4.8.0)——生产者最佳实践总结 相对消费者而言,生产者的使用更加简单,一般主要关注消息类型、消息发送方法和发送参数,即可正常使用RocketMQ发送消息。在实际使用时如何选择消息类型和消费发送方法呢? 常用的消息类型如下: 消息类型 优点 缺点 备注 普通消息(并发消息) 性能
阅读全文
摘要:RocketMQ(4.8.0)——消息发送流程 一、概述 RocketMQ客户端的消息发送通常分为以下3层: 业务层:通常指直接调用 RocketMQ Client 发送API的业务代码。 消息处理层:指 RocketMQ Client 获取业务发送的消息对象后,一系列的参数检查、消息发送准备、参数
阅读全文
摘要:RocketMQ(4.8.0)——生产者启动流程 DefaultMQProducer(D:\rocketmq-master\client\src\main\java\org\apache\rocketmq\client\producer\DefaultMQProducer.java )是Rocket
阅读全文
摘要:RocketMQ(4.8.0)——生产者 一、生产者概述 发送消息的一方被称为生产者,它在整个RocketMQ的生产者和消费体中扮演角色如下: 基本概念: 生产者组: 一个逻辑概念,在使用生产者实例的时候需要制定一个组名。一个生产者组可以生产多个Topic的消息。 生产者实例:一个生产者组部署了多个
阅读全文
摘要:RocketMQ概述 一、什么是消息队列? 消息队列(Message Queue),从广义上讲是一种消息队列服务中间件,提供一套完整的信息生产、传递、消费的软件系统。从字面意思看,由2部分组成,我们先讲Queue,再讲Message。 队列(Queue):是一种先进先出(First in First
阅读全文