深入浅出消息队列----【初始篇】

深入浅出消息队列----【初始篇】

  • 一、思考:为什么会出现 “消息队列”
  • 二、RocketMQ 总览
    • producer
    • producer group
    • nameSrv
    • Broker
    • Broker cluster
    • consumer
    • consumer group
    • Topic
    • Tag

本文仅是文章笔记,整理了原文章中重要的知识点、记录了个人的看法
文章来源:编程导航-鱼皮【yes哥深入浅出消息队列专栏】

一、思考:为什么会出现 “消息队列”

正常的消息流转应该像下面的图一样

在这里插入图片描述

我(yes)给鱼皮发送了一条消息,消息内容是 “放学后校门口见”。

但鱼皮可能很忙,没有及时的看到我的消息,但又不能让我的消息丢失。

所以就需要有个中转站来暂存这些消息,这样鱼皮不能及时处理消息,可以等空闲的时候再看这些消息,我也不需要在意鱼皮是否忙不忙了,只需要发消息就行了。

在这里插入图片描述

中转站除了存储我发送给鱼皮的消息外,还可能存储很多别的消息,比如蛇皮发送给猪皮的消息。

当消息越来越多后,一个中转站可能运转不过来了,就需要进行扩容了,中转站-2。

在这里插入图片描述

但随着中转站的增加,管理起来就不容易了,发消息的人和看消息的人用起来也不方便了。

比如,蛇皮这个人很倔,他只向中转站-2发消息,即使中转站-2消息爆满了,中转站-1空闲。

又或者,猪皮这个人很傻,他只会从中转站-1拿消息,从来不会去中转站-2看一下,导致他遗漏了很多消息。

更严重的情况,又一次中转站-1瘫痪了,所有人都停止工作了,因为所有人都不知道中转站-2的存在。

因此,需要一个看板,这个看板的作用是让大家知道有几个中转站,分别在哪里。

在这里插入图片描述

中转站会主动上传自己的信息给看板,让大家知晓中转站的存在。

发消息和看消息的人可以从看板上知晓中转站的信息,从而有选择的发送和接收消息。

渐渐的我跟鱼皮之间的消息越来越多了,我将一部分工作分给我的小弟yes-1,鱼皮也越来越忙了,他将找了他的小弟鱼皮-1、鱼皮-2来帮忙。

在这里插入图片描述

这样就大致了解了消息队列出现的原因,以及大致的组成。

但还是存在很多问题,比如:

  1. 鱼皮如何知晓这个消息是工作消息还是闲聊消息呢?如何让两个小弟的工作量平均呢?
  2. 我们虽然知道了中转站-1和中转站-2的存在,但是如何判断是将消息发送到中转站-1还是中转站-2呢?
  3. 如果中转站堆积了很多消息,如何让鱼皮快速的找到属于他的消息呢?

上面是yes哥举的个消息队列的例子,其实在我们日常生活中,消息队列的模式也是普遍存在的,比如接收快递的快递驿站,快递被快递员放到快递驿站,我们去快递驿站取快递…

仔细想一想,这不就是消息队列的实际应用吗,固然,宇宙的进制的编程。

二、RocketMQ 总览

在这里插入图片描述

producer

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

将消息发送到 Broker

producer group

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

比如发送事务消息时,当一个生产者挂了后,broker 可以找到同一个生产组的另一个生产者来确认事务的情况。

nameSrv

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

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

这样生成和消费者从 nameSrv 上获取这些信息,从而顺利的发送和接收消息。

Broker

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

Broker cluster

代理服务器集群,单个服务是脆弱的,假设就一个 Broker,万一挂掉了,就不能正常发送、存储和消费了,所以企业中都会搭建集群保证稳定性。

集群可以是主主集群,即集群内部的 Broker 是等同的,同时对外提供服务。

在这里插入图片描述

也可以是主从集群,主 Broker 提供对外服务,从 Broker 同步主 Broker 的消息作为备份,当主 Broker 宕机,从 Broker 可以提供消费消息,一个主可以有多个从。

在这里插入图片描述

consumer

消费者,用来消费消息。

consumer group

消费者组。

消费者组这个概念很关键,比如现在一个有两个消费者组分别是鱼皮消费者组合猪皮消费者组。

那么两个消费者组之间的消息消费是互不干扰的。

换句话说就是,我发送了一条消息给 Broker,鱼皮消费者组可以看,猪皮消费者组也可以看。

这条消息被鱼皮消费者组消费了,不影响它再被猪皮消费者组消费。

在这里插入图片描述

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

  1. 集群模式:生产者发送了4条消息,编号分别是A-D,鱼皮团队接收了这4条消息,实际上鱼皮收到了A、D,鱼皮-1收到了B、鱼皮-2收到了C,大家负载均衡地消费了4条消息。

在这里插入图片描述

  1. 广播模式:生产者发送了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 选择它们想要的消息,过滤不想要的消息。

在这里插入图片描述

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

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

相关文章

linux下Jenkins的安装部署

前言: 用docker安装Jenkins非常方便快捷,但是最近国内的docker镜像源都不好用了,这里回顾一下最原始的Jenkins安装方式 安装前准备 安装环境 Jenkins的运行依赖java环境,linux下jdk的安装参考:linux下JDK的安装-CSD…

有效、轻松地从 SD 卡恢复已删除照片的教程

“我拿到了新手机,并将 SD 卡设置为保存手机拍摄的照片的位置;但是,我错误地删除了 SD 卡上的某些高清照片,如何从 SD 卡恢复已删除的照片?请帮忙。” 除了意外删除之外,许多因素都可能导致 SD 卡上的照片…

CH552G的使用IAP下载方式,下载IAP文件和用户运行代码

参考 参考:https://mar-sky.blog.csdn.net/article/details/140448176,本质一样,实现方式不同,对程序的要求不同,不用放在运行代码中。和下面最大区别就是代码的下载地址不同,IAP的代码放在的另一个区域。 …

持续集成03--Jenkins的安装与配置

前言 在持续集成/持续部署(CI/CD)的实践中,Jenkins作为一个开源的自动化服务器,扮演着至关重要的角色。本篇“持续集成03--Jenkins的安装配置”将带您走进Jenkins的世界,深入了解如何在Linux环境中安装并配置Jenkins。…

在 Apifox 中如何高效批量添加接口请求 Body 参数?

在使用 Apifox 进行 API 设计时,你可能会遇到需要添加大量请求参数的情况。想象一下,如果一个接口需要几十甚至上百个参数,若要在接口的「修改文档」里一个个手动添加这些参数,那未免也太麻烦了,耗时且易出错。这时候&…

W外链创建抖音私信卡片教程,私信卡片跳转微信工具

W外链地址wai.cn 在数字化时代的浪潮中,私域流量的价值愈发凸显,成为企业获取用户、建立品牌忠诚度、提升转化率的关键手段。抖音,作为当下最热门的短视频社交平台之一,其用户基数庞大、互动性强,为企业私域引流提供了…

3872:Library

网址如下: OpenJudge - 3872:Library 这玩意的dp公式应该很明显吧? 和斐波纳契数列一个样 就是n太大了,最高有十亿,不能用普通的dp来做 经验丰富的可能已经知道了 就是用快速幂加上斐波那契数列通项就行了,虽然f&…

看看我发现了什么好东西!FlowUs知识库还有“就业服务站点”?!

不得不说,FlowUs的知识库内容是在是太丰富了, 浏览了一下,发现真有能帮助毕业生的就业信息分享人才政策汇总等我需要的信息💡,我反手就是一个订阅,怕下次找不到了! 在数字化转型的浪潮中,团队和…

代理IP为何难以达到百分百的有效率?

“随着网络技术的不断发展代理IP成为了众多网络用户的重要工具,尤其在需要保护隐私、突破网络限制或进行大规模网络数据抓取等场景下。然而尽管代理IP的应用广泛且功能强大,但在实际应用中,我们不难发现代理IP的有效率往往难以达到百分百。”…

跨境电商账号被封禁?浏览器指纹风险你需要了解一下!

跨境电商运营者在利用海外社媒平台推广产品时,常常会遭遇一个难题:如何在利用这些平台进行市场营销的同时,避免因浏览器指纹识别技术而导致账户被封禁呢?作为资深的跨境电商从业人员,龙哥将分享一些专业见解&#xff0…

Qt中的弹簧:QSpacerItem的用法

Qt是一个跨平台的C++图形用户界面应用程序框架,它提供了丰富的控件和布局管理功能,使得开发复杂的用户界面变得简单。在Qt的布局系统中,QSpacerItem扮演了一个重要的角色,它被用来在界面元素之间添加“弹簧”,以确保布局的灵活性和适应性。 什么是QSpacerItem? QSpacerI…

【sklearn | 7】:scikit-learn项目实战指南

引言 在数据科学和机器学习领域,Python以其简洁的语法和强大的库支持,成为了许多开发者和研究者的首选语言。而在众多Python机器学习库中,scikit-learn以其易用性、灵活性和强大的算法集合,成为了最受欢迎的库之一。本文将深入探…

路由上传一个ui_control参数(uint32类型)控制页面UI显隐

前言:传一个uint32类型的值,通过 按位或操作符(|)来设置ui_control的值,通过按位与操作符(&)来检测是否显示或隐藏 简单介绍一下两个概念: 按位与操作符和按位或操作符都是二进…

【漏洞复现】泛微E-Cology WorkflowServiceXml SQL注入漏洞

0x01 产品简介 泛微e-cology是一款由泛微网络科技开发的协同管理平台,支持人力资源、财务、行政等多功能管理和移动办公。 0x02 漏洞概述 泛微OAE-Cology 接口/services/WorkflowServiceXml 存在SQL注入漏洞,可获取数据库权限,导致数据泄露…

移动端APP 如何进行自动化和探索性测试?

在测试设计时最主要依据的就是测试金字塔的测试结构。如果在项目临近发布才开始测试并发现缺陷,这样修复缺陷的成本就会很高,项目的进度也会很不确定。所以,就开发阶段来说,如果把测试分层,在不同的开发阶段都进行测试…

IIS短文件名称POC检测

使用方法 安装python环境 执行此文件 python [命名].py -u http://baidu.com #!/usr/bin/env python # -*- encoding: utf-8 -*- """ File : IIS-ShortName-PoC.py tell : 用于安全人员检测系统是否存在该漏洞,切勿用于非法用途 "…

分类预测 | Matlab实现OOA-LSSVM鱼鹰算法优化最小二乘支持向量机多特征分类预测/故障诊断

分类预测 | Matlab实现OOA-LSSVM鱼鹰算法优化最小二乘支持向量机多特征分类预测/故障诊断 目录 分类预测 | Matlab实现OOA-LSSVM鱼鹰算法优化最小二乘支持向量机多特征分类预测/故障诊断分类效果基本介绍程序设计参考资料 分类效果 基本介绍 分类预测 | Matlab实现OOA-LSSVM鱼…

生物化学基础1 : 蛋白质

生物化学基础1 : 蛋白质 /***************************************************/ /***************************************************/ /***************************************************/ /***************************************************/ /**************…

background-image: linear-gradient 属性hover动画

1.效果 2.代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wid…

中霖教育:2024年注册会计师考试

2024年注册会计师考试报名时间已经将于四月份结束&#xff0c;还未开始考试&#xff0c;没有报名的考生可以准备明年的考试。 报名时间&#xff1a;4月8日-4月30日 考试时间&#xff1a;8月23日-8月25日 报名条件&#xff1a;具有专科以上学历&#xff0c;或者具有会计或者相…