面试官问:为何大家项目要用消息队列?

2022年05月15日 阅读数:5
这篇文章主要向大家介绍面试官问:为何大家项目要用消息队列?,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

同窗们应该都会被问到过这个问题:你的系统为何要用消息队列?
你们广泛回答:我入职前,系统里面就已经用了消息队列啊,而后就用了。
其实面试官就是想看看你有没有深刻了解过消息队列,有没有认真思考过消息队列解决了哪些问题?
web

这篇文章主要带你们解决如下几个问题:
面试

1、为何要用消息队列

场景1.

假设如今有A,B 两个系统,都须要推送数据到C系统,广泛作法是C提供给一个接口,给A,B调用;
若是这时又上来了一个系统D,也须要A,B将数据推送给它,因而A,B又得调用D提供的接口,这样不太利于后期扩展。
数据库

场景2.

假设有一个商城系统,有一天作了一个促销活动,致使当天流量暴增,可是经过监控发现,用户进入首页,调用首页接口耗时很是长,致使有不少用户进入首页后,很长一段时都是空白页,最后发现是因为用户在调用首页接口后,后台须要更新用户的日活信息,直接操做了数据库,当时因为用户量又多,才致使耗时进一步变长,后面临时采用线程异步更新用户日活信息到数据库。微信

其实上面两个场景均可以用消息队列的基本特性去解决:
并发

  • 异步处理
  • 应用解耦

因此为何要用消息队列,咱们就很清楚了,使用消息队列能让咱们系统更加稳定,更加容易扩展,而不是为了用而用,而不考虑使用消息队列可以给我带来什么好处,只是盲目的去使用。异步

2、个人项目适合使用哪一种消息队列

上面说了为何使用消息队列,接下来在分享下几种主流的消息中间件分别适合在什么场景(项目)下去使用:svg

RabbitMQ

rabbitmq是erlang语言开发的,由于erlang自己就具有高并发的优点,因此性能很是好;可是不利于二次开发;社区活跃度很是高,通常开发过程当中遇到的问题都能在社区找到答案。
若是公司的数据量不是特别大或者小公司优先选择rabbitmq
微服务

Kafka

kafka天生就是为了日志而生的,因为其顺序读写磁盘,因此其吞吐量极高。
kafka通常能够结合elk 去使用;通常不建议小公司使用,须要部署太多节点了,大公司请随意。高并发

RocketMq

rocketmq 主要为金融和电商行业而生,rocketmq融入了kafka的一些设计思想;
因为它扛过了屡次双11,因此它的稳定性和高可用性是毋庸置疑的;
并且rocketmq中加入了延时队列,很适用于订单超时未支付自动取消的功能需求。性能

3、使用消息队列会带来什么问题

咱们在上面说了项目中引入消息队列带来的好处,可是一样也会给咱们的项目带来一些不可避免的问题:

  • 系统可用性下降
  • 系统复杂性提升
  • 数据一致性问题

福利大放送

关注微信公众号“AI码师”,领取2021面试资料和最新全套微服务教程
在这里插入图片描述