MQ总结(面试怎么说)

为什么要使用MQ

消息队列(英语:Message queue)是一种进程间通信或同一进程的不同线程间的通信方式.
我们公司本身的业务体量很⼩,所以直接单机啥都能搞定了,但是后⾯业务体量不断扩⼤,采⽤微服务的设计思想,分布式的部署⽅式,所以拆分了很多的服务,随着体量的增加以及业务场景越来越复杂了,很多场景单机的技术栈和中间件以及不够⽤了,⽽且对系统的友好性也下降了,最后我们决定引⼊消息队列中间件。

都在什么场景⽤到了消息队列?

应用耦合、异步处理、流量削锋

应用耦合
以电商系统为例,订单系统可能会调用物流系统、支付系统还有库存系统,无论那个子系统出现故障,我们这个订单系统都无法完成。而且,我们每增加一个业务,还要增加接口,维护起来也比较麻烦。
如果我们引入消息队列,订单系统只需要把下单成功的消息告诉消息队列,其他子系统需要什么什么消息直接从队列中获取。
系统中的问题也会减少,假如此时物流系统出现故障,需要时间修复,在此期间,订单系统依然可以正常运行,用户感受不到物流系统的故障,提高系统的可用性。

MQ总结(面试怎么说)_第1张图片

流量削锋:
假设有一个秒杀,或者平时流量很低,突然出现大量流量,我们的服务器如果没有中间件,直接访问数据库,可能造成数据库连接异常,使得系统宕机。
如果引入消息队列,把请求放在队列里面,进行一个排队,虽然速度降下来,但是不至于宕机,每秒消费多少请求,就看自己服务器处理能力。
就是我们在双十一抢购的时候,流量很大,但是也不会挂掉。
MQ总结(面试怎么说)_第2张图片

异步处理
比如在下单系统中,本来付钱下单就好,但是实际场景下可能会增加别的业务,比如说优惠卷,积分以及短信之类的,业务越多,等待的时间越长,用户体验不是很好。
MQ总结(面试怎么说)_第3张图片
如果引入中间件,下单系统只需要监听其他业务是否完成,如果其他业务完成,会发送一个消息给MQ,MQ会将此消息转发给下单系统。
MQ总结(面试怎么说)_第4张图片

⽬前在市⾯上⽐较主流的消息队列中间件主要有,Kafka、ActiveMQ、RabbitMQ、RocketMQ 等这⼏种。

怎么做技术选型的

没学完,以后总结

你可能感兴趣的:(Java高级,java)