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

news2024/10/6 6:44:40

文章目录

  • 一、背景
  • 二、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.coloradmin.cn/o/496542.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

day25_新特性

今日内容 零、 复习昨日 一、JDK8新特性介绍 二、接口新特性 三、Lambda表达式 四、函数式接口 五、Stream流 六、新日期API 零、 复习昨日 晨考 一、JDK8新特性 接口中默认方法静态方法 − 默认方法就是一个在接口里面有了一个实现的方法。静态方法就是接口中有个已经使用的静…

Windows下安装QT

一、Windows下安装QT 1、QT官网 QT官网:https://download.qt.io/,打开官网地址,如下: 目录结构介绍 目录说明snapshots预览版,最新的开发测试中的 Qt 库和开发工具onlineQt 在线安装源official_releases正式发布版&am…

2023,滴滴“摸着自动驾驶过河”

在“滴滴网约车”的出行领域,出行网络和数据量级是滴滴自动驾驶的优势。但就自动驾驶技术本身来看,滴滴仍然需要展示更多的肌肉。 作者|斗斗 出品|产业家 滴滴自动驾驶有了新动作。 一款“人性化”的概念车、两个加速实现量产L4级车辆的自研硬件、一…

【攻略】北京国际鲜花港

文章目录 一、概述二、经典景观1.万花馆2.花艺中心3.花神广场4.瑞云坪5.百花田6.奇石园7.梅园8.唐草园9.幻花湖10.大地花海11.白滩12.樱花大道13.海棠园 三、网友点评四、注意事项五、北京其他景点推荐 北京国际鲜花港_360百科北京顺义区十大著名景点—2、北京顺义国际鲜花港 -…

C嘎嘎~~ [类 下篇]

类 下篇 1.类的6个默认成员函数2.构造函数2.1 构造函数出现的原因2.2 特性2.3 深刻解读---构造函数可以重载2.4 深刻解读---默认构造函数补充: 3.析构函数3.1概念3.2 特性3.3深刻解读例子 总结 4.拷贝构造函数4.1 概念4.2 特性4.3深刻解读---拷贝构造是构造的一种重载4.4深刻理…

【Linux网络】传输层中UDP和TCP协议

文章目录 1、再谈端口号2、UDP协议3、TCP协议3.1 TCP协议段格式3.2 TCP的三次握手和四次挥手(连接管理机制)3.3 TCP的滑动窗口3.4 TCP的流量控制3.5 拥塞控制3.6 延迟应答和捎带应答3.7 面向字节流和粘包问题3.8 TCP总结 1、再谈端口号 端口号port标识一…

动态规划算法——40道leetcode实例入门到熟练

目录 t0.解题五部曲1.基础入门题目1.509. 斐波那契数2.70. 爬楼梯3.746. 使用最小花费爬楼梯4.62. 不同路径5.63. 不同路径 II6.343. 整数拆分7.96. 不同的二叉搜索树 2.背包问题1.01背包(二维数组实现)2.01背包(滚动数组实现)1.4…

OpenPCDet系列 | 4.数据集数据加载流程

文章目录 数据加载流程0. create_kitti_infos1. __getitem__函数2. prepare_data函数3. collate_batch函数数据加载流程 这里记录一下具体用到的那些数据形式,整个kitti数据集的处理框架图如下所示: 在数据集处理到获取一个batch数据的整个流程的入口如下: # 开始迭代每…

01-微服务部署2023系列-centos安装nginx和jdk教程

centos安装nginx和jdk教程 一、centos安装nginx 0、前提:安装依赖 yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel 1、压缩包 下载nginx 选择Stable version: http://nginx.org/en/download.html 上传压缩包到…

yolov3核心网络模型

1. 改进概述 yolov3主要围绕核心网络Darknet优化进行。 yolov3的速度和map值比之前的算法优秀。 改进包含:网络结构、特征融合、先验框: V1 2, V25,V39、Softmax等。 softmax 2. 多scale方法改进与特征融合 3. 经典变换方法 预测中目标时&#xff0c…

Nacos配置管理、Fegin远程调用、Gateway服务网关

1.Nacos配置管理 Nacos除了可以做注册中心,同样可以做配置管理来使用。 1.1.统一配置管理 当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。我们需要一种统一配置管理方案&#xf…

Spring-IOC

IOC概念和原理 什么是IOC 控制反转,为了将系统的耦合度降低,把对象的创建和对象直接的调用过程权限交给Spring进行管理。 IOC底层原理 XML解析 ​ 通过Java代码解析XML配置文件或者注解得到对应的类的全路径,获取对应的Class类 Class clazz …

Django框架之模型查询介绍及示例

本篇文章所使用模型查询都在《Django框架之模型自定义管理器》基础上讲解查询和使用示例,通过看前篇可以有助于理解内容。 概述 查询集:从数据库获取的对象集合 查询集可以有多个过滤器 过滤器就是一个函数,根据所给的参数限制查询集结果 …

【Vue学习笔记5】Vue3中的响应式:ref和reactive、watchEffect和watch

所谓响应式就是界面和数据同步,能实现实时更新。 Vue 中用过三种响应式解决方案,分别是 defineProperty、Proxy 和 value setter。Vue 2 使用的方案是 defineProperty API。Vue3中使用的方案是Proxy和value setter。 1. ref和reactive vue3中实现响应…

基于docker部署ELK实战- ELK文章1

选择版本为elasticsearch:7.17.9,kibana:7.17.9,logstash:7.17.9 版本一定要一致 docker hub地址:https://hub.docker.com elk相关文档:https://www.elastic.co/guide/en/kibana/7.17 一、部署单点es 1.创建网络 因为我们还需要…

iframe嵌套grafana (前端视角)

1、grafana 启动方式 ①.grafana目录鉴赏。咱们就是直接拿到配置好的grafana。咱们暂时不涉及配置数据啥。 ①.双击grafana-server.exe &#xff0c;会出现黑色命令框。 ②.在浏览器中访问 http://localhost:3000 此时就可以看到配置好的grafana 2.前端嵌入 ①.html <…

消息队列中间件 - Docker安装RabbitMQ、AMQP协议、和主要角色

概述 不管是微服务还是分布式的系统架构中&#xff0c;消息队列中间件都是不可缺少的一个重要环节&#xff0c;主流的消息队列中间件有RabbitMQ、RocketMQ等等&#xff0c;从这篇开始详细介绍以RabbitMQ为代表的消息队列中间件。 AMQP协议 AMQP协议是一个提供统一消息服务的应…

图像处理:基于cv2.inpaint()图像修补

前言 今天我们将学习如何通过一种“修复”的方法消除旧照片中的小噪音&#xff0c;笔画等。当然&#xff0c;经过我的测试你也可以将其用于削弱混杂了其他的颜色的图像。 实验背景 大多数人家都会有一些旧的的旧化照片&#xff0c;上面有黑点&#xff0c;一些笔触等。你是否…

从零实现深度学习框架——常见学习率调整策略原理与实现

引言 本着“凡我不能创造的&#xff0c;我就不能理解”的思想&#xff0c;本系列文章会基于纯Python以及NumPy从零创建自己的深度学习框架&#xff0c;该框架类似PyTorch能实现自动求导。 &#x1f4a1;系列文章完整目录&#xff1a; &#x1f449;点此&#x1f448; 要深入理解…

day24_多线程

今日内容 零、 复习昨日 一、作业 二、线程安全的集合 三、死锁 四、线程通信 五、生产者消费者 六、线程池 零、 复习昨日 见晨考 一、作业 售卖后车票 见代码二、线程安全的类[了解] StringBuffer是线程安全的,是因为每个方法都加上synchronized,即都是同步方法 StringBuil…