RocketMQ基础概念

news2024/12/26 22:09:16

目录

1.简介

2.架构

3.核心概念


1.简介

RocketMQ 是一款开源的分布式消息中间件,最初由阿里巴巴集团开发并开源。它旨在为分布式系统提供可靠、高性能、可扩展的消息通信能力。RocketMQ和RabbitMQ、KAFKA一起并列为现在主流的三大消息中间件。

一般MQ可以从三个维度来分析其特点:

  1. 吞吐量和延迟
  2. 可靠性
  3. 消息模型的丰富度

1.吞吐量和延迟:

消息中间件作为常用来实现“流量削峰”的组件,其能在一个时间单位吞吐消息的量是个很重要的指标。RocketMQ最初就是为阿里的“双十一”设计的,目前也是“双十一”期间用来保证系统吞吐量的核心组件之一,其从三个方面保证了高吞吐量和低延迟:

  • 分布式架构,RocketMQ 的设计采用了分布式架构,可以将消息存储和处理分散到多个节点上。这样可以实现消息的并行处理,提高系统的吞吐量和并发性能。
  • 零拷贝,RocketMQ 在消息传输过程中采用了零拷贝技术,避免了数据在用户空间和内核空间之间的多次拷贝。这样可以减少不必要的数据复制操作,提高数据传输效率,降低延迟。
  • RocketMQ 使用了基于消息索引的方式来加速消息的查找和检索。通过构建消息索引,可以快速定位消息存储的位置,提高消息的读取效率。

2.可靠性

消息可靠性,即消息容不容易丢失。RocketMQ和RabbitMQ一样,具有良好的消息可靠性,其用了以下的手段来保证消息的可靠性:

  1. 持久化,RocketMQ允许将消息持久化到磁盘中,以防止断电丢失。
  2. 确认和应答,RocketMQ支持发布确认和消费应答,可以在消息在发送到交换器后,向生产者返回确认;可以在消费者成功消费消息后向MQ进行应答。

3.消息模型的丰富度

RocketMQ支持五种消息模型:

  1. 点对点模型
  2. 发布订阅模型
  3. 请求响应模型
  4. 定时消息模型
  5. 顺序消息模型

其消息模型的丰富度来说要高于Kafka但是低于RabbitMQ

适合的场景:

从上面三个维度综合来说,

2.架构

整RocketMQ集群的架构和微服务架构类似,有一个存放节点信息的name server,生产者和消费者都去找name server拿broker的信息,再去定位到具体的某一个broker上,进行消息的收发。 broker之间可以用主从的方式进行互相备份,进行容错。

3.核心概念

  • Message,消息,数据单元。由topic、tag、body组成。body就是要传输的具体数据。
  • Producer,消息的发送者。它负责将消息发送到 RocketMQ 的消息队列中。
  • Consumer ,消息接收者。它订阅特定的消息主题(Topic),从 RocketMQ 的消息队列中拉取消息并进行处理。
  • topic,消息的逻辑分类,类似于消息的主题或者标签。Producer 发送消息时,需要指定发送到哪个 Topic 下。
  • tag,对消息的附加标记,用于在一个主题下对消息进行更细粒度的分类。Consumer 可以根据标签来选择性地订阅和过滤消息。
  • message queue,一个消息主题的分区或者分片。每个主题可以被划分为多个消息队列,这样消息就可以被并行处理,提高系统的吞吐量和并发性能。
  • broker,负责存储和转发消息。它接收来自 Producer 的消息,并将其存储到合适的消息队列中。同时,它还接收来自 Consumer 的消费请求,并将消息传递给消费者。
  • name server,名称服务,负责管理整个 RocketMQ 系统的元数据信息,包括 Topic、Producer、Consumer 等的注册和发现。Producer 和 Consumer 在启动时需要与 Namesrv 进行交互,获取路由信息和元数据。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/751137.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python(八)字符编码

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

06_HDMI 显示器驱动设计与验证

06_HDMI 显示器驱动设计与验证 1. HDMI 接口及引脚定义1.1 HDMI A Type 接口引脚图1.2 HDMI A Type 接口引脚定义 2. HDMI 原理2.1 HDMI 显示原理2.2 TMDS 传输原理 3. 实验目标4. 程序框图4.1 顶层模块4.2 时钟生成模块4.3 HDMI 驱动控制模块4.3.1 第一个步骤4.3.2 编码模块参…

反垄断在中国

中国通过反垄断法 中国通过了具有里程碑意义的反托拉斯立法,外国企业表示谨慎性的欢迎,希望该法案能带来更大的开放性,但需要观察它是如何实施的。(华尔街日报 2007年8月32日报道) 反垄断法禁止垄断协议和诸如卡特尔及价格操纵,但允许能促进创新和技术进步的垄断之存在。…

微软亚洲研究院推出AI编译器界“工业重金属四部曲”

编者按:编译器在传统计算科学中一直是一个重要的研究课题。在人工智能技术快速发展和广泛应用的今天,人工智能模型需要部署在多样化的计算机硬件架构上。同时,训练和部署大型人工智能模型时又对硬件性能有着更高的要求,有时还需根…

c#示例-json序列化和json树

序列化 由于指针和引用类型的存在,在运行中的程序中,数据不一定是整块的。 可能东一块西一块散落在内存的各个地方。 序列,是指连续且有序的一个整体。序列化就是把数据变为连续有序整体的过程。 经过这样处理后的数据就可以方便的进行传输…

1130 - Host XXX‘ is not allowed to connect to this MySQL server

mysql 连接报错 这个问题是因为在数据库服务器中的mysql数据库中的user的表中没有没有用户 解决的方法: 登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称’%’。 1、连接服务器: mysql -u root -p…

万字解读 | 数据可视化平台--FineBI

什么是BI 学习目标 知道什么是BI 知道FineBI的优势 1. 商业智能: BI(Business Intelligence)是指通过收集、分析和解释企业内外部数据,为企业决策提供支持和指导的一种技术和工具。商业智能的目标是帮助企业管理者和决策者更好地理解企业…

vivado 添加 pynq-z2板

以vivado2019.02版本为例 1下载地址 https://www.tulembedded.com/FPGA/ProductsPYNQ-Z2.html 2.点击下载 3.解压添加 注:如果没有board_files 可以自己创建一个 4.重新打开vivado

跨境电商企业实施WMS仓储管理系统有什么要注意的

在跨境电商行业中,仓储管理是关键的环节之一。为了提高仓储效率和准确性,许多跨境电商企业选择实施WMS仓储管理系统解决方案。然而,实施电商企业WMS系统并不是一项简单的任务,需要注意一些关键要点。本文将介绍跨境电商企业实施WM…

Ubuntu 18.04 Docker 安装配置 Apollo 6.0

百度 Apollo 安装测试(1) Apollo 6.0 安装完全指南 在这一步出错: 进入到 Apollo 源码根目录,打开终端,执行下述命令以启动 Apollo Docker 开发容器 ./docker/scripts/dev_start.sh并没有成功启动 Apollo docker 开发…

科技成果鉴定报告的重要性

科技成果鉴定是评估科技成果价值、可行性和科学性的过程,鉴定结果直接关系到科技成果的应用和推广。科技成果鉴定报告是鉴定结果的呈现和总结,对于科技成果的评估和利用具有重要的价值和意义。 1、科技成果价值评估:在科技创新和技术发展中…

在VMware Workstation安装 ESXI8.0初体验

文章目录 🐟前言🐟安装🐟在VMware WorkStation中创建虚拟机🐟ESXI部署安装🐟安装完成后配置 🐟前言 ESXI8.0版本开始最低RAM从以前的4GB变为8GB 本文所使用到的镜像以及Key都可以到我的网站中下载 地址&…

数学分析:k维曲面

这部分比较抽象,我就不按照书本上的定义来了,直接讲直观的理解。 一般来说,我们认为: 这是一个圆, 但同时也可以认为他是一个一维的曲面。 同理 是一个球面 但同时也是一个二维的曲面,依次类推。 我们…

AWS 云区域(region),可用区(AZ)

AWS 提供三种地理性组件: Regions:区域,即AWS提供云服务的一个区域,其目的是为了用户能就近接入,降低网络延迟。通常是一个城市的若干个AZ组成一个region。2016年,AWS 宣布在其全球region之间建设了100GbE…

对 Jenkins+ANT+Jmeter 接口测试的实践

目录 1、前言 2、框架与数据准备 3、脚本设计 4、整理测试报告 1、前言 JenkinsANTJMeter是一种常见的接口测试实践方案,可以实现自动化的接口测试和持续集成。Jenkins是一个流行的持续集成工具,ANT是一个构建工具,而JMeter是一个功能强大…

journalctl命令

要查看系统日志信息,使用journalctl工具即可。 不加任何参数,它将显示系统日志的全部信息:显示的顺序是从旧到新。 [rootvm1 ~]# journalctl -- Logs begin at Fri 2023-07-14 05:12:22 CST, end at Thu 2023-07-13 21:20:01 CST. -- Jul 14…

re学习(15)BUUCTF 2019红帽杯easyRe

参考视频: 【BUUCTF】每天一个CTF11“2019红帽杯easyRe”_哔哩哔哩_bilibili (本人觉得看视频比看博客效率能提高十倍,呜呜呜,还是视频香~~~与君共勉) 下载地址: BUUCTF在线评测 前言:虽然…

论文出矢量图EMF

PDF---->矢量图EMF工具: PDF to EMF | CloudConvert solidworks截图打印为PDF; matlab打开图像--编辑-复制--粘贴 - CAD打印输出PDF

传输网络介绍

文章目录 1、通信传输介质有哪些? 同轴电缆 –由外到内分别是:塑料皮层、屏蔽层、绝缘层、铜芯。 光纤 –由圆玻璃纤芯和玻璃包层构成,最外层是塑料护套。 双绞线 –由两根具有绝缘保护层的互相绞在一起铜导线组成的。 2、通信网络常见的组…

60题学会动态规划系列:动态规划算法第五讲

子数组系列题目 文章目录 1.最大子数组和2.环形子数组的最大和3.乘积最大数组4.乘积为正数的最长子数组长度5.等差数列划分6.最长湍流子数组7.单词拆分8.环绕字符串中唯一的子字符串 1.最⼤⼦数组和 力扣链接:力扣 给你一个整数数组 nums ,请你找出一个…