消息队列的应用场景

本文介绍了消息队列在系统架构中的重要作用,包括异步调用以提高性能,系统解耦以减少依赖,削峰填谷以应对流量波动,广播通知用于多系统同步,以及分布式缓存和消息通讯场景的应用。通过Pulsar为例,阐述了消息队列如何提升系统稳定性和效率。
摘要由CSDN通过智能技术生成

        当系统中出现“生产”和“消费”的速度不一致或存在不稳定性因素的时候,就需要使用消息队列作为抽象层来弥合双方的差异。“消息”是在两台计算机间传送的数据单位,它可以很简单,例如只包含文本字符串;它也可以很复杂,例如包含嵌入对象。消息被发送到队列中,“消息队列”是在消息的传输过程中保存消息的容器。下面以Pulsar为例进行说明。

1、异步调用

        假设有一个系统调用链路为 A 调用 B 耗时 20ms,B 调用 C 耗时 20ms,而 C 调用 D 需要 2s,整个调用过程需要耗时 2040ms。但实际上 A 调用 B,B 调用 C 只需要 40ms,而 D 系统的引入直接导致系统性能下降约 50 倍。此时我们可以考虑引入消息队列,将 D 系统的调用抽离出来,做一个异步调用:系统 A 到系统 B 再到系统 C 后就直接结束,系统 C 将消息发送到消息队列中,系统 D 从消息队列里获取消息进行消费,这样我们系统的性能就提高了接近 50 倍。

2、系统解耦

         各个业务系统只处理自己的业务逻辑,并发送消息到消息队列。下游业务系统直接订阅消息队列的队列或主题获取事件。消息队列可用于单体应用被拆解为微服务后不同微服务间的通信。系统解耦的好处是不同系统的迭代不再相互依赖,能有效缩短数据链路长度,提高数据处理效率。

 3、削峰填谷

        大型活动带来较高流量时,如果没有提前做好相应保护很容易导致系统超负荷甚至崩溃,而限制太过则会导致请求大量失败而影响用户体验。消息队列服务拥有高性能的消息处理能力,可以承受流量脉冲而不被击垮,在确保系统可用性的同时,通过快速有效的请求响应技术提升用户体验。其海量消息堆积能力确保下游业务在安全水位内平滑稳定的运行,避免流量高峰的冲击。

4、广播通知

         如果系统里一个状态的改变,需要通知多个相关系统,则可通过消息订阅的方式推送给各个订阅者系统。比如数据库值的改变,需要通知所有的缓存系统更新,可以把数据库值改变的消息发送给消息队列,然后各缓存订阅相关主题,收到消息后更新自己的缓存。

 5、分布式缓存

        在大数据场景中,日志分析往往需要处理大量日志,不可能存储在一台物理机上。消息队列可提供一个集群,用来存储海量消息,进一步供实时分析系统分析日志。

6、消息通讯

        消息队列一般都内置了高效的通信机制,因此也可以用在纯粹的消息通讯场景中。比如实现点对点消息队列,或者聊天室等。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值