RocketMQ架构

rmq_basic_arc

概述

RocketMQ是一个分布式消息和流处理平台,具有低延迟、高性能和高可靠、万亿级容量和灵活的可扩展性。它由四部分组成:name servers,brokers,生产者和消费者。它们中的每一个都可以水平扩展,而没有单一的故障节点。

NameServer 集群

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

Broker 集群

Brokers通过轻量级的TOPIC和QUEUE机制处理消息存储。支持Push和Pull模式,包含故障容忍机制(2或3份),提供强大的峰值填充和以原始时间顺序累积千亿条消息的能力。
另外,Brokers提供灾难恢复,丰富的度量统计和警告机制,这些都是传统消息系统缺少的。

生产者集群

生产者支持分布式部署。分布式生产者通过多种负载均衡模式发送消息到Broker集群,发送过程支持快速故障并具有低延迟。

消费者集群

消费者也支持以Push和Pull模式的分布式部署。
它也支持分布式消费和消息广播。
它提供实时消息订阅机制,可以满足大部分消费者的需求。

NameServer

NameServer is a fully functional server, which mainly includes two features:

  • Broker 管理,NameServer 接收来自Broker集群的注册,提供心跳机制来检测broker是否存活。
  • 路由管理,每个NameServer都持有有关broker集群的整个路由信息和客户端查询的队列信息。

我们都指定,RocketMQ客户端(生产者/消费组)通过NameServer查询队列信息,但客户端怎么查找NameServer 地址呢?

将客户端地址列表加入NameServer有四种方式:

  • 编码方式,如producer.setNamesrvAddr("ip:port")。
  • Java选项, 使用 rocketmq.namesrv.addr.
  • 环境变量, 使用 NAMESRV_ADDR.
  • HTTP Endpoint.

Broker Server

Broker服务 负责消息存储和传递,消息查询,保证HA等。
rmq_basic_component

Broker 服务有些重要的子模块:

  • 远程处理模块,broker的入口,处理来自客户端的请求。
  • 客户端管理器,管理客户端(生产者/消费者),维护消费组的订阅主题。
  • 存储服务,提供简单的APIs来存储或查询物理磁盘中的消息。
  • HA 服务, 提供主broker和从broker的数据同步
  • 索引服务, 通过指定键建立消息索引,提供快速的消息查询。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值