RocketMQ的学习历程(二)----MQ基本构架

news2024/9/21 1:39:34

文章目录

  • 1.MQ的基本要素
    • 1.1.消息(Message)
    • 1.2.主题(Topic)
    • 1.3.标签(Tag)
    • 1.4.队列(MessageQueue)
    • 1.5.消息标识(MessageId)
  • 2.MQ中的主要角色和相关联系
    • 2.1.Producer
    • 2.2.Broker
    • 2.3.Consumer
    • 2.4.NameServer

1.MQ的基本要素

在这里插入图片描述

1.1.消息(Message)

消息是 RocketMQ 中的最小数据传输单元。生产者将业务数据的负载和拓展属性包装成消息发送到服务端,服务端按照相关语义将消息投递到消费端进行消费。
消息由以下几个部分组成:

2.MQ中的主要角色和相关联系

在这里插入图片描述

2.1.Producer

  • Producer是消息的生产者,负责将业务系统中产生的消息发送到Broker。
  • Producer支持多种发送方式,如同步发送、异步发送、顺序发送和单向发送。
  • Producer还支持批量发送、异步发送、压缩发送等方式来降低网络开销和提高吞吐量。
  • Producer在发送消息之前,需要先从NameServer集群中的随机一台获取Topic和Broker的映射关系,并缓存在本地内存中。
  • 然后根据负载均衡策略选择一个Broker Master建立长连接,并将消息发送到该Broker。
  • 如果发送失败,Producer会根据不同的发送方式进行重试或回调。

2.2.Broker

  • Broker是消息的存储者,负责接收Producer发送的消息,并将消息存储在磁盘或内存中。
  • Broker还负责响应Consumer的拉取请求,并将消息返回给Consumer。
  • Broker支持主从部署,一个Master可以对应多个Slave,Master支持读写,Slave只支持读。
  • Broker在启动时,会向NameServer集群中的每一台注册自己的路由信息,并定期发送心跳包来维持连接。
  • Broker还会定期扫描磁盘或内存中的消息,删除过期或已消费的消息,以释放空间。
  • Broker还提供了事务消息、顺序消息、延迟消息等功能来满足不同场景的需求。

2.3.Consumer

  • Consumer是消息的消费者,负责从Broker拉取或推送消息,并进行业务处理。
  • Consumer支持两种消费模式:集群消费和广播消费。
    • 集群消费模式下,同一个Consumer Group中的Consumer实例会对同一个Topic下的不同Message Queue进行负载均衡消费;
    • 广播消费模式下,同一个Consumer Group中的Consumer实例会对同一个Topic下的所有Message Queue都进行消费。
  • Consumer在启动时,也需要先从NameServer集群中的随机一台获取Topic和Broker的映射关系,并缓存在本地内存中。
  • 然后根据消费模式和负载均衡策略选择一个或多个Broker Master或Slave建立长连接,并从它们拉取或推送消息。
  • 如果拉取失败,Consumer会根据重试策略进行重试或回调。

2.4.NameServer

  • NameServer是一个轻量级的路由注册中心,支持Broker的动态注册和发现,保存Topic和Broker之间的关系。
  • NameServer通常也是集群部署,但是各NameServer之间不会互相通信,各NameServer都有完整的路由信息,即无状态。
  • NameServer提供了简单而高效的路由服务,使得Producer和Consumer能够快速找到对应的Broker地址,并且能够动态感知Broker的上下线变化。

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

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

相关文章

列表、栈、队列

列表(List) 介绍 一系列有序元素的集合。列表中的元素可以是任意类型,允许重复。 可通过索引定位、访问列表中的(单个)元素,还可使用切片(slice)操作一次性访问多个元素&#xff…

LINUX系统SSH连接安装Matlab、添加环境变量、后台运行Matlab脚本

安装Matlab 使用MobaXterm软件SSH连接远程服务器,输入IP、用户名和端口号: 输入密码进入(密码不显示) 网上找一个Matlab安装包(iso镜像)上传进服务器端,或者直接使用wget指令在服务器端下载镜…

Faster RCNN系列4——生成Proposal与RoI

Faster RCNN系列: Faster RCNN系列1——Anchor生成过程 Faster RCNN系列2——RPN的真值与预测值概述 Faster RCNN系列3——RPN的真值详解与损失值计算 Faster RCNN系列4——生成Proposal与RoI Faster RCNN系列5——RoI Pooling与全连接层 一、生成Proposal 生成Pr…

【python中的多进程了解一下?】

基本说明 多进程是指在同一台计算机中同时运行多个独立的进程。每个进程都有自己的地址空间,可用于执行一些特定的任务。这些进程可以同时执行,从而提高了程序的性能和效率。多进程可以在多核计算机上实现真正的并行计算,可以同时运行多个程…

资本观望,大厂入局,海外大模型血脉压制……国内AIGC创业者的机会在哪里?...

图片来源:由无界 AI生成 A股AI概念股直线式拉涨,技术大牛带资进组分分钟成数十亿人民币独角兽,互联网巨头争抢着入局,政府各类扶持政策持续出台,媒体动不动就是万亿风口,500万年薪难招AIGC大牛……2022年以…

57、Yolov8-seg实例分割部署MNN、OpenVINO、OAK,RK3588平台上

基本思想:部署yolov8-seg到mnn、openvino、oak平台上,仅仅做记录 实验模型:链接: https://pan.baidu.com/s/1ilX1YMuhONkisKuGuiqvWw?pwd75ti 提取码: 75ti 一、是用官方模型转onnx首先,然后进行sim一下,是用模型日期2023-04-2…

从120s到2.5s,看看人家的MyBatis批量插入数据优化,那叫一个优雅

最近在压测一批接口,发现接口处理速度慢的有点超出预期,感觉很奇怪,后面定位发现是数据库批量保存这块很慢。 这个项目用的是 mybatis-plus,批量保存直接用的是 mybatis-plus 提供的 saveBatch。 我点进去看了下源码&#xff0c…

入职华为外包一个月后,我离职向“北上广深”流浪了...

这次来聊一个大家可能也比较关心的问题,那就是就业城市选择的问题。而谈到这个问题,就不可避免地会谈到一些关于:机会?技术氛围?跳槽?薪资水平?等等一系列问题。 正好,这也是大家所…

【react全家桶】react-router

本人大二学生一枚&#xff0c;热爱前端&#xff0c;欢迎来交流学习哦&#xff0c;一起来学习吧。 <专栏推荐> &#x1f525;&#xff1a;js专栏 &#x1f525;&#xff1a;vue专栏 &#x1f525;&#xff1a;react专栏 文章目录 11 【react-router】1.准备1.1 SPA1.2 …

搞懂分布式RPC开源框架-gRPC

搞懂分布式RPC开源框架-gRPC rpc解决了什么问题&#xff0c;与消息队列应用场景比较 rpc(远程调用方法):请求回应 socket网络问题 ------> 消除端到端交互问题 业务场景&#xff1a; rpc&#xff1a;同步地处理 消息队列&#xff1a;不紧迫的非必要的 异步解决问题 &#x…

【回眸】又是一年毕业季,怎么利用ChatGPT 4.0 优化毕业论文?

目录 【回眸】又是一年毕业季&#xff0c;怎么利用ChatGPT 4.0 优化毕业论文&#xff1f; 前言 ChatGPT4.0降重提示词&#xff08;3.5表现略逊色一些&#xff0c;不过也可以用这个来作为提示词&#xff09; 举个例子 降重前的原文 构思提示词 确定提问词 选用合适的翻译…

CloudCompare如何进行二次开发?

文章目录 0.引言1.界面设计2.功能实现3.结果展示 0.引言 CloudCompare源代码编译成功后&#xff0c;即可进行二次开发&#xff0c;可以通过修改源码或者制作插件&#xff08;插件开发详见&#xff1a;CloudCompare如何进行二次开发之插件开发&#xff1f;&#xff09;实现二次开…

SpringBoot配置文件(properties与yml详解)

目录 一&#xff0c;SpringBoot配置文件 1&#xff0c;配置文件的作用 2&#xff0c;配置文件的格式 二&#xff0c;properties 配置文件说明 1&#xff0c;properties 基本语法 2&#xff0c;读取配置文件 3&#xff0c;properties 的缺点 三&#xff0c;yml配置文件说…

掌握Linux指令和权限:一个入门教程

目录 一.Linux基本指令1.ls指令2.pwd指令3.cd指令4.touch指令5.mkair指令6.rmdir和rm指令 一.Linux基本指令 1.ls指令 语法格式:ls [选项][目录或者文件] 功能&#xff1a;对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xff0c;将列出文件名以及其…

Chrome扩展开发指南

前言 Chrome 扩展&#xff08;通常也叫插件&#xff09;也是软件程序&#xff0c;使用 Web&#xff08;HTML, CSS, and JavaScript&#xff09;技术栈开发。允许用户自定义 Chrome 浏览体验。开发者可以通过增加特效或功能来优化体验。例如&#xff1a;效率工具、信息聚合等等。…

数据结构考研版——KMP算法

一、 我们先看下面这个算法当比较到不匹配的时候 模式串后移一位&#xff0c;并且让比较指针回去&#xff0c;这就叫做指针的回溯&#xff0c;回溯就是造成这个简单算法效率比较低的原因 这种是朴素模式匹配算法&#xff0c;时间复杂度比较高 int index(Str str,Str substr…

MAVEN安装与配置

文章目录 一、安装MAVEN二、在IDEA中进行配置 一、安装MAVEN 打开MAVEN官网下载&#xff1a;https://maven.apache.org/download.cgi 选择这两个进行下载&#xff0c;然后直接解压缩到指定的安装目录即可。 配置环境变量 1&#xff09;MAVEN_HOME设置为maven的安装目录 2&…

指令段间及文件间参数调用过程(64位 Intel架构)

指令段间及文件间参数调用过程&#xff08;64位 Intel架构&#xff09; 文章目录 指令段间及文件间参数调用过程&#xff08;64位 Intel架构&#xff09;一. 指令段间的参数调用过程1.1 推论1.2 验证 二. 文件间的参数调用过程2.1 推论2.2 验证 三. 指令解释相关补充 一. 指令段…

基于html+css的图片展示24

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

docker安装rocketMQ

1、安装jkd1.8 docker pull java:8 或者 docker pull openjdk:8 查看已安装的镜像&#xff1a; docker images 运行jdk命令 docker run -d -it --name java-8 java:8 进入JDK 容器 docker exec -it java-8 /bin/bash 查看java版本&#xff0c;进入java-8容器后输入 &#x…