MQ-小试牛刀

news2025/6/25 22:33:05

MQ

MQ解决了什么问题?

  1. 异步处理

  2. 解耦合

  3. 削峰填谷

  4. 大规模数据处理

解耦

A系统发送数据到BCD三个系统,通过接口调用发送。如果 E 系统也要这个数据呢?那如果C系统现在不需要了呢?A系统负责人几乎崩溃…

A系统跟其它各种乱七八糟的系统严重耦合,A系统产生一条比较关键的数据,很多系统都需要A系统将这个数据发送过来。

如果使用MQ,A系统产生一条数据,发送到MQ里面去,哪个系统需要数据自己去MQ里面消费。如果新系统需要数据,直接从MQ里消费即可;如果某个系统不需要这条数据了,就取消对MQ消息的消费即可。

这样下来,A系统压根儿不需要去考虑要给谁发送数据,不需要维护这个代码,也不需要考虑人家是否调用成功、失败超时等情况。就是一个系统或者一个模块,调用了多个系统或者模块,互相之间的调用很复杂,维护起来很麻烦。但是其实这个调用是不需要直接同步调用接口的,如果用MQ给它异步化解耦。

异步

A系统接收一个请求,需要在自己本地写库,还需要在BCD三个系统写库,自己本地写库要 3ms,BCD三个系统分别写库要300ms、450ms、200ms。最终请求总延时是3 + 300 +450 + 200 = 953ms,接近1s,用户感觉搞个什么东西,慢死了慢死了。

用户通过浏览器发起请求。如果使用MQ,那么 A 系统连续发送 3 条消息到MQ队列中,假如耗时5ms,A系统从接受一个请求到返回响应给用户,总时长是3 + 5 = 8ms。

削峰

减少高峰时期对服务器压力。

MQ的缺点

  • 系统可用性降低:系统引入的外部依赖越多,越容易挂掉。万一 MQ 挂了,MQ 一挂,整套系统崩溃,你不就完了?

  • 系统复杂度提高: 硬生生加个 MQ 进来,你怎么保证消息没有重复消费?怎么处理消息丢失的情况?怎么保证消息传递的顺序性?问题一大堆。

  • 一致性问题: A 系统处理完了直接返回成功了,人都以为你这个请求就成功了;但是问题是,要是BCD 三个系统那里,BD 两个系统写库成功了,结果 C 系统写库失败了,咋整?你这数据就不一致了。

如何保证幂等性

  1. 消息的唯一标识
  2. 数据库插入数据时,设置主键,避免重复插入
  3. 事务机制

如何保证消息的可靠性

  1. 消息的确认机制
  2. 消息的持久化
  3. 重试机制
  4. 容错设计

请添加图片描述

MQ消息堆积怎么处理

  1. 增加消费者。
  2. 批处理
  3. 分析堆积原因,优化消费代码。

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

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

相关文章

三个角度分解永磁同步电机发电工况

永磁同步电机的工作根据电压电流的方向可以分为四种状态: 其中电动工况容易理解,逆变器将母线的直流电转化为交流电,驱动三相逆变电桥的占空比越大输出交流电压越高,电机转速越高。 但是发电工况则没那么容易理解,即…

Macos必备ps 磨皮滤镜插件

想要快速提升人像修图效果,让皮肤看起来更加光滑细腻吗?那么你可以尝试使用ps磨皮滤镜插件。这些插件能够让你在短时间内快速有效地进行人像处理,无论是对于专业的设计师还是初学者来说都是非常实用的工具。 接下来,让我为你介绍…

Go语言入门心法(二): 结构体

一: Go语言中结构体认知 package mainimport "fmt"/*go语言中的结构体认知升维:*/ func main() {println(go语言中的结构体与c语言中的结构体类似;go语言中的结构体相当于java|python中类功能相当)type Book struct {title string // 标题author string // 作者…

在九天服务器平台上使用自己上传的数据集文件

1.进入到“数据管理”中,点击“新建数据” 2. 创建实例,进入到Jupyter页面 刚才上传的文件在data文件夹中 3. 将data文件夹中上传的数据集放到其他目录,比如这里我就放到了~/目录下 # 要把当前文件夹下的指定文件复制到目的路径的命令&…

Stm32_标准库_10_TIM_显示时间日期

利用TIM计数耗费1s,启动中断,秒表加一 时间显示代码: #include "stm32f10x.h" // Device header #include "Delay.h" #include "OLED.h"uint16_t num 0; TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; NVIC_I…

超美!ChatGPT DALL-E 3已可用,另外GPT-4可上传图片进行问答

今天,在ChatGPT里使用DALL-E 3的功能终于上线了。以下是截图: 在GPT-4下加了一个菜单入口,名为 DALL-E 3,这也意味着ChatGPT免费账户暂时不能使用这个功能。 我们体验一下这个功能。 技术交流 建了技术交流群!想要进…

STM32--WDG看门狗

文章目录 WDG简介IWDGIWDG的超时计算WWDGWWDG超时和窗口值设定独立看门狗工程WWDG工程 WDG简介 WDG看门狗(Watchdog Timer)是一种常见的硬件设备,在STM32F10系列中,有两种看门狗,分别是独立看门狗和窗口看门狗&#x…

Django 静态自定义化配置

STATIC # APP本地静态资源目录(就APP对应的) STATIC_URL "/static/"# 远程静态文件URL(少用) REMOTE_STATIC_URL# 外部引用静态文件目录(外层的) STATICFILES_DIRS [os.path.join(BASE_DIR, &…

Ubuntu系统下安装rpm安装包的方法

前言 Ubuntu的软件包格式为deb 而RPM格式的包归属于红帽子Red Hat 在这直接使用命令是安装不了的 需要通过一个桥梁进行转换 方法 将其rpm的格式包转换为deb的格式包 具体转换通过alien进行转换 这个安装包默认是没有安装的 sudo apt-get install alien 之后通过这个命令将…

相交链表Java

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 nu11。 以下有两种解决方法: 一种是用Map,利用其key值唯一的方法去判断(也可以使用set,set在add时,已存在的元素会返回false,不存在的返回…

元宇宙虚拟展厅:沉浸式体验、个性化互动、全新展示

近年来,大多数企业开始注重线上虚拟展厅的搭建,元宇宙虚拟展厅也为众多企业创造了更多有趣的体验,为商企带来了全新的宣传方式。相对于传统展厅而言,元宇宙虚拟展厅在场景真是复刻的基础上,做到了超越真实。 传统展厅的…

关于网络协议的若干问题(三)

1、当发送的报文出问题的时候,会发送一个 ICMP 的差错报文来报告错误,但是如果 ICMP 的差错报文也出问题了呢? 答:不会导致产生 ICMP 差错报文的有: ICMP 差错报文(ICMP 查询报文可能会产生 ICMP 差错报文…

核心期刊发布通知:养育三孩家庭作者免收版面费!(附免收期刊盘点)

免收版面费通知 近日,中文核心期刊《财会通讯》在其官方微信平台发布通知《关于对养育三孩家庭的作者免收版面费的通知》。 图源:《财会通讯》官方微信平台 通知称:为落实党的二十大报告中关于“优化人口发展战略,建立生育支持…

如何在STM32中实现TCP通信?

如何在STM32中实现TCP通信? TCP通信在计算机网络中扮演着重要角色,实现它需要兼顾硬件和软件因素。 硬件层面,某些STM32处理器内置了Ethernet MAC,这有利于简化网络通信的部署。若处理器缺乏内置MAC,需外接以太网控制…

22字符串-简单反转

目录 BM(Boyer-Moore) 坏字符 好后缀 什么情况用哪个规则? LeetCode之路——151. 反转字符串中的单词 分析: 字符串匹配中除了简单的BF(Brute Force)、RK(Rabin-Karp)算法,还有…

物业巡检系统能做什么?物业服务如何提升管理效率?

随着科技的快速发展,物业管理行业也在寻求着更加高效、智能化的解决方案,以应对日益复杂的设备和环境巡检上的需求。目前传统的纸质巡检方式已经无法满足现代物业管理的要求,“的修”工单管理系统应运而生,它通过数字化、智能化的…

软件成果鉴定测试应该怎么做?对软件产品起到什么作用?

软件成果鉴定测试是指对一个软件产品进行全面、系统的测试,以评估其是否符合预期的要求、是否满足特定的标准和规范。该测试旨在发现和解决软件产品中的缺陷和问题,确保其质量和可靠性。 一、软件成果鉴定测试包括以下内容   1、需求分析:…

ctfshow-ssti

web361 名字就是考点,所以注入点就是name 先测试一下存不存在ssti漏洞 利用os模块,脚本 查看一下子类的集合 ?name{{.__class__.__base__.__subclasses__()}} 看看有没有os模块,查找os 利用这个类,用脚本跑他的位置 import …

【USRP】NI PCIe-8371

什么是 NI PCIe-8371 PXI远程控制设备。 x4 Gen1 PCI Express主机,832 MB/s,铜缆MXI-Express设备,用于PXI远程控制—PCIe‑8371是一款MXI‑Express远程控制器,用于控制通过有线PCI连接到计算机PCI Express插槽的设备或系统。 当…

oracle手工创建数据库?稳健一文

一、描述 新加了一块盘做手工创建数据库的数据文件目录 oradata; 这台服务器上本来就有一个单机asm数据库,我内存不够先关闭了 二、手工创建oracle数据库 1、设置ORACLE_SID [oracleoomcserver ~]$ cp .bash_profile .bash_profile_omccdb [oracleoomc…