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的数据同步
  • 索引服务, 通过指定键建立消息索引,提供快速的消息查询。
相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
2月前
|
消息中间件 存储 Java
RocketMQ(一):消息中间件缘起,一览整体架构及核心组件
【10月更文挑战第15天】本文介绍了消息中间件的基本概念和特点,重点解析了RocketMQ的整体架构和核心组件。消息中间件如RocketMQ、RabbitMQ、Kafka等,具备异步通信、持久化、削峰填谷、系统解耦等特点,适用于分布式系统。RocketMQ的架构包括NameServer、Broker、Producer、Consumer等组件,通过这些组件实现消息的生产、存储和消费。文章还提供了Spring Boot快速上手RocketMQ的示例代码,帮助读者快速入门。
|
4月前
|
消息中间件 存储 Java
RabbitMQ 在微服务架构中的高级应用
【8月更文第28天】在微服务架构中,服务之间需要通过轻量级的通信机制进行交互。其中一种流行的解决方案是使用消息队列,如 RabbitMQ,来实现异步通信和解耦。本文将探讨如何利用 RabbitMQ 作为服务间通信的核心组件,并构建高效的事件驱动架构。
159 2
|
3月前
|
消息中间件 弹性计算 运维
云消息队列RabbitMQ 版架构优化评测
云消息队列RabbitMQ 版架构优化评测
66 6
|
4月前
|
网络协议 Java 物联网
MQTT(EMQX) - SpringBoot 整合MQTT 连接池 Demo - 附源代码 + 在线客服聊天架构图
MQTT(EMQX) - SpringBoot 整合MQTT 连接池 Demo - 附源代码 + 在线客服聊天架构图
921 2
|
4月前
|
消息中间件 Java RocketMQ
微服务架构师的福音:深度解析Spring Cloud RocketMQ,打造高可靠消息驱动系统的不二之选!
【8月更文挑战第29天】Spring Cloud RocketMQ结合了Spring Cloud生态与RocketMQ消息中间件的优势,简化了RocketMQ在微服务中的集成,使开发者能更专注业务逻辑。通过配置依赖和连接信息,可轻松搭建消息生产和消费流程,支持消息过滤、转换及分布式事务等功能,确保微服务间解耦的同时,提升了系统的稳定性和效率。掌握其应用,有助于构建复杂分布式系统。
69 0
|
5月前
|
消息中间件 存储 缓存
架构设计篇问题之消息队列(MQ)在微服务系统中问题如何解决
架构设计篇问题之消息队列(MQ)在微服务系统中问题如何解决
|
6月前
|
消息中间件 存储 SQL
RocketMQ与Kafka架构深度对比
RocketMQ与Kafka架构深度对比
|
7月前
|
消息中间件 存储 Apache
MQ产品使用合集之有RocketMQ arm架构的镜像吗
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
337 1
|
7月前
|
消息中间件 Java RocketMQ
Spring Cloud RocketMQ:构建可靠消息驱动的微服务架构
【4月更文挑战第28天】消息队列在微服务架构中扮演着至关重要的角色,能够实现服务之间的解耦、异步通信以及数据分发。Spring Cloud RocketMQ作为Apache RocketMQ的Spring Cloud集成,为微服务架构提供了可靠的消息传输机制。
260 1
|
7月前
|
消息中间件 存储 数据库
RabbitMQ入门指南(二):架构和管理控制台的使用
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了RabbitMQ架构和管理控制台的使用等内容。
193 0
RabbitMQ入门指南(二):架构和管理控制台的使用