【消息中间件】如何解决RocketMQ消息堆积的问题

news/2024/10/20 22:06:03/

文章目录

  • 一、背景
  • 二、MQ消息堆积
  • 三、消息堆积常见于以下几种情况:
  • 四、解决上述问题需要做到
  • 五、如何解决消息堆积和延迟问题

一、背景

消息处理流程中,如果客户端的消费速度跟不上服务端的发送速度,未处理的消息会越来越多,这部分消息就被称为堆积消息。消息出现堆积进而会造成消息消费延迟。以下场景需要重点关注消息堆积和延迟的问题:

  • 业务系统上下游能力不匹配造成的持续堆积,且无法自行恢复。
  • 业务系统对消息的消费实时性要求较高,即使是短暂的堆积造成的消息延迟也无法接受。

二、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的队列出现消息积压时,要对其熔断,将其隔离,将新消息发送发送至其他队列,过一定的时间,再解除其隔离。

五、如何解决消息堆积和延迟问题

想要快速避免消息堆积和延迟给业务带来的影响,您可以通过消息队列RocketMQ版提供的监控报警功能,设置告警规则提前预警消息堆积问题,或通过业务埋点,触发报警事件,及时监控到消息堆积问题并进行处理。
在这里插入图片描述


http://www.ppmy.cn/news/61357.html

相关文章

2023年度国家自然科学基金项目申请初审结果公布~

2023年4月28日,国家自然科学基金委员会发布了《关于公布2023年度国家自然科学基金项目申请初审结果的通告》,2023年度国家自然科学基金项目申请初审结果公布!2023年度项目申请集中接收期间,自然科学基金委共接收各类型项目申请304…

被清理的文件怎么恢复

我们都知道,经常使用电脑,就会产生大量的文件,这些不仅会占用硬盘空间,还会影响到电脑的使用性,而想要给电脑有一个良好的运行状态,就需要我们定期清理电脑中的垃圾文件。但随着文件的越来越多,…

ES6之箭头函数

文章目录 前言一、定义二、简化1.当函数参数只有一个时2.当函数体只有一条return语句时 三、注意1.箭头函数的this2.不能作为构造函数实例化对象3.不能使用argument变量 总结 前言 简单的讲,箭头函数是将原function关键字和函数名删掉的一种简写函数形式。 一、定义…

JSP基于Iptables图形管理工具的设计与实现(源代码+论文)

Netfilter/Iptables防火墙是Linux平台下的包过滤防火墙,Iptables防火墙不仅提供了强大的数据包过滤能力,而且还提供转发,NAT映射等功能,是个人及企业级Linux用户构建网络安全平台的首选工具。但是,由于种种原因&#x…

【fluent】axial、radial、tangentia的含义和区别,axial/radial/tangentia coordination表达的意义

Reference 本文主要参考fluent的官方文档。 ANSYS FLUENT 12.0 User’s Guide - 31.2 Velocity Reporting Options 笛卡尔坐标系——Cartesian coordinate system 不管什么坐标系,都要讲究维数。这个维数根据问题难度确定,对于3D问题需要用三维坐…

大模型商业的搅局者?除了谷歌和微软,你可能忘记了它!

夕小瑶科技说 原创 作者 | 小戏、iven 大模型的商业大戏愈发精彩了,这边是谷歌和 OpenAI 剑拔弩张军备竞赛,那边是各路豪强的大模型应用雪花般的涌来,你方唱罢我登场。 而在这串作为大模型先行者而出现的公司以及研究院的名字中,…

MySQL5.7和MySQL8.0的区别是什么

MySQL5.7和MySQL8.0的区别是什么 1.MySQL5.7和MySQL8的区别? MySQL 5.7和MySQL 8.0之间有以下几个主要区别: 版本功能区别:MySQL 5.7版本已经是一个非常稳定的成熟的版本,主要是针对5.7以下的版本进行常规的bug修复和性能优化&a…

视频里的音乐怎么转换成mp3格式?

视频里的音乐怎么转换成mp3格式?视频里的音乐转换为mp3的原因有很多,主要是因为mp3格式是一种音频格式,文件大小较小,更易于存储和传输。相比之下,视频格式则是一种视频文件格式,虽然包含音频,但…