• 消息队列概述与扩展


    一、消息队列的特性

    • 与业务解藕:一个具有普适性质的消息队列组件不需要考虑上层的业务模型,只做好消息的分发就可以了,上层业务的不同模块反而需要依赖消息队列所定义的规范进行通信。
    • FIFO:先投递先到达的保证是一个消息队列和一个buffer的本质区别。
    • 支持容灾:对于普适的消息队列组件来说,节点的动态增删和消息的持久化,备份等
    • 提高性能:消息队列的吞吐量上去了,整个系统的内部通信效率也会有提高。

    二、消息队列的应用场景

    当系统中出现“生产“和“消费“的速度或稳定性等因素不一致的时候,就需要消息队列,作为抽象层,弥合双方的差异。“ 消息 ”是在两台服务器间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。消息被发送到队列中,“ 消息队列 ”是在消息的传输过程中保存消息的容器 。
    实例
    (1)业务系统触发短信发送申请,但短信发送模块速度跟不上,需要将来不及处理的消息暂存一下,缓冲压力。就可以把短信发送申请丢到消息队列,直接返回用户成功,短信发送模块再可以慢慢去消息队列中取消息进行处理。

    (2)调远程系统下订单成本较高,且因为网络等因素,不稳定,攒一批一起发送。

    (3)任务处理类的系统,先把用户发起的任务请求接收过来存到消息队列中,然后后端开启多个应用程序从队列中取任务进行处理

    三、消息队列的好处

    • 提高系统响应速度(异步)
      使用了消息队列,生产者一方,把消息往队列里一扔,就可以立马返回,响应用户了。无需等待处理结果。处理结果可以让用户稍后自己来取。也可以让生产者订阅(如:留下手机号码或让生产者实现listener接口、加入监听队列)。
    • 提高系统稳定性(解耦,消峰)
      双十一时,考虑电商系统下订单,发送数据给生产系统的情况。电商系统和生产系统之间的网络有可能掉线,生产系统可能会因维护等原因暂停服务或者请求太多处理不及时。如果不使用消息队列,电商系统数据发布出去,顾客无法下单,影响业务开展。两个系统间不应该如此紧密耦合,应该通过消息队列解耦。

    四、常见的消息队列

    在这里插入图片描述

  • 相关阅读:
    C# Onnx PP-Vehicle 车辆分析(包含:车辆检测,识别车型和车辆颜色)
    Flink ON YARN
    linux系统安装步骤
    《七月集训》(第五天)——双指针
    Windows动态链接库使用详解
    Java内存区域管理
    哈工大机器人竞技队成立22年来4次获国际冠军
    如何给苹果ipa和安卓apk应用APP包体修改手机屏幕上logo图标iocn?
    Vue知识点整理(待更新)
    [附源码]Python计算机毕业设计《数据库系统原理》在线学习平台
  • 原文地址:https://blog.csdn.net/m0_51167384/article/details/128102745