面试官:MQ的好处到底有哪些?

这篇具有很好参考价值的文章主要介绍了面试官:MQ的好处到底有哪些?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

💗推荐阅读文章💗

  • 🌸JavaSE系列🌸👉1️⃣《JavaSE系列教程》
  • 🌺MySQL系列🌺👉2️⃣《MySQL系列教程》
  • 🍀JavaWeb系列🍀👉3️⃣《JavaWeb系列教程》
  • 🌻SSM框架系列🌻👉4️⃣《SSM框架系列教程》

🎉本博客知识点收录于🎉👉🚀《RabbitMQ系列教程》🚀—>✈️《RabbitMQ系列教程-第一章-消息中间件简介》✈️

一、消息中间件简介

1.1 概述

MQ全称为Message Queue,消息队列是消息在传递过程中的容器,消息队列常用于分布式系统之间的通信

消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题实现高性能,高可用,可伸缩和最终一致性架构;使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ以下介绍消息队列在实际应用中常用的使用场景:异步处理,应用解耦,流量削锋和消息通讯四个场景

1.2 消息中间件的好处

在项目中,可将一些无需即时返回且耗时的操作提取出来,进行异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高系统吞吐量

1.2.1 应用解耦

在我们的应用中,下订单同时需要调用库存系统、支付系统等业务;

面试官:MQ的好处到底有哪些?

随着业务升级,需要更改业务需求,在下订单的同时需要对接积分系统进行加积分操作,因此结果变为如下:

面试官:MQ的好处到底有哪些?

从上图的演变我们可以知道,随着业务的不断升级,业务的不多增加,我们可能需要频繁的修改订单系统的代码,现在我们的订单系统严重和其他系统耦合在一起了,可维护差;不仅如此,当订单系统调用库存系统时,如果库存系统不能够及时响应,那么必定会造成订单系统的延迟,或者库存系统出现错误,那么也很有可能导致订单系统出现故障,系统的容错性非常低

为了解决上述问题,我们引入了消息中间件(MQ):

面试官:MQ的好处到底有哪些?

当订单系统需要对接其他系统时,只需要发消息给MQ,由MQ来通知其他系统进行业务操作,订单系统只与MQ进行对接,从而解决我们上面的几个问题;

  • 1、业务耦合

  • 2、系统延迟

  • 3、容错性低

1.2.2 异步处理

在我们没有引入MQ之前的老系统中,调用订单系统,等待订单系统处理完业务逻辑之后响应客户端大概需要时间:200ms+200ms+200ms=600ms

面试官:MQ的好处到底有哪些?

引入了MQ队列之后只需要5ms!

面试官:MQ的好处到底有哪些?

这里说明一点:我们之前讲MQ概述时已经讲过,MQ适用于一些无需即时返回且耗时的操作,假设在上述架构中,订单系统需要库存系统返回某值后才能进行下一步操作则不适用于MQ;

1.2.3 流量削峰

流量削峰指的是在应用服务器面对大流量访问时,MQ可以帮助我们进行流量的限流操作,削弱流量,保证服务器的正常运行;

假设现在某电商网站搞促销活动,导致流量迅速激增,已经远远超过应用服务器的压力承受范围,此时如果不进行流量(QPS)的控制,那么应用服务器很有可能会出现故障:

面试官:MQ的好处到底有哪些?

为了防止过度的流量同时进入我们的应用服务器,导致应用服务器最终宕机,我们可以进行限流手段,即每秒从MQ中拉取1000个请求进行处理:

面试官:MQ的好处到底有哪些?

由于高并发的访问,消息会被挤压在MQ中,在高峰期过后,仍有一段时间内消息消费的速度维护在1000/s,直到积压的消息全部被消费完毕;

1.3 消息中间件带来的问题

1.3.1 消息一致性

面试官:MQ的好处到底有哪些?

如上图,如果订单系统给其他系统发送完毕消息后,某个系统处理失败,该如何保证数据的一致性?

1.3.2 消息重复消费(消息幂等性)

当我们一个接口多次消费一个消息时,我们需要保证这个操作无论被操作多少次其结果是一样的,这个时候我们就需要保证接口的幂等性;

幂等:一个操作任意执行多次与执行一次的结果是相同的

面试官:MQ的好处到底有哪些?

在上述系统中,如果执行库存系统出现问题,那么订单系统会重发消息,但是支付和积分系统是没有任何问题的,但由于消息的重发,导致支付和积分系统再次消费一次消息;

1.3.3 成本问题

  • 系统可用性降低

系统引入的外部依赖越多,系统稳定性越差。一旦 MQ 宕机,就会对业务造成影响。如何保证MQ的高可用?

  • 系统复杂度提高

MQ 的加入大大增加了系统的复杂度,以前系统间是同步的远程调用,现在是通过 MQ 进行异步调用。需要保证MQ带来的一系列问题

1.3 常见MQ性能对比

RabbitMQ ActiveMQ RocketMQ Kafka
公司/社区 Rabbit Apache 阿里 Apache
开发语言 Erlang Java Java Scala&Java
协议支持 AMQP,XMPP,SMTP,STOMP OpenWire,STOMP,REST,XMPP,AMQP 自定义 自定义协议,社区封装了http协议支持
客户端支持语言 官方支持Erlang,Java,Ruby等,社区产出多种API,几乎支持所有语言 Java,C,C++,Python,PHP,Perl,.net等 Java,C++(不成熟) 官方支持Java,社区产出多种API,如PHP,Python等
单机吞吐量 万级(其次) 万级(最差) 十万级(最好) 十万级(次之)
消息延迟 微秒级 毫秒级 毫秒级 毫秒以内
功能特性 并发能力强,性能极其好,延时低,社区活跃,管理界面丰富 老牌产品,成熟度高,文档较多 MQ功能比较完备,扩展性佳 只支持主要的MQ功能,毕竟是为大数据领域准备的。

1.4 AMQP和JMS

  • AMQP:即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,进程间传递异步消息网络协议。为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端中间件不同产品的限制,不同的开发语言等条件的限制。Erlang中的实现有RabbitMQ等。

  • JMS:JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数消息中间件提供商都对JMS提供支持。

AMQP是基于消息传输的一个应用层协议,JMS准确的来说是Java操作MQ的一套API,类似于JDBC,第三方厂商(MySQL厂商、MQ厂商)进行功能的实现,Java则使用JMS对厂商进行规范;文章来源地址https://www.toymoban.com/news/detail-412118.html

到了这里,关于面试官:MQ的好处到底有哪些?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 看板是什么?使用看板进行任务管理有哪些好处?

    看板是一个易于使用的工具,用于可视化和管理工作流程。 它的特点是有一列代表工作流程的各个阶段。看板卡被用来跟踪各个任务和活动在各个阶段的进展情况。 看板的两种主要类型是实体看板和数字看板。实体看板最适合办公室内、同地办公的团队。数字看板更适合远

    2024年02月09日
    浏览(42)
  • 速盾:cdn高防御服务器租用有哪些好处

    随着互联网的发展,网络安全问题日益突出。攻击者利用各种手段不断对网站进行攻击,给网站的安全运行带来威胁。为了保障网站的正常运行和数据的安全,越来越多的网站开始租用CDN高防御服务器。那么,租用CDN高防御服务器有哪些好处呢? 首先,CDN高防御服务器可以有

    2024年04月11日
    浏览(57)
  • VR全景对普通人的生活有哪些好处?

    许多普通人对VR全景还全然没有概念,这是因为VR全景虽然一直在快速发展,但目前为止也不过几年而已,但这发展的几年同样为我们普通人的生活带来了切实的改变和便利。VR全景技术为人们带来了沉浸感和真实感的体验,让我们感受到迥异于传统方式的新鲜感和刺激感,无

    2024年02月03日
    浏览(58)
  • TikTok电商加快闭环,独享IP为运营带来哪些好处?

    近日有消息称TikTok电商在加快闭环,以后商家可能无法继续在TikTok上为其他电商平台或独立站引流了。如今“TikTok Shop Shopping Center”平台正在构建,将各种购物渠道整合为一体,这可能是一种趋势,意味着TikTok逐渐从社交应用转型为商业平台。 TikTok作为一种当前非常受欢迎的

    2024年01月17日
    浏览(57)
  • 企业有VR全景拍摄的需求吗?能带来哪些好处?

    在传统图文和平面视频逐渐疲软的当下,企业商家如何做才能让远在千里之外的客户更深入、更直接的详细了解企业品牌和实力呢?千篇一律的纸质材料已经过时了,即使制作的再精美,大家也会审美疲劳;但是你让客户远隔千里,就能720°环游企业,这个效果就足以吸引很

    2024年02月13日
    浏览(46)
  • 阿里云轻量应用服务器怎么样?有哪些好处?

    阿里云轻量应用服务器有哪些优势?轻量服务器具有价格优惠、使用门槛低快速上手、灵活变配、可视化运维等优势 ,阿里云百科aliyunbaike.com整理轻量应用服务器详细优势: 1、价格优惠 阿里云轻量应用服务器性价比高,价格优惠,2核2G3M配置61元一年、2核4G4M带宽165元一年,

    2024年02月21日
    浏览(51)
  • 云端服务器在当下能带来哪些好处?详评移动云云主机

    随着数字化进程的推进,企业对算力的使用需求与日俱增。有限的算力规模、高昂的搭建及运维成本让传统的物理服务器难以适应信息化时代企业大量的数据处理需求。而云主机以其弹性扩容、便捷运维等特点,让企业能以更低的成本、更便捷的方式在云上获取算力,因此近

    2024年02月20日
    浏览(55)
  • http代理和ip代理的区别,代理IP带来了哪些好处?

    随着互联网的快速发展,代理IP和HTTP代理已成为网络爬虫、网络营销、数据抓取等领域中不可或缺的一部分。但是,很多人在使用代理IP和HTTP代理时并不清楚两者的区别,以及代理IP所带来的好处。本文将详细介绍这两者之间的差异,以及代理IP的优势。 一、HTTP代理和代理

    2024年02月06日
    浏览(43)
  • C++代码性能优化的好处与缺点?有哪些编译器优化选项?

    性能优化是C++编程中的一个重要方面,它可以带来许多好处,但也有一些潜在的缺点。 以下是C++代码性能优化的一些优缺点: 优点: 提高执行速度 : 优化后的代码可以更快地执行,这对于需要处理大量数据或需要快速响应的应用程序尤其重要。 减少资源消耗 : 优化可以减少

    2024年03月27日
    浏览(55)
  • VR智慧课堂 | 临床兽医学VR实验教学有哪些好处?

    随着科技的不断发展,虚拟现实(VR)技术已经逐渐渗透到各个领域,为人们带来了前所未有的体验。在动物医学实验教学中,VR技术的应用也日益受到关注。本文将探讨临床兽医学VR实验教学的好处。 首先,VR技术能够提高动物医学实验的安全性。在传统的动物实验中,学生和

    2024年02月11日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包