1-为什么需要消息队列

本文介绍了消息队列在系统中的关键作用,如异步处理、流量控制和服务解耦,同时分析了其引入的挑战,包括系统可用性降低、复杂度增加和一致性问题。通过案例展示了消息队列如何改善系统性能,但同时也提醒注意延迟、复杂性和数据一致性等潜在问题。
摘要由CSDN通过智能技术生成

为什么需要消息队列

异步处理:假设某个接口有ABC三个操作,A操作很快就能完成,但是BC操作比较耗时,此时就可以把BC两个操作放入到消息队列中,并直接返回,这样就能减少接口的等待时间。

流量控制:假设我们的数据库系统每秒只能处理 2k 个请求,系统正常情况下,每秒并发请求数量就 50 个。 系统高峰期时,每秒需要处理 5k 个请求,如果这 5k 个请求直接访问到数据库,那么数据库肯定是扛不住的。 如果使用 MQ,每秒 5k 个请求写入到 MQ,然后系统通过 MQ 慢慢拉取请求,每秒钟拉取 2k 个请求。 在高峰期时,会有大量的请求积压在了 MQ 中,但是高峰期过了之后,每秒就 50 个请求进入到 MQ,而系统每秒钟从 MQ 中拉取 2k 个请求,系统就能够快速的消费掉积压的消息。

服务解耦:以保险公司为例,A系统中的案件结案后:

  • B系统需要将案件的赔付信息上传到监管平台

  • C系统需要对这个案件进行风险分析,需要识别出这个案件是否骗保或者是需要追偿的案件

传统做法就是:A系统分别去调用B、C系统的接口,假设此时又有D、E、F系统也需要知道案件是否结案,那么A系统也要修改代码。
引入消息队列后,A系统的案件结案后直接往消息队列中发送一条结案消息,所有的下游系统只要订阅这个消息就可以了,无论是增加或者减少下游系统,A系统都无需修改代码。

数据分发:A系统的某条数据修改需要通知B、C、D、E、…多个系统,那么其它系统只需要监听MQ消息就可以了

优缺点

优点:解耦、削峰、数据分发

缺点包含以下几点:

  • 系统可用性降低

    系统引入的外部依赖越多,系统稳定性越差。一旦MQ宕机,就会对业务造成影响。

    如何保证MQ的高可用?

  • 系统复杂度提高

    MQ的加入大大增加了系统的复杂度,以前系统间是同步的远程调用,现在是通过MQ进行异步调用。

    如何保证消息没有被重复消费?怎么处理消息丢失情况?那么保证消息传递的顺序性?

  • 一致性问题

    A系统处理完业务,通过MQ给B、C、D三个系统发消息数据,如果B系统、C系统处理成功,D系统处理失败。

    如何保证消息数据处理的一致性?

小结

消息队列也有它自身的一些问题和局限性,包括:

引入消息队列带来的延迟问题;

增加了系统的复杂度;

可能产生数据不一致的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值