RocketMQ 架构

RocketMQ Architecture 译文

概述

Apache RocketMQ是一个低延时、高性能、可靠的分布式消息流平台,它具有兆级容量和灵活扩展性的特点。它包括四个部分:name servers, brokers, producers and consumers。每个部分都能水平扩展以避免单点故障。


image.png

Name Server 集群

Name Servers 提供轻量级的服务发现和路由功能。每个Name Server记录全部的路由信息,提供相应的读写服务,支持快速存储扩展。

Broker 集群

Broker 集群通过TOPIC和QUEUE机制实现消息存储功能。Broker支持Push和Pull两种模式,容错机制(2到3个备份),和短时间内应对成百上千亿消息的强大的削峰填谷功能。另外,Broker还支持灾难恢复,丰富的统计指标等等一系列在传统消息系统中缺乏的可选机制。

Producer 集群

Producer支持分布式部署。分布式的Producers通过多路负载均衡模式向Broker集群发送消息。发送程序支持快速失败和低延时。

Consumer 集群

Consumer同样支持分布式部署,而且支持Push和Pull两种模式。它还支持集群消费和消息广播。同时提供实时消息订阅以满足更多消费需求。

push: Broker向Consumer推送消息,有可能将消费者压垮
pull: Consumer主动向Broker拉取消息

Name Server

Name Server是一个功能完备的服务器,它只要有两个功能:

  • Broker 管理。Name Server接收Broker集群注册,并且提供心跳机制检测Broker是否存活。
  • 路由管理。每个Name Server都有完整的Broker路由信息和队列信息,供客户端查询

众所周知,RocketMQ的客户端(Producer/Consumer)在Name Server上查询队列路由信息,但是客户端怎么发现Name Server地址呢?

以下有四种方式:

  • 编程方式,像 producer.setNamesrvAddr("ip:port")
  • java 参数,用 rocketmq.namesrv.addr
  • 环境变量,用NAMESRV_ADDR
  • HTTP 接口

更多详情请点击这里.

Broker Server

Broker 负责消息的存储、分发、查询以及高可用保证(防丢)等等。
Broker有以下几个重要模块:

  • 远程模块,broker的入口,处理客户端请求
  • 客户端管理,管理客户端和维持Consumer Topic订阅
  • 存储服务,提供简单的API落地消息以及从磁盘查询数据
  • 高可用服务(HA),在Broker Server之前同步数据
  • 索引服务,通过特殊key给消息建立索引,提供快速的消息查询。
image

你可能感兴趣的:(RocketMQ 架构)