RocketMQ基础概念

2023-11-05

目录

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

适合的场景:

从上面三个维度综合来说,RocketMQ 适用于需要可靠、高吞吐量和低延迟的分布式消息通信的场景。以下举例一些RocketMQ适用的具体的业务场景:

  1. 电商订单处理:在电商平台中,订单处理是一个关键的业务环节。RocketMQ 可以用于异步处理订单相关的消息,包括订单创建、支付状态更新、库存扣减等。它可以确保订单消息的可靠传递和顺序处理,同时提供高吞吐量和低延迟。

  2. 实时日志处理:在大规模分布式系统中,日志处理对于故障排查、性能监控和数据分析至关重要。RocketMQ 可以用于收集、传输和处理系统生成的实时日志消息。它能够快速处理大量的日志数据,并保证日志消息的可靠传递和顺序处理。

  3. 移动应用消息推送:移动应用中的消息推送通常需要快速、可靠地将通知消息发送给用户。RocketMQ 可以作为消息推送的后端基础设施,支持大规模的消息推送和即时通知,保证消息的可靠传递和顺序处理。

  4. 物联网设备通信:物联网领域涉及大量的设备和传感器数据的收集和处理。RocketMQ 可以用于设备之间的实时通信,将设备生成的数据发送到云端进行处理和分析。它提供了可靠的消息传递和高吞吐量的能力,适用于大规模的物联网场景。

  5. 金融交易系统:在金融领域,交易系统对于消息的可靠性和顺序性要求非常高。RocketMQ 可以用于处理金融交易相关的消息,包括支付通知、资金结算、交易确认等。它提供了事务消息支持和顺序消息处理能力,确保交易的一致性和顺序性。

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 进行交互,获取路由信息和元数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RocketMQ基础概念 的相关文章

  • JPA常用注解

    JPA全称Java Persistence API JPA通过JDK 5 0注解或XML描述对象 关系表的映射关系 并将运行期的实体对象持久化到数据库中 JPA由EJB 3 0软件专家组开发 作为JSR 220实现的一部分 但它不囿于EJB
  • 消息中间件(MQ)

    一 什么是消息中间件 关注于数据的发送和接收 利用高效可靠的异步消息传递机制集成分布式系统 通过提供消息传递和消息排队模型 它可以在分布式环境下扩展进程间的通信 二 为什么需要消息中间件 1 系统解耦 假设你有个系统A 这个系统A会产出一个
  • JVM相关知识点

    目录 编辑一 JVM 内存区域划分 1 栈 2 堆 3 元数据区 方法区 二 JVM 类加载机制 1 类加载机制介绍 2 双亲委派模型 经典问题 三 JVM 垃圾回收机制 GC 1 了解 GC 2 GC 实际工作过程 1 找到垃圾 判定垃圾
  • centos安装rocketmq

    centos安装rocketmq 1 下载rocketmq二进制包 2 解压二进制包 3 修改broker conf 4 修改runbroker sh和runserver sh的JVM参数 5 启动NameServer和Broker 6 安
  • RocketMQ订阅关系一致性分析

    RocketMQ的消费者 在订阅topic的时候需要遵循 订阅关系一致性 原则 即 一个消费者分组 group 下的所有消费者实例的处理逻辑必须一致 一旦订阅关系不一致就会导致消费混乱 甚至消息丢失 对大多数分布式应用来说 一个group下
  • Flink RocketMQ Connector实现

    Flink内置了很多Connector 可以满足大部分场景 但是还是有一些场景无法满足 比如RocketMQ 需要消费RocketMQ的消息 需要自定时Source 一 自定义FlinkRocketMQConsumer 参考FlinkKaf
  • 05-RabbitMQ之原生API使用

    使用RabbitMQ提供的原生客户端API进行交互 一 Maven依赖
  • java实现kafka消息发送和接收

    之前写了一篇关于kafka集群搭建的点击打开链接 想了解的可以看下 今天这个实现是和前面集群对应的 使用的是新版的API 属性如果想定制自己的 需要到官方网址上面去查看一下对应的值 推介大家多去看看官方的介绍和demo 网上有些翻译过来的例
  • 初识网络原理(笔记)

    目录 编辑局域网 网络通信基础 IP 地址 端口号 协议 协议分层 TCP IP 五层网络模型 网络数据传输的基本流程 发送方的情况 接收方的情况 局域网 搭建网络的时候 需要用到 交换机 和 路由器 路由器上 有 lan 口 和 wan
  • 【RocketMQ】消息重试、重试次数设置、死信队列

    文章目录 1 死信队列 1 1 死信特性 1 2 查看死信消息 2 重试次数参数 2 1 Producer端重试 2 2 Consumer端重试 3 1 异常重试 3 2 超时重试 参考 1 死信队列 上一篇 RocketMQ 消息重试中我
  • RocketMQ 简介

    本文根据阿里云 RocketMQ产品文档整理 地址 https help aliyun com document detail 29532 html userCode qtldtin2 简介 RocketMQ是由阿里捐赠给Apache的一款
  • HTTP 协议

    目录 编辑一 HTTP 协议是什么 二 抓包工具的使用 三 HTTP 请求 1 认识 URL 2 认识方法 3 认识请求 报头 HOST Content Length 和 Content Type 编辑 User Agent Referer
  • BigDecimal类型比较数字大小

    BigDecimal类型比较数字大小 1 转成int BigDecimal b1 new BigDecimal 121454125453 145 if b1 intValue lt 0 System out println 金额为负数 Sy
  • spring整合RocketMQ

    1 看官方javademo https www apache org dyn closer cgi path rocketmq 4 2 0 rocketmq all 4 2 0 source release zip 下载下来 spring
  • spring boot 1.5.4 之监控Actuator(十四)

    上一篇 spring boot 1 5 4 整合 druid 十三 Spring Boot监控Actuator 项目 mybatis spring boot为例 源码地址 spring boot相关项目源码 码云地址 https git o
  • RocketMQ 消息过滤

    1 简介 RocketMQ分布式消息队列的消息过滤方式有别于其它MQ中间件 是在Consumer端订阅消息时 再做消息过滤的 RocketMQ这么做是在于其Producer端写入消息和Consumer端订阅消息采用分离存储的机制来实 现的
  • RocketMQ消费者可以手动消费但无法主动消费问题,或生成者发送超时

    1 大多数是配置问题 修改rocketmq文件夹broker conf 2 配置与集群IP或本地IPV4一样 重启 在RocketMQ独享实例中支持IPv4和IPv6双栈 主要是通过在网络层面上同时支持IPv4和IPv6协议栈来实现的 Ro
  • 基于Jmeter实现Rocketmq消息发送

    在互联网企业技术架构中 MQ占据了越来越重要的地位 系统解耦 异步通信 削峰填谷 数据顺序保证等场景中 到处都能看到MQ的身影 而测试工程师在工作中 也经常需要和mq打交道 比如构造测试数据 触发某些业务场景 以及针对mq的性能测试等 目前
  • Linux离线安装 RabbitMQ(RabbitMQ单机安装)

    1 下载erlang和rabbitmq安装包 1 下载Erlang路径 https github com erlang otp releases 2 下载RabbitMQ路径 https github com rabbitmq rabbit
  • JDK21 和 ActiveMQ 6.0.1

    ActiveMQ 安装和测试 一 ActiveMQ 下载 二 ActiveMQ 安装 三 代码测试 1 Pom 依赖 2 YML配置 3 启动类 4 MQ 配置类 5 MQ 消费者

随机推荐

  • QT编译安装QtMqtt子模块,WIN平台

    QT安装QtMqtt子模块 下载源代码编译 添加库文件到QT安装目录 测试工程 最终效果 2021 10 15 补充 将配置文件添加到安装目录 完整文件下载 系统 Windows10 环境 QT5 12 9 下载源代码编译 GitHub上下
  • 【Qt Quick】Android环境配置及第一个Hello World

    Android环境配置及第一个Hello World 安装Java jdk 安装Android studio 安装手机模拟器 配置Qt 第一个Hello World 常见错误 安装Java jdk 1 下载 链接 link Java1 8
  • Java数据库开发之Hibernate框架(4)Hibernate的查询

    占位 下周补充
  • kettle定时调度

    简单版 https blog csdn net hzp666 article details 107841754 详细版 1 场景介绍 根据不同的操作系统定时调度kettle资源库中的job 1 1Windows系统的定时调度 我的是 ve
  • 网络IO模型

    网络IO的本质是对socket的读取 在网络IO的过程中 有两个重要角色 分别是系统内核和用户进程 首先要等系统内核准备好数据 然后将数据从系统内核拷贝至用户进程空间 这样才算完成了一次IO 如果在系统内核没有准备好数据时 用户IO线程在此
  • Gimpel Software推出C和C ++的首选静态分析工具 PC-lint Plus,不再维护PC-lint/FlexeLint。

    Gimpel Software已不再维护PC lint FlexeLint版本9 最终更新是2014年发布的版本9 00L Gimpel Software在2018年底之前为PC lint FlexeLint提供技术支持 Gimpel So
  • Qt头文件中的QT_BEGIN_NAMESPACE

    在源代码中是这样定义的 1 define QT BEGIN NAMESPACE namespace QT NAMESPACE 2 define QT END NAMESPACE 也就是说 如果你定义以下内容 1 QT BEGIN NAMES
  • 数据结构-链式队列

    link queue node h ifndef LINK QUEUE NODE H define LINK QUEUE NODE H include
  • 串口通信协议概述——针对面试

    串口通信 串口通信 Serial Communications 的概念非常简单 串口按位 bit 发送和接收字节的通信方式 重要参数 1 数据位 2 停止位 3 奇偶校验位 4 波特率 其中 数据位 停止位 奇偶校验位又是数据格式 数据格式
  • PyWebIo

    Part1什么是 PyWebIo PyWebIO 提供了一系列命令式的交互函数来在浏览器上获取用户输入和进行输出 将浏览器变成了一个 富文本终端 可以用于构建简单的 Web 应用或基于浏览器的 GUI 应用 使用 PyWebIO 开发者能像
  • 数据库项目代码生成工具V1.18.08.18.0(RIO)

    下载 1 第一步 2 第二步 3 第三步 结果
  • ios10.3之CoreData的详细教程

    首先如果要使用CoreData可以选择在初创项目时选择添加coredata 也可以选择自己添加coredata文件 系统添加coredata后会在Appdelegate类中自动添加一个persistentContainer属性 和一个sav
  • 苹果系统与win10连接到服务器,苹果手机怎么连接win10电脑详细步骤

    使用苹果手机的朋友们你们知道苹果手机如何连接win10电脑吗 不知道的就往下看看怎么操作吧 说不定以后你可能就会用到这个方法 1 用苹果手机正品数据线连接到电脑上的 USB 端口 电脑系统会自动识别出苹果手机的内部存储器 内部存储器包括包括
  • Ai-Bot RPA自动化框架

    Ai Bot是Android Windows平台上的node js自动化框架 1 跟python的区别 跟uipaht uibot 其他框架的区别 1 VS python 相同点 Ai Bot基于node js语言的一款自动化框架 和pyt
  • 关于网络连接Network的使用

    开发一个局域网连接 代码 using UnityEngine using System Collections public class all MonoBehaviour private int serverPort public int
  • Python模拟超级大乐透随机选号

    看了一下体彩超级大乐透规则 前区号码由01 35共三十五个号码组成 后区号码由01 12共十二个号码组成 由此可以使用random模拟体彩超级大乐透随机选号 import random import time class Lottery 一
  • STM32串口:字节中断与帧中断不同导致的BUG

    文章目录 一 问题背景 1 1 硬件连接框图 1 2 玄学的BUG 1 3 帧中断触发条件 1 4 字节中断触发条件 二 解决问题 2 1 复现BUG 一个帧中断 2包数据 2 2 项目总结思考 在使用STM32F207这一款单片机调试串口
  • 利用华硕e6308_P8P67_PRO主板开发双目立体视觉问题小结

    利用华硕e6308 P8P67 PRO主板开发双目立体视觉问题小结 实验室有台组装计算机 主板是华硕e6308 P8P67 PRO 实验室要求我利用该计算机开发双目立体视觉系统 咋看上去 这块主板很猛 motherboard的图解如下 可以
  • Linux安装MySQL详细教程(YUM+离线安装)

    目录 1 Linux安装MySQL共有两种方法 2 软件包工具下载 离线 3 YUM安装步骤 4 离线安装 着重介绍 1 Linux安装MySQL共有两种方法 一是使用YUM 二是离线安装 2 软件包工具下载 离线 MySQL Downlo
  • RocketMQ基础概念

    目录 1 简介 2 架构 3 核心概念 1 简介 RocketMQ 是一款开源的分布式消息中间件 最初由阿里巴巴集团开发并开源 它旨在为分布式系统提供可靠 高性能 可扩展的消息通信能力 RocketMQ和RabbitMQ KAFKA一起并列