跳至主要內容
《RocketMQ 技术内幕》笔记

《RocketMQ 技术内幕》笔记

读源代码前的准备

RocketMQ 源代码的目录结构

  • broker:broker 模块(broker 启动进程) 。
  • client:消息客户端,包含生产者、消息消费者相关类。
  • common:公共包。
  • dev:开发者信息(非源代码) 。
  • distribution:部署实例文件夹(非源代码) 。
  • example:RocketMQ 示例代码。
  • filter:消息过滤相关基础类。
  • filter:消息过滤服务器实现相关类(Filter 启动进程) 。
  • logappender:日志实现相关类。
  • namesrv:N ameServer 实现相关类(Names 巳 rver 启动进程) 。
  • openmessaging:消息开放标准,正在制定中。
  • remoting:远程通信模块,基于 Netty 。
  • srvutil:服务器工具类。
  • store:消息存储实现相关类。
  • style:checkstyle 相关实现。
  • test:测试相关类。
  • tools:工具类,监控命令相关实现类。

钝悟...大约 21 分钟笔记分布式分布式通信分布式通信MQRocketMQ
RocketMQ 面试

RocketMQ 面试

RocketMQ 简介

【简单】RocketMQ 是什么?🌟

RocketMQ 是一个开源分布式消息中间件。最初由阿里巴巴开发,现在是 Apache 顶级项目。

RocketMQ 的核心概念

  • 核心组件
    • 生产者(Producer):从 NameServer 获取路由信息后,将消息发送到 Broker。
    • 消费者(Consumer):从 NameServer 获取路由信息后,从 Broker 拉取并消费消息。
    • 代理(Broker):负责消息的存储、投递和查询。采用主从结构保证高可用。
    • 命名服务(NameServer):管理所有 Broker 的地址列表。无状态,简单高效。
  • 逻辑存储
    • 主题(Topic):消息的一级分类,生产者和消费者操作的逻辑对象。
    • 标签(Tag):Topic 下的二级分类,用于对消息进行过滤。
    • 消息(Message):包含 Body(消息体)、Topic、Tags(标签)、Keys(唯一键)等属性。
    • 消息队列(Message Queue):Topic 在物理上的分区,是负载均衡和并行处理的最小单位。
  • 物理存储
    • 提交日志(Commit Log):所有 Topic 的消息都顺序追加到这一个文件中。这是实现高吞吐写入的关键。
    • 消费队列(Consume Queue):作为 CommitLog 的索引文件。每个 Queue 对应一个,记录消息在 CommitLog 中的位置,实现高效的读取。
    • 索引文件(Index File):提供按 Message Key 或时间范围查询消息的能力。

钝悟...大约 32 分钟分布式分布式通信MQRocketMQ分布式通信MQRocketMQ面试
RocketMQ 基本原理

RocketMQ 基本原理

原理

分布式消息系统作为实现分布式系统可扩展、可伸缩性的关键组件,需要具有高吞吐量、高可用等特点。而谈到消息系统的设计,就回避不了两个问题:

  1. 消息的顺序问题
  2. 消息的重复问题

顺序消息

第一种模型

假如生产者产生了 2 条消息:M1、M2,要保证这两条消息的顺序,应该怎样做?你脑中想到的可能是这样:


钝悟...大约 7 分钟分布式分布式通信MQRocketMQJava中间件MQRocketMQ
RocketMQ 快速入门

RocketMQ 快速入门

Apache RocketMQ 是一个分布式 MQ 和流处理平台,具有低延迟、高性能和可靠性、万亿级容量和灵活的可扩展性。

RocketMQ 由阿里巴巴孵化,被捐赠给 Apache,成为 Apache 的顶级项目。

RocketMQ 概念

img
img

钝悟...大约 20 分钟分布式分布式通信MQRocketMQJava中间件MQRocketMQ