RocketMQ 架构

2017-06-22  本文已影响572人  Kohler
img

Overview

Apache RocketMQ是一个具有低延迟、高性能和可靠性、万亿级容量和灵活可伸缩性的分布式消息流和流媒体平台。它由四个部分组成:名称服务器、代理(brokers)、生产者和消费者。它们的每一个都可以横向扩展,而不会出现单点故障。如上图所示。

命名服务器集群

名称服务器提供轻量级服务发现和路由。每个名称服务器记录完整的路由信息,提供相应的读写服务,支持快速存储扩展。

Broker 集群

代理通过提供轻量级的TOPICQUEUE机制来处理消息存储。它们支持推(Push)和拉(Pull)模型,包含容错机制(2个副本或3个副本),并通过在原始的时间顺序中积累以百万的信息,提供强大的峰值和容量填充。此外,代理还提供了灾难恢复、丰富的度量数据和警报机制,这些都是传统消息传递系统中所缺少的。

Producer 集群

生产者支持分布式部署。分布式生产者通过多种负载均衡模式将消息发送到代理集群。发送过程支持快速失败和低延迟。

Consumer 集群

消费者也支持在推和拉模型中进行分布式部署。它还支持集群消费和消息广播。它提供实时消息订阅机制,可以满足大多数客户需求。RocketMQ的网站为感兴趣的用户提供了一个简单的快速入门指南。

NameServer

NameServer是一个功能完备的服务器,主要包括两个特性:

如我们所知,RocketMQ客户端(生产者/消费者)将从NameServer查询队列路由信息,但是客户端如何找到NameServer地址?

有四种方法可以向客户端提供NameServer地址列表:

关于如何找到NameServer地址的更多细节请查阅 here.

Broker Server

代理服务器负责消息存储和投递、消息查询、HA保证等等。

正如下图所示,代理服务器有一些重要的子模块:

img
上一篇 下一篇

猜你喜欢

热点阅读