Embodied Intelligence Observer

一次空指针问题引发的 Spring 生命周期思考

Industry

Source: InfoQ 中文Publish time unverified

背景介绍 我们团队负责的是系统的核心组件——内容安全审核系统。该系统对接了公司内部众多的业务方(如视频、评论、账号、私信等),其核心交互架构基于 RocketMQ 构建,采用典型的异步管道模式: 进审阶段:业务方将待审核的数据发送到其对应的 RocketMQ 进审 Topic。审核阶段:我们的审核系统根据自身处理能力,消费这些进审消息,进行机审、人审、AI 文本/图像识别等一系列安全检测。出审阶段:检测完成后,系统会根据预先配置好的映射关系,将审核结果发送到业务方指定的出审 Topic(或通过 Webhook 下发)。同时,为了进行审计和排查,审核记录会通过一个专用的异步 MQ 发送到 Elasticsearch(ES)进行存储。 其简化架构如下: 诡异的线上异常 在一次服务升级重启发布后,我们收到业务方的反馈:部分内容已经生产成功了,但一直没有收到审核结果。 我们随即展开排查。诡异的是: 我们在后台的 ES 审计日志中,能够明确查到这几条内容的审核记录。这说明系统确实正常消费了这几条消息,并成功通过异步 MQ 写入了 ES。但这些业务确实没有收到出审结果。而且这种现象是偶现的。项目刚…

一次空指针问题引发的 Spring 生命周期思考 | Embodied Intelligence Observer