MQ-导读

news2025/3/13 20:13:42

什么是MQ?

MQ是一款消息中间件,通常被称为"消息队列",用于分布式架构中上下文的异步通信,

由三个角色组成:

1. 消息提供者:发送消息的人

2. 消息接收者:接收、处理消息的人

3. 消息代理者:负责存放消息、转发消息

举个例子

就拿登录来说,用户在登录的时候需要去进行一些其他的操作,比如风控、短信、记录日志,如果采用同步的方式,那么用户在远程调用其他服务的时候就需要去等待其他微服务完成然后返回数据,这种情况十分影响用户的体验,所以就需要用到MQ异步消息,用户登录完直接将消息发到MQ,然后又MQ去进行异步通知其他服务,用户登录这块就能够直接结束,无需做没用的等待。

MQ的学习路线

同步调用

拿支付订单来举例子,如果是同步的话,那么就代表着支付服务完成了然后要依次去调用其他的服务,当服务多的时候,计算每个服务耗时都很短,但是加起来之后时间就不短了,而且还容易出现一些其他的情况,比如有个微服务突然出问题了,被熔断降级了,那么这一整个微服务都无法被访问,而且扩展性差,如果需要其他的功能,比如积分、短信通知,都不断的要去修改主代码去扩展,不符合开闭原则,如果说使用MQ将状态直接保留下来,那么其他的扩展业务只需要从MQ拿到状态信息之类的,就可以实现扩展,不需要去修改主代码业务

异步调用

异步调用使我们的业务无需等待即可结束,无需上下级传递消息,只需要在业务完成后将信息存储到MQ服务器即可,其他的业务就负责监听MQ,减少了耦合性,双方都不知道对方的存在

技术选型

市面上比较常见的异步调用技术RabbitMQ、RocketMQ、Kafka这三种,RabbitMQ算是比较常见的,一般来说中小型公司使用的都是RabbitMQ,这个是Rabbit公司所开源的与其他的大厂不同的是,这个公司基本上就是只开发这一个产品,所以维护升级的频率比较高,以及互联网中一些常见的问题解决方案都比较多,虽然吞吐量不如大厂,但是能够保证消息的可靠性和适应能力,对不同的语言技术都能够支持

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

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

相关文章

深入剖析MySQL数据库架构:核心组件、存储引擎与优化策略(四)

慢查询日志,顾名思义,就是查询慢的日志,是指mysql记录所有执行超过long_query_time(默认的时间10秒)参数设定的时间阈值的SQL语句的日志。该日志能为SQL语句的优化带来很好的帮助。默认情况下,慢查询日志是…

MySQL数据库笔记——版本号机制和CAS(Compare And Swap)

大家好,这里是Good Note,关注 公主号:Goodnote,本文详细介绍乐观锁的两种实现方式:版本号机制和CAS(Compare And Swap)。 文章目录 MySQL 内置的并发控制机制MVCC(多版本并发控制&am…

使用 commitlint 和 husky 检查提交描述是否符合规范要求

在上一小节中,我们了解了 Git hooks 的概念,那么接下来我们就使用 Git hooks 来去校验我们的提交信息。 要完成这么个目标,那么我们需要使用两个工具: 注意:npm 需要在 7.x 以上版本。 1. commitlint 用于检查提交信…

使用函数求e的近似值(PTA)C语言

自然常数e可以用级数11/1!1/2!⋯1/n!来近似计算。本题要求实现一个计算阶乘的简单函数,使得可以利用该函数,对给定的非负整数n,求该级数的前n1项和。 函数接口定义: double fact( int n ); 其中n是用户传入的参数,函…

使用Clion在ubuntu上进行交叉编译,并在Linux上远程编译五子棋

目录 1.工具以及概念介绍 (1)Clion软件简介 (2)交叉编译 (3)远程编译 2.操作原理 3.详细操作步骤 (1)配置Clion与虚拟机ubuntu的ssh连接 CLion远程开发Ubuntu,并显…

ubuntu如何禁用 Snap 更新

.禁用 Snap 更新(通过修改 snapd 配置) 打开并编辑 /etc/apt/apt.conf.d/50unattended-upgrades文件。 这个文件控制自动更新的行为。 sudo vim /etc/apt/apt.conf.d/50unattended-upgrades 里面有一行将里面的auto改为false即可禁用更新:…

SpringBoot - Spring Profiles 详解

文章目录 Pre官方文档Spring Profiles 详解1. 基本用法2. 激活 Profiles3. 添加 Active Profiles4. Profile Groups5. 在代码中设置 Profiles6. Profile 特定的配置文件 总结 Pre SpringBoot - Spring Boot 中的配置体系Profile全面解读 SpringBoot - spring.profiles.active…

MyBatis如何处理延迟加载?

大家好,我是锋哥。今天分享关于【MyBatis如何处理延迟加载?】面试题。希望对大家有帮助; MyBatis如何处理延迟加载? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 MyBatis 中,延迟加载(Laz…

ELK 使用教程采集系统日志 Elasticsearch、Logstash、Kibana

前言 你知道对于一个系统的上线考察,必备的几样东西是什么吗?其实这也是面试中考察求职者,是否真的做过系统开发和上线的必备问题。包括:服务治理(熔断/限流) (opens new window)、监控 (opens new window)和日志,如果…

重庆市大数据局:基于可信数据空间的公共数据流通利用

在2024年可信数据空间论坛上,重庆市大数据局相关领导发表了题为:基于可信数据空间的公共数据流通利用的演讲,系统介绍了重庆公共数据流通方面的实践经验和案例。 篇幅限制,部分内容如下:

Sublime Text4 4189 安装激活【 2025年1月3日 亲测可用】

-----------------测试时间2025年1月3日------------------- 下载地址 官方网址:https://www.sublimetext.com 更新日志:https://www.sublimetext.com/download V4189 64位:https://www.sublimetext.com/download_thanks?targetwin-x64 ....…

LabVIEW开发中常见硬件通讯接口快速识别

在 LabVIEW 开发中,与硬件进行通讯是实现数据采集与控制的重要环节。准确判断通讯接口类型和协议,可以提高开发效率,减少调试时间。本文结合 LabVIEW 的实际应用,详细介绍如何识别和判断常见硬件通讯接口的定义,并提供…

刷机TP TP-Link-WDR5660【持续更新】

上文中简单介绍了:路由器刷机TP-Link tp-link-WDR5660 路由器升级宽带速度-CSDN博客 步骤如下: 第一步:安装Linux系统 本文使用virtualBox 安装Ubuntu的debian系统,本文不在讲述章 请自行参考:Kali 安装之腾讯云经验…

Linux-Redis哨兵搭建

环境资源准备 主机名IP端口号角色vm1192.168.64.156379/26379mastervm2192.168.64.166379/26379slavevm3192.168.64.176379/26379slave 6379为redis服务暴露端口号、26379为sentinel暴露端口号。 安装Redis # 包文件下载 wget https://github.com/redis/redis/archive/7.2.2…

df.groupby()方法使用表达式分组

# 索引值是否为偶数,分成两组 df.groupby(lambda x:x%20).sum() df.groupby(df.index%20).sum() # 同上这两个写法看似相似,确实都基于索引值来进行分组,但在实现方式上有细微的区别: df.groupby(lambda x: x % 2 0) 这种方式通过…

Python 数据可视化的完整指南

目录 一、为什么选择 Python 进行数据可视化? 二、常用 Python 可视化库及其特点 三、常用图表类型及其代码示例 折线图:用于展示数据随时间或其他连续变量的变化趋势。 柱状图:用于比较不同类别的数据大小。 散点图:用于展示两个变量之间的关系,并发现数据中的模式…

国内Ubuntu环境Docker部署CosyVoice

国内Ubuntu环境Docker部署CosyVoice 本文旨在记录在 国内 CosyVoice项目在 Ubuntu 环境下如何使用 dockermin-conda进行一键部署。 源项目地址: https://github.com/FunAudioLLM/CosyVoice 如果想要使用 dockerpython 进行部署,可以参考我另一篇博客中的…

Git的使用流程(详细教程)

目录 01.Git是什么? 1.1 Git简介 1.2 SVN与Git的最主要的区别 1.3 GIt主要特点 02.Git是干什么的? 2.1.Git概念汇总 2.2 工作区/暂存区/仓库 2.3 Git使用流程 03.Git的安装配置 3.1 Git的配置文件 3.2 配置-初始化用户 3.3 Git可视化…

ImageNet 2.0?自动驾驶数据集迎来自动标注新时代

引言: 3DGS因其渲染速度快和高质量的新视角合成而备受关注。一些研究人员尝试将3DGS应用于驾驶场景的重建。然而,这些方法通常依赖于多种数据类型,如深度图、3D框和移动物体的轨迹。此外,合成图像缺乏标注也限制了其在下游任务中的…

npm install --global windows-build-tools --save 失败

注意以下点 为啥下载windows-build-tools,是因为node-sass4.14.1 一直下载不成功,提示python2 没有安装,最终要安装这个,但是安装这个又失败,主要有以下几个要注意的 1、node 版本 14.21.3 不能太高 2、管理员运行 …