为什么要使用消息队列?

主要围绕3个功能:解耦、异步、削峰填谷

1.解耦:在复杂的业务环境下,不同模块与服务之间会有复杂高耦合的业务依赖,当某一项服务模块程序得到更改时候,会影响到其他业务模块(即如果直接使用函数调用或API调用会造成模块之间的耦合,当其中一个模块改变时需要同时修改调用方与被调用方的代码),项目不易于维护,有消息队列作为中间件,发送模块直接将消息发送至队列而无需知道接收方是谁,而接收方也可直接从队列中拉取数据进行处理,实现独立的消费消息从而实现解耦。

2.异步:以发送邮件为例,在未使用消息队列时,发送流程为:创建邮件模版,再由底层dao层拉取邮件内容,调用三方SDK发送邮件,整个过程的耗时是比较长的,就算是多线程下,也无法实现高性能,因为会长时间占用线程会造成线程阻塞,在消息队列的管理下,邮件可以直接发送到消息队列,之后直接返回“消息成功下发的结果”,后续发送业务模块实现异步的处理,不影响整个系统流程的执行,从而提高了系统的性能和响应速度。

3.削峰填谷:削弱高消息并发量带来的冲击,并以平稳高效的方式处理数据。消息队列作为不同服务模块的中间件,也是作为一个缓冲区,以发送邮件为例,当某一时刻出现大量邮件发送,线程数量无法满足处理数据的性能,邮件消息会存储在消息队列中,这个时候,线程依旧正常保持处理数据的能力,也不会出现线程积压,导致大面积的出现消息发送失败,服务宕机。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值