• 【RocketMQ 二十八】RocketMQ 消息堆积


    消息堆积本质

    在这里插入图片描述
    ⽣产者的⽣产速度 >> 消费者的处理速度

    ⽣产者的⽣产速度骤增,⽐如⽣产者的流量突然骤增
    消费速度变慢,⽐如消费者实例 IO 阻塞严重或者宕机

    如何处理消息堆积

    如何处理消息堆积呢?可以从两个当⾯考虑:

    • 如何通过解决系统问题、优化代码来避免消息堆积
    • 消息已经堆积了,线上如何快速处理

    发送端性能优化

    从消息堆积若⼲原因来看,消息堆积的原因主要在消费端处理上,本身⽣产者端应该遵循的
    原则应该是尽可能快的将消息发送到Broker中去,因此发送端除了业务处理时批量发送暂⽆好的
    ⼿段优化,⽽且并不是所有的业务处理都⽀持批量发送和批量接收处理。

    批量发送是发送端预防消息堆积的⽅式之⼀

    消费端性能优化

    在设计系统的时候,⼀定要保证消费端的消费性能要⾼于⽣产端的发送性能,这样的系统才能健康的
    持续运⾏。

    • ⽅式1 增加单个消费者处理能⼒
      在这里插入图片描述

    增加单个消费者的处理能⼒这块没有绝对的办法,只能尽可能的优化消息处理业务逻辑的能
    ⼒,减少不必要的⾮业务相关处理时间消耗;如果消息处理业务已经优化到⽆法再优化了,那只
    能通过⽅式2⽔平扩展消费者个数来优化。

    • ⽅式2 ⽔平扩容消费者个数
      在这里插入图片描述

    消费端的性能优化除了优化消费业务逻辑以外,也可以通过⽔平扩容,增加消费端的并发数
    来提升总体的消费性能。

    如何快速处理

    如果消息已经堆积了,线上如何快速处理。对于系统发⽣消息积压的情况,需要先解决积
    压,再分析原因,毕竟保证系统的可⽤性是⾸先要解决的问题。

    1、消费端扩容;–通⽤⽅式
    2、服务降级;–快速失败,不⼀定适⽤所有业务场景
    3、跳过⾮重要消息:发⽣消息堆积时,如果消费速度⼀直追不上发送速度,可以选择丢弃不重要的消息
    4、异常监控。–属于运维层⾯措施

  • 相关阅读:
    计算机视觉与深度学习-图像分割-视觉识别任务02-目标检测-【北邮鲁鹏】
    [C++](15)继承
    Imagery in Action | Week6 影像服务
    【计算机网络】常见的HTTP报文头部信息
    k8s之从internal version到runtime.condec
    OmniGraffle Pro v7.22.3(流程图UML图)
    国庆10.1
    pNA修饰肽:Z-FLE-pNA,Z-Phe-Leu-Glu-pNA,CAS号: 104634-10-8
    企业数据共享机制的建立,是一次企业内部的重新梳理
    【语音增强】基于matlab多维谱自适应小波语音信号去噪【含Matlab源码 1972期】
  • 原文地址:https://blog.csdn.net/qq_33333654/article/details/127423736