(十二)笔记MQ学习之优劣介绍

news2024/11/18 18:44:47

((十二)笔记MQ学习之优劣介绍

    • 一、MQ的优势
      • 1.应用解耦
      • 2.异步提速
      • 3.削峰填谷
  • 二、MQ的劣势
      • 1.系统可用性降低
      • 2.系统复杂度提高
      • 3.一致性问题
  • 三、MQ的使用条件
  • 四、常见的MQ产品

一、MQ的优势

1.应用解耦

使用MQ使得应用解耦,提升容错性和可维护性,如下图,当用户下单时,如果其它几个系统出现异常,则直接导致订单失败,如果加入MQ订单系统只需把数据放入MQ中,后续其它系统直接从MQ中取就可以,即使后续系统报错,也和订单系统无关。
在这里插入图片描述

2.异步提速

提升用户体验和系统吞吐量。使用MQ后,用户则只关心订单系统的处理所需的时间。
在这里插入图片描述

3.削峰填谷

当我们短时间内有大量请求时,使用MQ可提高性能,假如每秒5000个请求进入MQ,那么我们的A系统则可以有条不紊的处理数据。如1000…2000…
在这里插入图片描述
使用了MQ之后,限制消费的速度为1000,这样依赖高峰期产生的数据必会被积压在MQ中高峰就被‘削掉’了,但因为消息积压,在高峰期过后的一段时间内,消费消息的速度还是会维持在1000,直到消费完积压的消息,这就叫做“填谷”。
在这里插入图片描述

二、MQ的劣势

1.系统可用性降低

系统引入的外部依赖越多,系统稳定性越差。一旦MQ宕机,就会对业务造成影响。

2.系统复杂度提高

MQ的加入大大增加了系统的复杂度,以前系统间是同步的远程调用,现在是通过MQ异步调用,可能会出现消息被重复消费,消息丢失,消息的顺序错乱等。

3.一致性问题

假设我们有四个系统,A系统处理完业务,通过MQ给B、C、D三个系统发消息,如果B、C处理成功,D处理失败,则无法保证消息处理的一致性。

三、MQ的使用条件

1.生产者不需要从消费者处获得反馈,引入消息队列之前的直接调用,其接口的返回值应该为空,这才可以让明明下层的动作还没有做,上层却当成动作做完了继续往后走,即所谓异步。
2.容许短暂的不一致性。
3.确实是用了MQ有效果,即解耦、提速、削峰这些方面的收益,超过加入MQ,管理MQ的这些成本。

四、常见的MQ产品

目前业界有很多MQ产品,而这些消息队列产品各有侧重,在实际选择是需结合自身需求,综合考虑
在这里插入图片描述

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

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

相关文章

[附源码]Python计算机毕业设计Django勤工助学管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Linux之基于Centos系统安装Redis、MySQL、Nginx

一. Redis的安装 1. 准备 (1). 宿主机:centos 8.0 (2). Redis源码:【压缩包: redis-5.0.0.tar.gz】 需要自行编译。 (PS:这个压缩包可以直接Centos系统中在线下载 或者去Redis官网先下载,然后copy到Centos系统中) …

Java入门教程(4)——JDK环境变量的配置

1 1.path是一个常见的环境变量,它告诉系统除了在当前目录下寻找此程序外,还可以到path指定的目录下寻找。 2.JAVA_HOME (1) 为以后其他软件寻找JDK做准备 classpath不需配置 3.JDK1.5以上版本,JRE会自动搜索当前路径下的类文件及相关jar…

在浏览器中输入url回车后发生了什么

1.dns进行解析:将url地址(www.bilibili.com)解析成ip地址(110.43.34.184),ip地址就是想要访问的服务器的地址 dns就是数据库,这个数据库中记录着url地址和ip地址的对应关系 2.正式发送数据之前…

react 初体验

react笔记 创建一个项目 npm install -g create-react-app // 全局安装脚手架 create-react-app react-01 // 新建一个项目 npm start快捷定义组件 安装组件后,快捷命令 rcc :类式组件 rfc:函数式组件 axios开启代理 在package.json中新…

为什么我推荐你一定要学Python?

很多初学者都听说python很火,可是为啥要学Python,下面谈谈我的感悟 python语言是我目前为止用的最爽的语言,因为它真的很优美.虽然c,c,java也非常的强大和伟大,但是每一种语言伟大的背后都是有一定的时代背景。 说起Python这门编…

VINS学习02——VINS系列代码所有依赖库安装(保姆级)

0.简介 在学习视觉SLAM过程中,先后用了VINS_mono,VINS_Fusion,Omni_swarm,因为是第一次做视觉相关定位,所以大部分库都是第一次装,中间还从虚拟机换到双系统,意识到记录的重要行性,所以在此记录安装相关依赖库的教程。…

python 练习题

for 循环 和 while 循环 判断101-200之间有多少个素数,并输出所有素数。 (什么是素数(质数): 除了1和它本身,不能被其他的数整除) 方法1: count 0 # 设定素数的初始个数为0 for num in range…

MySql使用MyCat分库分表(四)分片规则

视频学习地址:17-尚硅谷-垂直分库_哔哩哔哩_bilibili 笔记参考地址:MySQL 分库分表 | xustudyxus Blog (frxcat.fun) 分片规则 范围分片 介绍 根据指定的字段及其配置的范围与数据节点的对应情况, 来决定该数据属于哪一个分片。 配置 …

Angular 应用开发里使用 ForRoot 解决 Lazy Loaded Module 里单例行为丢失的问题

笔者在 Angular 实际项目开发中曾经遇到这样一个需求: 我们想创建一个共享模块,它将包含一个配置来设置布尔值(作为标志)以启用或禁用其他模块的某些功能。 其他模块可以在 Angular 应用程序的引导期间加载,也可以是延…

JVM基本常识

目录 内存区域划分 类加载 何时触发类加载? 双亲委派模型 GC GC回收那部分内存? 怎么回收? 怎么找垃圾(判定某个对象是否是垃圾) 具体怎么回收? 我的GitHub:Powerveil GitHub 我的Gitee:Powercs12…

痞子衡嵌入式:浅析IAR下调试信息输出机制之半主机(Semihosting)

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是IAR下调试信息输出机制之半主机(Semihosting)。 在嵌入式世界里,输出打印信息是一种非常常用的辅助调试手段,借助打印信息,我们可以比较容易地定位和…

由浅到深-模拟实现list

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正。 目录 一 、见见…

Acrel-2000Z电力监控系统在某数据中心的应用-Susie 周

1、概述 随着网络和信息技术的快速发展,人们对“大数据”业务需求不断增长,为了满足日益增长的应用需求,数据的建设规模也在向超大型、园区级数据方向发展。通信、金融、商业等行业,面对未来数据业务的爆发式增长需求&#xff0c…

Go cobra 库学习

cobra既是一个用于创建强大现代CLI应用程序的库,也是一个生成应用程序和命令文件的程序。cobra被用在很多go语言的项目中,比如 Kubernetes、Docker、Istio、ETCD、Hugo、Github CLI等等 其实简单的来说,cobra就是一个自定义命令工具&#xff…

从IPC到分布式软总线的随笔

在Linux 系统中, 客观来说,缺乏相对开发者比较友好的进程间通信框架。谈到Linux上进程间通信,一般都会想起管道(匿名、有名)、信号/信号灯、共享内存、消息队列和socket。这些都是偏低层的技术,有没有方便开…

HummerRisk 入门3:开发手册

本文是 HummerRisk 的开发手册,介绍项目的结构及如何配置 HummerRisk 的开发环境和开发中的注意事项,快速参与到 HummerRisk 项目的开发中来。 一、项目结构 二、配置开发环境 1、环境准备 后端 HummerRisk 后端使用了 Java 语言的 Spring Boot 框架…

从今天起真正释放创造力 | Werner Vogels 在 re:Invent 2022带来多项开发者福音

对于开发者而言,成就感来自于每一次敲下代码后可实现的创造力,而不是把时间和精力消耗在写千篇一律又无法复用的“胶水”代码,或是在越来越复杂的软件栈面前,疲惫地写业务流程并尽量减少 Bug。 更加不堪的是,有时仅仅…

软件测试工程师涨薪攻略!3年如何达到30K!

1.软件测试如何实现涨薪 首先涨薪并不是从8000涨到9000这种涨薪,而是从8000涨到15K加到25K的涨薪。基本上三年之内就可以实现。 如果我们只是普通的有应届毕业生或者是普通本科那我们就只能从小公司开始慢慢往上走。 有些同学想去做测试,是希望能够日…

[附源码]计算机毕业设计基于springboot架构的博客平台设计

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…