一线大厂面试真题--谈谈你对MQ的理解

本文介绍了消息中间件MQ的基本概念,包括生产者、消息服务端和消费者的作用,以及MQ在流量消峰、应用解耦和异步处理中的应用。同时讨论了如何根据业务需求选择主流的MQ产品如ActiveMQ、RabbitMQ、Kafka等。
摘要由CSDN通过智能技术生成

目录

概述

一、什么是MQ

生产者(Producer)

消息服务端

消费者(Consumer)

二、MQ的应用场景

流量消峰

应用解耦

异步处理

三、如何选择MQ


蜗牛学苑-重构IT职业教育新生态

概述

有位56年工作经验的面试被问到,什么是消息中间件。平时只关注使用,并没有去总结过,竟然被这个问题住了。

一、什么是MQ

MQ全称是Message Queue,直译过来叫做消息队列,主要是作为分布式应用之间实现异步通信的方式。

由三个部分组成 ,分别是生产者、消息服务端和消费者。

生产者(Producer)

是生产消息的一端,相当于消息的发起方,主要负责载业务信息的消息的创建。然后是消息务端(Server),是处理消息的单元,本质就是用来创建和保存消息队列,它主要负责消息的存储投递以及跟消息队列相关的附加功能。

消息服务端

是整个消息队列最核心的组成部分。

消费者(Consumer)

是消费消息的一端,主要是根据消息所承载的信息去处理各种业务逻辑。

二、MQ的应用场景

我们为什么要用MQ,它能解决什么问题呢?从以下三个方面来分析:

量消峰

主要是针对大流量入口过大,而业务需求又要短时间响应。但是服务器性能无法满足,导致大请求积压,从而使得客户端大量等待超时的场景。为了保证高可用,可以把大量的并行任务发送MQMQ请求分发给其他服务器,从而平稳地处理后续的业务。起到一个大流量缓冲的作用。个例子,假设订单系统最大QPS是1万,这个处理能力应付正常时段在1秒内就能返回结果。但是在高峰期,比如促销秒杀,如果QPS达到2万,订单系统就处理不过来了,只能在超过负载后不允许用户下单。如使用消息队列做缓冲,我们可以取消这个限制,把超出负载的订单分散成一段时间来处理,有些用户可能在下单十几秒后才能收到下单成功的操作,但是比不能下单的体验要好。

应用解

可以理解为,把一些相关的、但耦合度不高的系统关联起来,以电商应用为例,比如订单系统、库存系统、物流系统、支付系统有关联,但是有没有那么紧密。每个系统将一些约定好的消息发送到,另外的系统接去消费这些消息就可以了,它可以解决不同系统之间使用不同的框架或者不同编程语言的兼容性问题而提高整个系统的灵活性。

异步处

主要用于实时性要求不严格的场景,比如用户登录发送验证码,支付成功通知等等。服务提供方(生产)只需要将协商好的消息发送到消息队列,之后的处理就由消费者,也不需要等待消费者的返回结果。

三、如何选择MQ

目前,主流的消息中间件有ActiveMQ、RabbitMQ、Kafka、RocketMQPulsar。在技术选型的时候,以根据具体的业务需求更合适的中间件。

1、数据量大、吞吐量要求比较高的场景一般采用Kafka

2、对消息可靠性要求很高,甚至要求支持事务的场景,比如金融互联网,可以选择RocketMQ

3、对于中小型公司来说,可以选择RabbitMQ,它利用erlang语言本身的并发优势,性能好在微秒级

4、Pulsar两年开始流行起来了,它是下一代云原生分布式消息流平台,可以集消息、存储、轻量化函数计算为一体。

5、至于ActiveMQ目前的一些新项目很少有人用了。

蜗牛学苑-重构IT职业教育新生态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值