面试-消息队列

1.为什么要使用消息队列

优点:

1.解耦

解耦是指让生产者和消费者之间解耦。比如,用户下单后,订单系统需要通知库存系统,假如库存系统无法访问,则订单减库存将失败,从而导致订单操作失败。订单系统与库存系统耦合,这个时候如果使用消息队列,可以返回给用户成功,先把消息持久化,等库存系统恢复后,就可以正常消费减去库存了。

2.异步

将消息写入消息队列,非必要的业务逻辑以异步的方式运行,不影响主流程业务。

3.削峰

系统流量突然增大时,控制消息数量阈值,而消费端按正常状态处理消息,保证系统正常运行。比如秒杀活动,一般会因为流量过大,从而导致流量暴增,应用挂掉。这个时候加上消息队列,服务器接收到用户的请求后,首先写入消息队列,如果消息队列长度超过最大数量,则直接抛弃用户请求或跳转到错误页面。

缺点:

可用性降低:引入消息队列之后,如果消息队列挂了,可能会影响到业务系统的可用性。

系统复杂性增加:加入了消息队列,要多考虑很多方面的问题,比如:一致性问题、如何保证消息不被重复消费、如何保证消息可靠性传输等。

 具体参考:

https://blog.csdn.net/Trouvailless/article/details/126082156

保证消息的顺序执行:

https://blog.csdn.net/zengdongwen/article/details/100609348

 

posted @ 2022-09-04 10:27  foreast  阅读(19)  评论(0编辑  收藏  举报