1-为什么需要消息队列

为什么需要消息队列

异步处理:假设某个接口有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系统都无需修改代码。

数据分发

小结

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

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

增加了系统的复杂度;

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

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!