生产案例:消息堆积排查分析

news2025/4/18 10:10:58

📝作者简介:
大家好,我是CBeann,CSDN博客专家,阿里云专家博主。
22届校招进入阿里广告部门从事Java开发工程师。
平时有空会帮大家解决问题,模式面试和日常答疑,并且提供免费云服务器使用。
有一起卷的可以加我的微信:CHAI956056312,大家一起学习,一起进步。

项目场景

广告包括图片、URL和文字等信息。这些信息构成的广告不是随便投放的,要审核,而审核是风控部门审核,简单的交互逻辑如下。
在这里插入图片描述

对于从RocketMQ到广告系统的这条链路来说,又放大到下面的这张图。其中拉取消息中间件AMB做消费的监控和限流。
在这里插入图片描述

问题描述

这个是从一个工单反馈发现的,这个问题表象描述为先发的消息后消费到。正常是风控机审先返回结果,然后风控人审后返回结果。这次出现了机审(审核通过)竟然覆盖了人审(审核拒绝)的结果,最后广告被错误的投放出去了。

消息顺序乱序,很明显就是上游没做分桶,没有保证相同的ID路由到同一个MQ的队列上,但是仔细想一想,这种常识性问题理论上是不会犯的,而且出问题早就出了,原因只可能出现从MQ到consumer这条链路上,即下图。
在这里插入图片描述

查了拉取消息中间件AMB的这个配置,发现没有配置顺序消费,即从MQ上拉取到消息然后多线程消费,自然就会出现上面的这种先发消息后消费的情况,信心满满的感觉把这个bug修复了。

but出现消费堆积了。。。
在这里插入图片描述

问题分析

还是先看一下下面的这张图
在这里插入图片描述
其中中间的AMB任务配置的是32*32。
即32个拉线程,每个拉线程下挂着32个消费线程。
在这里插入图片描述

修改为顺序消费配置后,消费出现了堆积。

首先下游的HSF接口(HTTP)接口是没有改的,所以下游消费能力不变
32个拉取线程还是32个,说明拉取MQ消息量还是不变的。

顺序消费改变了什么呢?
改变的是拉取线程拿到消息后对QueueId做hash然后路由到拉取线程下的哪个消费线程。
之前同一个拉取线程拉到不同的队列会被分配到不同的消费线程。
现在同一个拉取线程拉到不同的队列会根据QueueId的HASH到不同的消费线程,此时可能HASH值相同,那么此时就会让一个消费线程消费,消费速录就变为原来的二倍。

解决方案:

只有保证多个队列的QueueId做hash不路由到一个消费线程上,理论上就能解决问题。
方案1—修改路由算法:在拉取线程和消费线程中间改路由算法,操作成本极高。
方案2—HASH上移:扩大拉取线程,扩大到和队列数相同,然后每一个拉取线程下配置1个消费线程(配置多了浪费),这样其实就可以保证不同的队列消息进入不同的消费线程,因为拉取线程就已经不同了。

总结

定位到是哪个地方有问题,然后去解决和优化。
有的场景不能扩大MQ队列数解决消费堆积。
核心就是提高下游的消费能力,使得下游疯狂消费。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/603786.html

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

相关文章

2023年06月IDE流行度最新排名

点击查看最新IDE流行度最新排名(每月更新) 2023年06月IDE流行度最新排名 顶级IDE排名是通过分析在谷歌上搜索IDE下载页面的频率而创建的 一个IDE被搜索的次数越多,这个IDE就被认为越受欢迎。原始数据来自谷歌Trends 如果您相信集体智慧&am…

Linux4.5Nginx网站服务

文章目录 计算机系统5G云计算第五章 LINUX Nginx网站服务一、编译安装Nginx服务1.关闭防火墙,将安装nginx所需软件包传到/opt目录下2.安装依赖包3.创建运行用户、组4.编译安装Nginx5.检查、启动、重启、停止 nginx服务6.添加 Nginx 系统服务 二、认识Nginx服务的主配…

【数据结构】---几分钟简单几步学会手撕链式二叉树(下)

文章目录 前言🌟一、二叉树链式结构的实现🌏1.1 二叉树叶子节点个数💫代码:💫流程图: 🌏1.2 二叉树的高度💫第一种写法(不支持):📒代码:&#x1f…

​Memcached 架构

Memcached是一种内存中的键值存储,最初是用Perl编写的,后来重写为C语言。它受到Facebook、Netflix和Wikipedia等公司的欢迎,因为它简单易用。 虽然当谈论到软件描述时,“简单”这个词已经失去了意义,但我认为Memcache…

chatgpt赋能python:用Python制作AI:优化搜索引擎结果的关键

用Python制作AI:优化搜索引擎结果的关键 搜索引擎正成为我们日常生活不可或缺的一部分。无论是寻找答案、娱乐还是购物,大多数人都会先打开搜索引擎。随着越来越多的数据被放入互联网中,如何让搜索引擎结果与用户的搜索意图相符,…

chatgpt赋能python:用Python办公自动化轻松完成繁琐重复的工作

用Python办公自动化轻松完成繁琐重复的工作 随着科技的进步,许多传统工作已经被自动化取代。而在许多职业中,办公自动化通常被认为是节省时间和减少错误的最佳方法。对于那些使用Microsoft Office,例如Excel、Word和PowerPoint等应用程序的用…

chatgpt赋能python:Python如何删除空白

Python 如何删除空白 在SEO优化过程中,我们需要保证我们的网页内容的质量和可读性。其中,一个重要的因素是删除空白。在Python中,我们可以使用多种方法来删除空白,下面我们将介绍一些方法并讨论它们的优缺点。 方法一&#xff1…

操作系统复习4.2.0-磁盘组织和管理

磁盘的结构 磁盘、磁道、扇区 磁盘划分n圈磁道,每条磁道划分为多个扇区 磁盘读写 磁头移动到需要读写的扇区所在的磁道来完成读写 磁盘转起来让目标扇区在磁头下面划过 盘面和柱面 分类 按磁头分类:磁头可伸缩移动、不可伸缩移动(同一盘面上有多个…

chatgpt赋能python:Python加入Path的好处及操作方法

Python加入Path的好处及操作方法 什么是Path? Path,顾名思义就是文件路径的意思。每当我们需要执行某些程序或打开某个文件,电脑都会按照这个文件路径来查找需要的文件或程序。在Windows系统中,文件路径是由一连串的路径名组成的…

DiffRate详解:高效Vision Transformers的可微压缩率

DiffRate详解:高效Vision Transformers的可微压缩率 0. 引言1. 相关内容介绍1.1 Transformer Block1.2 令牌修剪和合并1.3 修剪和合并的统一 2 DiffRate中的创新点2.1 令牌排序2.2 压缩率重参数化2.3 训练目标 3. 算法流程4. 总结 0. 引言 就当前的Vision Transfor…

决策树分类算法

#CSDN AI写作助手创作测评 目录 ID3算法 1.算法原理 2.代码实现 3.ID3算法的优缺点分析 C4.5算法 1.原理 2.优缺点 心得感受 决策树表示方法是应用最广泛的逻辑方法之一,它从一组无次序、无规则的事例中推理出决策树表示形式的分类规则。在决策树的内部…

Vue+springboot医院住院挂号登记收费系统7ui9s

医院信息管理系统的开发过程中,采用B / S架构,主要使用java语言进行开发,结合最新流行的springboot框架。使用Mysql数据库和idea开发环境。该医院信息管理系统包括用户、医生和管理员。其主要功能包括用户管理、医生管理、医生信息管理、预约…

chatgpt赋能python:Python删除非字母的SEO文章

Python删除非字母的SEO文章 Python是一个功能强大的编程语言,广泛应用于各类领域,包括搜索引擎优化(SEO)。在进行SEO优化时,有时需要从文本中删除非字母字符。这可以用Python快速高效地完成。本文将介绍如何使用Pytho…

基于PyQt5的图形化界面开发——堆栈动画演示

目录 0. 前言1. 了解堆栈2.代码实现3. 演示效果其他PyQt5文章 0. 前言 本文使用 PyQt5制作图形化界面演示数据结构中的堆栈操作 操作系统:Windows10 专业版 开发环境:Pycahrm Comunity 2022.3 Python解释器版本:Python3.8 第三方库&…

图文并茂教你快速入门React系列03-事件

事件 使用 React 可以在 JSX 中添加 事件处理函数。其中事件处理函数为自定义函数,它将在响应交互(如点击、悬停、表单输入框获得焦点等)时触发。 事件处理 // 这样写:export default function Button() {function handleClic…

chatgpt赋能python:Python删除文件的方法与注意事项

Python删除文件的方法与注意事项 在Python中,删除文件是很常见的操作。通常,我们需要在程序中删除不再需要的文件,或者在清理本地存储空间时删除缓存文件。本文将重点介绍Python如何删除文件以及可能涉及到的注意事项。 如何删除文件 Pyth…

redis设计原理009持久化策略

目录 RDB 备份原理 优点 缺点 AOF 不能保证绝对不丢失数据 重写 流程 结论 优点 缺点 如何选择RDB和AOF 同时开启 混合模式 运行过程 数据 数据恢复 优点 缺点 优化方案 总结 RDB 通过快照(snapshotting)完成的,当符合一定…

写一个python文件,在shell脚本中运行

最近要复现论文了,发现代码的主函数在.py文件中,运行脚本是在.sh中。 要命的事,我不懂,我怎么debug。 1.新建一个pycharm项目,新建main.py import argparsedef get_args():parser argparse.ArgumentParser()parser…

chatgpt赋能python:Python模块的优势和局限性

Python模块的优势和局限性 引言 Python作为一门高级编程语言,被广泛应用于各种领域。其中,Python内置的模块系统,为Python在编程中的灵活性和可扩展性提供了很大的优势。在本文中,我们将探讨Python模块的优势和局限性及其对Web优…

chatgpt赋能python:用Python剔除重复内容提升SEO效果

用Python剔除重复内容提升SEO效果 SEO是指通过优化网站结构和内容,在搜索引擎中获得更高的排名,从而提升网站流量和曝光度的一种网络营销方式。网站内容是SEO工作的重要组成部分,而剔除重复的内容对于SEO效果的提升有着重要的作用。本文将介…