RocketMQ结构与功能概述
创始人
2025-05-30 12:26:36
0

RocketMQ 是一个开源的分布式消息中间件,由阿里巴巴公司于 2012 年开始开发。它具有高可用性、高性能、可靠性强、功能丰富等特点,广泛应用于电商、金融、物流、互联网和大数据等领域。
在这里插入图片描述
在这里插入图片描述

RocketMQ 支持生产者和消费者的负载均衡、数据分片、数据重试、数据过期等特性,同时还支持消息的事务、顺序消费、定时消费、广播消费等高级特性。RocketMQ 的消息存储采用了基于 CommitLog 的方式,保证消息的可靠存储和高效读取。

RocketMQ 的整体架构分为 Producer、Broker 和 Consumer 三个组件,其中 Producer 负责消息的生产,Broker 负责消息的存储和转发,Consumer 负责消息的消费。
通常情况下,生产者(Producer)和消费者(Consumer)是运行在用户自己的机器上,而消息中间件(Broker)则是运行在独立的服务器或者集群上,它们分别承担着不同的角色和功能。

Producer是消息的生产者,它负责产生消息并发送到Broker,通常是通过网络协议(如TCP、HTTP等)与Broker进行通信。Consumer是消息的消费者,它从Broker中订阅消息并进行处理,通常也是通过网络协议与Broker进行通信。

而Broker则是消息队列系统的核心组件,负责接收Producer发送的消息并存储到相应的Topic中,同时也负责将存储在Topic中的消息转发给订阅该Topic的Consumer。Broker通常会采用分布式的架构来保证高可用性和可扩展性,它可以部署在单台或多台服务器上,也可以以集群的形式运行。

因此,在RocketMQ中,Producer和Consumer通常运行在用户的机器上,而Broker则运行在消息队列的机器上,它们共同构成了一个完整的消息队列系统。

消息生产:Producer 将消息发送到指定的 Topic,然后根据消息的类型和发送策略选择发送方式,可以是同步发送、异步发送或者是单向发送。

消息存储:Broker 接收到消息后,首先将消息存储到 CommitLog 中,然后再将消息存储到消息队列中。消息队列分为多个主题,每个主题下有多个消息队列,每个消息队列又分为多个消息分片,消息存储采用了写时复制技术,保证了消息的可靠存储和高效读取。
消息转发:Broker 根据订阅关系将消息转发给订阅者。消息订阅关系可以是广播模式或者是集群模式。在广播模式下,每个订阅者都会收到同样的消息;在集群模式下,每个消费者组只有一个消费者能够消费同一个消息队列的消息。

当生产者(Producer)将消息发送给Broker时,Broker会将消息存储到相应的Topic中。具体过程如下:

Producer通过网络协议连接到Broker,并发送消息到指定的Topic。

Broker接收到消息后,将消息存储到相应的队列(Queue)中。每个队列代表了一个消息流,Broker将所有订阅该Topic的消息都存储到相应的队列中。

Consumer通过网络协议连接到Broker,并订阅指定的Topic。当有新消息到达时,Broker会将消息转发给所有订阅该Topic的Consumer。这个过程称为消息推送(Push)。

Consumer从Broker中拉取(Pull)消息并进行处理。Consumer可以控制从Broker中拉取的消息数量,以及每次拉取的最大字节数等。

Consumer处理完消息后,向Broker发送确认消息(Acknowledge),告诉Broker该消息已被成功处理。这个过程称为消息确认(Ack)。

Broker收到确认消息后,会将该消息从队列中删除。

消息消费:Consumer 从 Broker 订阅指定的主题和消息队列,然后根据订阅模式进行消息的消费,可以是顺序消费或者是并发消费。在顺序消费模式下,Consumer 会按照消息的顺序依次消费消息,而在并发消费模式下,多个 Consumer 可以同时消费同一个消息队列的消息。

https://github.com/apache/rocketmq
https://rocketmq.apache.org/version

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
JAVA多线程知识整理 Java多线程基础 线程的创建和启动 继承Thread类来创建并启动 自定义Thread类的子类&#...
【洛谷 P1090】[NOIP... [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G ...
国民技术LPUART介绍 低功耗通用异步接收器(LPUART) 简介 低功耗通用异步收发器...
城乡供水一体化平台-助力乡村振... 城乡供水一体化管理系统建设方案 城乡供水一体化管理系统是运用云计算、大数据等信息化手段࿰...
程序的循环结构和random库...   第三个参数就是步长     引入文件时记得指明字符格式,否则读入不了 ...
中国版ChatGPT在哪些方面... 目录 一、中国巨大的市场需求 二、中国企业加速创新 三、中国的人工智能发展 四、企业愿景的推进 五、...
报名开启 | 共赴一场 Flu... 2023 年 1 月 25 日,Flutter Forward 大会在肯尼亚首都内罗毕...
汇编00-MASM 和 Vis... Qt源码解析 索引 汇编逆向--- MASM 和 Visual Studio入门 前提知识ÿ...
【简陋Web应用3】实现人脸比... 文章目录🍉 前情提要🌷 效果演示🥝 实现过程1. u...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
windows安装JDK步骤 一、 下载JDK安装包 下载地址:https://www.oracle.com/jav...
分治法实现合并排序(归并排序)... 🎊【数据结构与算法】专题正在持续更新中,各种数据结构的创建原理与运用✨...
在linux上安装配置node... 目录前言1,关于nodejs2,配置环境变量3,总结 前言...
Linux学习之端口、网络协议... 端口:设备与外界通讯交流的出口 网络协议:   网络协议是指计算机通信网...
Linux内核进程管理并发同步... 并发同步并发 是指在某一时间段内能够处理多个任务的能力,而 并行 是指同一时间能够处理...
opencv学习-HOG LO... 目录1. HOG(Histogram of Oriented Gradients,方向梯度直方图)1...
EEG微状态的功能意义 导读大脑的瞬时全局功能状态反映在其电场结构上。聚类分析方法一致地提取了四种头表面脑电场结构ÿ...
【Unity 手写PBR】Bu... 写在前面 前期积累: GAMES101作业7提高-实现微表面模型你需要了解的知识 【技...