面试精讲:为什么使用消息队列

其实就是问你消息队列都有哪些使用场景,然后你项目里具体是什么场景

MQ应用场景

1. 异步

用户调用一个接口的时候,可能该接口调用了别的方法。例如:用户注册的时候,后台可能需要调用:查询数据库,插入数据库,发送邮件,积分增加等...但是用户可能并不需要后台将所有的任务执行完毕,那么此时加入mq队列,用户就能很快得到注册成功的响应而去做一些别的事情。mq的机制又能保证最终的一致性,所以使用起来很安全很稳定。

2. 解耦

系统A要发送一个消息到多个系统,如果此时每增加一个系统,系统A都需要通过修改源码来增加接口,此时耦合非常高,但是如果中间使用消息队列的话,系统只需要发送一次到消息队列,别的系统就能复用该信息,当增加或删除系统调用接口的时候,不需要额外的更新代码。

3. 流量消峰

何为消峰,就是当系统压力过大的时候,让系统压力减小。假如数据库的读写每秒3000,在高峰期,系统的访问达到了每秒10000。此时由于加入了消息队列,所以不会出现激增的访问导致系统奔溃。(注意,消峰并不会让用户的等待时间减少,所以一般会跟异步搭配来使用)

MQ的缺点

1. 降低可用性

如果mq挂掉了,那么系统之间的通信就中断了,导致整个系统全部挂掉

2. 一致性问题

A系统处理完了发送到消息队列后直接返回成功了,用户以为你这个请求就成功了;但是问题是,其他系统消费该消息后,如果当中有一个系统出现了问题,导致数据丢失。最后就会发生数据不一致等问题。

项目中应用场景

订单系统,每次下一个新的订单时,就会发送一条消息到MQ中,后台有一个库存系统负责获取消息然后更新库存。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值