• MQ消费堆积问题解决思路


    MQ消息堆积是指生产者发送的消息短时间内在Broker端大量堆积,无法被消费者及时消费,从而导致业务功能无法正常使用。

    消息堆积常见于以下几种情况:

    (1)新上线的消费者功能有BUG,消息无法被消费。

    (2)消费者实例宕机或因网络问题暂时无法同Broker建立连接。

    (3)生产者短时间内推送大量消息至Broker,消费者消费能力不足。

    (4)生产者未感知Broker消费堆积持续向Broker推送消息。

    解决上述问题就要做到:

    (1)解决问题一,要做好 灰度发布。每次新功能上线前,选取一定比例的消费实例做灰度,若出现问题,及时回滚;若消费者消费正常,平稳运行一段时间后,再升级其它实例。如果需要按规则选出一部分账号做灰度,则需要做好消息过滤,让正常消费实例排除灰度消息,让灰度消费实例过滤出灰度消息。

    (2)解决问题二,要做到 多活。极端情况下,当一个IDC内消费实例全部宕机时,需要做到让其他IDC内的消费实例正常消费消息。同时,若一个IDC内Broker全部宕机,需要支持生产者将消息发送至其它IDC的Broker。

    (3)解决问题三,要 增强消费能力。增强消费能力,主要是增加消费者线程数或增加消费者实例个数。增加消费者线程数要注意消费者及其下游服务的消费能力,上线前就要将线程池参数调至最优状态。增加消费者实例个数,要注意Queue数量,消费实例的数量要与Queue数量相同,如果消费实例数量超过Queue数量,多出的消费实例分不到Queue,只增加消费实例是没用的,如果消费实例数量比Queue数量少,每个消费实例承载的流量是不同的。

    (4)解决问题四,要做到 熔断与隔离。当一个Broker的队列出现消息积压时,要对其熔断,将其隔离,将新消息发送至其它队列,过一定的时间,再解除其隔离。

  • 相关阅读:
    矩阵分析与应用
    【数据库】01——精通数据库需要掌握这九个维度
    ToBeWritten之数据源
    Element--生成不定列的表格
    交换奇偶位
    互联网上门洗衣洗鞋小程序搭建
    【代码随想录算法训练营第六十五天|卡码网94.城市间货物运输I&II&III】
    RocketMQ的介绍以及部署
    金蝶云星空的网络控制设置
    百度飞浆EISeg高效交互式标注分割软件的使用教程
  • 原文地址:https://blog.csdn.net/GBS20200720/article/details/127765590