RocketMQ 整体架构

1. RocketMQ 整体架构

[TOC]

整体架构

RocketMQ主要由四部分组成,NameServerBrokerProducerConsumer。其中NameServerBroker是独立部署集群,而ProducerConsumer一般是以SDK的形式提供给业务方,嵌在业务集群内。另外还有一个FilterSrv,可选择性使用,用于消费者自定义消息过滤。

NameServer

类似于服务治理框架里的注册中心。管理Broker集群的注册信息并提供心跳来检测他们是否可用,持有关于broker集群和队列的全部路由信息;

Broker

负责消息的存储传递,客户端查询并保证高可用。此外,代理提供了灾难恢复、丰富的度量统计和警报机制。主要功能如下;
set up-w600

  1. Remoting Module:服务入口,接收来自客户端的请求并转发;
  2. Client Manager:客户端管理,管理客户端(生产者/消费者)还有维护消费者主题订阅;
  3. Store Service:信息存储和查询的api服务;
  4. HA Service: 提供主从broker的数据同步;
  5. Index Service:为消息建立索引提供消息快速查询。

Producer

支持分布式部署,支持多种负载均衡策略发送消息到Broker集群。发送过程支持快速失败且低延迟。

Consumer

支持以推送(非真的拉取)、拉取模式消费消息,支持集群消费和消息广播。提供实时的消息订阅机制。

代码结构

模块说明

  • rocket.common 公共逻辑模块:包括一些基本类和Util类;
  • rocket.remoting 远程通讯模块:主要起通讯作用,上层每个组件使用其来做服务通讯,暴露服务与服务请求,使用json序列化协议;
  • rocket.store 数据存储:主要用在Broker,存储和读取消息数据。以及主从复制和索引;
  • rocket.broker 数据中转服务:实现broker逻辑,接收Producer发送信息请求并存储,接收Consumer拉取信息请求并读取消息返回,并保存每个Queue的消费位移;
  • rocket.namesrv 命名服务:维护服务路由信息,相当于注册中心。
  • rocket.client 客户端:实现 ProducerConsumer逻辑。

接下来的章节中,我们先讲基础模块(remotingstore),再讲namesrvbroker。其后,通过生产消息和消费消息两个过程来讲解namesrvbrokerproducerconsumer之间的协作。
最后再介绍下rocketMQ在 顺序消息、消息重复、事务消息上做的改进。

本文所讲解的RocketMQ的源码版本是 4.1.0-incubating-SNAPSHOT


本话题,将从以下方面来讲解RocketMQ

  1. 整体架构
    1. 每部分的作用
    2. 每部分的用到了存储
    3. 通信方式
  2. 启动过程
    1. Namesrv启动过程
    2. Broker启动过程
    3. Producer启动过程
    4. Consumer启动过程
  3. 消息拉取到消费的过程
    1. Producer发送消息的过程
    2. Broker接收消息并存储消息的过程
    3. Consumer拉取消息并消费的过程
  4. 消息的顺序性如何保证
  5. 事务消息
  6. 定时消息

MQ对比

https://blog.csdn.net/damacheng/article/details/42846549

您的支持是我创作源源不断的动力