消息队列--入门篇

news2025/3/2 4:13:14

消息队列–入门篇

目录

  • 消息队列--入门篇
  • 如何学习一门新技术?
  • 消息队列的组件
    • 大体介绍一下
      • producer
      • producer group
      • nameSrv
      • broker
      • broker cluster
      • consumer和consumer group
      • Topic
      • Tag
  • 总结

如何学习一门新技术?

学习任何知识需要有一个整体的认识,然后再深入学习,钻研细节,最后抓住核心脉络,总结整理消化在脑海中形成体系。

就好比我们在阅读一些经典的书籍,先粗读(建立大概的认识)—后细读(深入学习思考)—最后总结整理(消化成自己的东西)

我们从RocketMQ入手,一起来看企业级消息队列的整体设计架构。

市面上消息队列的设计基本都是八九不离十大同小异,在了解RocketMQ的大体设计后,对其他消息队列也就手到擒来了。

我们先来思考一下,完整的消息队列需要哪些组件呢?

消息队列的组件

先看一张图:

在这里插入图片描述

我是生产消息的人,发送一条消息给杰尼龟,消息内容是:“放学KTV见”。

但是杰尼龟忙着陪对象,他可能不能及时看到我的消息,但我的消息也不想让它丢了。

因此需要有一个中转站,用来暂存这些消息,这样杰尼龟即使不能及时处理消息,也可以等他空了再来看这些消息,我当然也不需要关注杰尼龟忙不忙,直接发消息就完事了。

在这里插入图片描述

可以看到中转站,不仅存储我的信息,还能存储很多信息,比如妙蛙种子发给星之卡比的。

渐渐地消息变多了,一个中转站可能运作不过来,这时候需要扩容再建一个。

但是随之而来的是,中转站多了,管理起来就不容易,大家用起来就不容易。

比如妙蛙种子这个人就是比较犟,他每次就去中转站1取消息,也不去中转站2看看有没有他的消息,导致星之卡比给他发的“今晚老地方见啊”,他也没看到。

这个时候就需要一个看板,这个看板的作用就是让大家知晓有几个中转站。

在这里插入图片描述

中转站们需要自己上报收到的消息给看板,让大家知晓它们的存在。

而发消息的人和收消息的人可以从看板上知晓中转站的存在和对应的消息,从而顺利的进行收发消息。

渐渐地我和杰尼龟之间的消息变多了,我把一些工作分担出去给我的小弟,于是就组建起来自己的小团队,招募了小火龙-1,小火龙-2来帮忙。

上图虽然看起来有模有样,但是细想还有很多的问题。

比如:

  1. 我怎么知道哪个中转站比较空,将消息发给中转站1还是2?
  2. 如果中转站堆积了很多消息,怎么让杰尼龟快速找到他的消息,难道要一条一条翻吗,效率也太低了。
  3. 如果这时候又来了一个小陆,她是一个海王,每天都要收发大量的消息,并且是和不同的接收方,如何保证中转站的负载均衡不超负荷呢?

这些事看起来没有那么简单,但是没有关系,后续我们慢慢盘,今天我们的目标是建立一个大体的印象。

结合上面我画的图,我们再来看下面这张官方的图,它包括了RocketMQ相关的组件和角色。

在这里插入图片描述

  • producer类似于上面的我,小火龙
  • producer group-A就是我的团队
  • nameSrv1、2就是看板
  • BrokerA、B就是中转站1、2
  • BrokerCluster就是中转站们
  • consumer就是上面的杰尼龟
  • consumer group-A就是杰尼龟的团队

我相信通过上文通俗易懂的介绍,大家对这几个角色与组件应该有初步了解。

大体介绍一下

producer

生产者,就是消息的发送者。

它会将消息发送给Broker。

producer group

生产者组,用于标识一类生产者。

比如发送事物消息时,一个生产者挂了后,broker可以赵同一个生产组里的另一个生产者来确认事物的情况。(不理解没事,后面会讲到)

nameSrv

名字服务,上面的例子把它比作一个看板,实际上就是一个路由注册中心。

broker会定时把自己的信息比如IP地址等上传给nameSrv。

这样生产者和消费者就可以从nameSrv上获取这些信息,这样才能顺利的发送和接受信息。

broker

代理服务器,也就是我们所说的消息中转站,它主要负责消息的存储、投递、查询。

broker cluster

代理服务器集群,我们知道一个服务是脆落的,假设就一个broker,万一挂了消息就无法正常的发送、存储和消费。

所以我们在企业级场景会搭设集群。

集群可以是主–主集群,也就是集群内部的broker是同等的,同时对外提供服务。

在这里插入图片描述

也可以是主—从集群,主broker对外提供服务,从broker同步主broker的消息作为备份, 当主broker宕机,从broker也可以提供消费信息。

在这里插入图片描述

一个主可以有多个从,关于集群更多高可用和高可靠的知识,我们后续再谈。

consumer和consumer group

消费者,用来消费消息。可以向broker拉去自己想要消费的消息。

可以让broker把自己想要的消息推过来,然后消费者们可以组成一个消费组,就像杰尼龟小团队。

消费组的概念很关键,比如现在一共有两个消费组分别是杰尼龟消费组和皮卡丘消费组。那么两个消费组之间的消息消费是互不干扰的。就好比我发了一条消息给broker,这条消息杰尼龟消费组可以看,皮卡丘消费组也能看,那么这条消息被杰尼龟消费组消费了不影响它被皮卡丘消费组继续消费。

对于一个组来说,消费的模式有集群消费和广播消费两种模式。

  • 集群模式:生产者发送了4条消息,编号为A-D,杰尼龟团队收到了4条消息,实际上是杰尼龟收到A、D,而杰尼龟-1收到了B,杰尼龟-2收到了C,大家负载均衡地消费了这四条消息。

    在这里插入图片描述

  • 广播模式:生产者发送了4条消息,编号为A-D,杰尼龟团队收到了这4条信息,实际上是杰尼龟收到了A、B、C、D,杰尼龟-1收到了A、B、C、D,杰尼龟-2收到了A、B、C、D,组内的每个消费者都收到了全部信息,这就是广播。

Topic

主题,可以认为是消息的分类。比如足球主题、篮球主题。

那么有关足球的消息,我们都发往足球主题,如Topic-football。有关篮球的消息,我都发送篮球主题,如Topic-basketball。

这样就给信息分了类,那么对足球有兴趣的消费者则可以订阅Topic-football、对篮球有兴趣的则可以订阅Topic-basketball,大家相互之间互不干扰。

在这里插入图片描述

这样一来大家都只订阅了自己想要的信息,不会被无关的信息给打扰了。

Tag

topic已经给消息分类了,那么tag类似于二级分类,这能更精细化地区分信息。

比如有人对足球主题感兴趣,但是只喜欢看梅西相关的信息,而有些人喜欢看C罗的消息。

那么发送消息往足球主题发,但是也顺带加上了tag信息来标记这个信息是梅西的还是 C罗的。

这样订阅了足球主题的消费者可以根据tag选择它们想要的信息,过滤他们不想要的信息。

比如小火龙喜欢梅西,那么订阅的时候只要标记自己只要topic-football且带有tag是梅西的信息。

总结

初始篇我们介绍了消息队列应该有的相关的组件和角色,当然还有很关键的队列,keys等概念,我们放到后面重点讲。

通过本文的介绍,我们至少对其有了初步的印象,也清晰了各个组件大概的作用与消息的流转。后边我会带大家剖析消息队列的原理,清晰RocketMQ整体的运行流程。然后开始掌握基础和进阶的用法,怎么在项目中使用,以及面试常问的消息队列问题。

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

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

相关文章

【数据分享】2006-2021年我国省份级别的园林绿化相关指标(多项指标)

《中国城市建设统计年鉴》中细致地统计了我国城市市政公用设施建设与发展情况,在之前的文章中,我们分享过基于2006-2021年《中国城市建设统计年鉴》整理的2006—2021年我国省份级别的市政设施水平相关指标、2006-2021年我国省份级别的各类建设用地面积数…

【Linux】进程概念I --操作系统概念与冯诺依曼体系结构

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法…感兴趣就关注我吧!你定不会失望。 本篇导航 1. 冯诺依曼体系结构为什么这样设计? 2. 操作系统概念为什么我们需要操作系统呢?操作系统怎么进行管理? 计算机是由两部分组…

使用Xshell远程访问工具连接到Linux

首先需要查看Linux地址,在Linux主界面中右键选择“Open in Terminal” 输入“ifconfig”指令查看IP地址 打开Xshell,输入相关信息,建立连接 点击连接,按照提示输入用户名 root和你自己安装centos7时设置的密码,用…

css实现圆角三角形,圆角三角形的实现

今天给大家带来一个如何实现圆角三角形的方案,这个方案虽然可以实现,但是也是借助拼凑等方式来实现的,假如想一个div来实现圆角三角形,还是比较困难的。之前文章讲了如何实现对话框,里面介绍了三角形的实现方式。今天讲…

使用navicat for mongodb连接mongodb

使用navicat for mongodb连接mongodb 安装navicat for mongodb连接mongodb 安装navicat for mongodb 上文mongodb7.0安装全过程详解我们说过,在安装的时候并没有勾选install mongodb compass 我们使用navicat去进行可视化的数据库管理 navicat for mongodb下载地址…

秒杀“超卖”问题

概述:限时秒杀活动在我们的日常生活中有很多,尤其在“双11”,“618”这类购物节活动中用户的并发数更是海量剧增,那么系统为了防止“超卖”秒杀商品,怎么做才能不影响性能的同时防止超卖。 为了解决“超卖”问题有两种…

mysql或ps提示 vcruntime140_1.dll丢失如何修复,5种方法办法你搞定

今天我在运行一款新安装的软件时,突然遇到了一个让我十分困扰的问题——系统提示vcruntime140_1.dll文件丢失。这个问题导致我无法正常使用这个软件,我也不知道怎么回事,所以我在网上找了一天终于让我找到解决这个问题的方法了,今…

绩效只是绩效

绩效只是绩效 一、背景二、绩效和管理三、绩效和薪资四、QA环节五、总结与反思 一、背景 目前大部分主体的绩效考核方向不明确,有的只是为了考核而考核,那么绩效是什么? 打A(超出预期)和打D(低于预期&…

阿里云ESC服务器CPU一直处于100%该如何排查?

阿里云ESC服务器CPU一直处于100%该如何排查? 问题背景 使用 docker 容器化部署整个项目,然后服务器的CPU一直处于100%,此时就出现了问题:此时如果重新开启一个窗口去连接,或者访问宝塔面板、Navicat连接MySQL就连接不…

使用redis+lua通过原子减解决超卖问题【示例】

文章目录 前言一、准备工作二、不使用Lua三、使用Lua 前言 超卖,即在并发的情况下,所售商品数量大于商品的库存数量。在并发量大的情况下,用户请求同时到达,对数据库进行操作,在没有采取相应的处理的情况时从而导致出…

第八章 Linux实际操作——定时任务调度

第八章 Linux实际操作——定时任务调度 8.1 crond任务调度8.1.1 概述8.1.2 基本语法8.1.3 常用选项8.1.4 快速入门8.1.5 应用实例8.1.6 crond相关指令 8.2 at定时任务8.2.1基本介绍8.2.2 at命令格式8.2.3 at命令选项8.2.4 at时间定义8.2.5 应用实例 8.1 crond任务调度 crontab…

Vulnhub系列靶机---HarryPotter-Nagini-哈利波特系列靶机-2

文章目录 信息收集主机发现端口扫描gobuster目录扫描dirsearch扫描joomscan扫描实现http3访问 漏洞利用Gopherus工具GetShell提权firefox_decrypt工具 总结 靶机文档:HarryPotter: Nagini 下载地址:Download (Mirror) 信息收集 主机发现 端口扫描 访问8…

生成克隆钓鱼网站与对win7进行后渗透操作

目录 目录 前言 系列文章列表 思维导图 1,实验涉及复现环境 2,CS的介绍 2.1,CS的简介 2.2,CS的主要功能 3,CS的安装 3.1,将cobalt_strike_4.5文件夹放到kali中 3.1,放入过程中的注意事项 3.2,如图所示 4,配置工具 4.1,进入c…

Kafka3.0.0版本——消费者(Sticky分区分配策略以及再平衡)

目录 一、Sticky分区分配策略原理二、Sticky分区分配策略 示例需求三、Sticky分区分配策略代码案例3.1、创建带有7个分区的sevenTopic主题3.2、创建三个消费者 组成 消费者组3.3、创建生产者3.4、测试3.5、Sticky分区分配策略代码案例说明 四、Sticky分区分配再平衡案例4.1、停…

机器人抓取检测技术的研究现状

1.分析法 图 1 为分析法在进行抓取检测时所采用的 一般策略[3] [3]Sahbani A, El-Khoury S, Bidaud P. An overview of 3D object grasp synthesis algorithms[J]. Robotics and Autonomous Systems, 2012, 60(3): 326-336. 首先,基于环境限制和机械手与物体模 型进行抓取检…

算法宝典——Java版本(持续更新)

目录 一、链表的算法题(目前9道) 1. 移除链表元素(思路:前后指针) 2. 反转一个单链表 (思路:头插法) 3. 链表的中间结点(思路:快慢指针) 4. 链…

衷心祝福“好教师”节日快乐

在2023年教师节的今天,本“人民体验官”推广人民日报官方微博文化产品《张桂梅说教师这个职业有苦有幸福》。 图:来源“人民体验官”推广平台 人民微博简述道:“今天,张桂梅祝全国老师们节日快乐。” 张桂梅说:“教师…

图像的几何变换(缩放、平移、旋转)

图像的几何变换 学习目标 掌握图像的缩放、平移、旋转等了解数字图像的仿射变换和透射变换 1 图像的缩放 缩放是对图像的大小进行调整,即 使图像放大或缩小 cv2.resize(src,dsize,fx0,fy0,interpolationcv2.INTER_LINEAR) 参数: src :输入图像dsize…

机构企业学员培训知识付费小程序开源版开发

机构企业学员培训知识付费小程序开源版开发 用户注册与登录:提供用户注册和登录功能,以便用户能够访问和使用小程序。个人信息管理:允许用户管理个人资料,包括修改个人信息和上传个人头像。课程浏览:提供课程列表&…

[技术讨论]讨论问题的两个基本原则——17年前的文字仍然有效

前两天又有人找我讨论问题,而且是他自己的项目,内容与我没有任何关系,他说的,却是讨论。 其实就是想来做咨询,又不想付费。 今天看到了十七年前写的这篇文字,就重发一下了,当然有少量文字修订&a…