news 2026/6/26 2:35:57

从0到1:企业级AI项目迭代日记 Vol.54|崩了能恢复,才算可信

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从0到1:企业级AI项目迭代日记 Vol.54|崩了能恢复,才算可信

一个系统能不能被信任,不取决于它正常运行时有多稳,而取决于它崩了之后能不能自己恢复——并且不丢任何一条消息。

这一轮最核心的工作,不是新功能,是“崩溃恢复链路”的完整性。

一、崩溃恢复:从OOM止血到消息去重到优雅退出

进程内存超限被杀,然后重启,然后继续处理请求,然后再次超限被杀——这个循环一旦开始,整个编排服务就进入了反复崩溃的状态,用户侧看到的全是“系统超时”。

表面上这是资源问题,解法是把内存限额调大。但调大只是止血,不是修复。真正的问题在于没有并发控制。如果同时涌入的请求数量超过系统能处理的上限,每一个请求都会消耗内存,叠加起来就会撑爆进程。第一层修复是在进程内加了一个并发闸门——超过上限的请求排队等待,而不是全部同时开始处理。

OOM修完之后,暴露了第二个问题:崩溃后重投的消息被静默丢弃了。原来的去重逻辑是单态的——消息要么“处理中”,要么“不存在”。进程崩溃时,“处理中”的消息状态没有清理,重启后这些消息再投进来,系统认为它们已经在处理,直接丢弃,不报错。用户的感知是:发出去的消息,什么回复都没有。

单态去重的问题在于,它假设“处理中”一定会变成“完成”,但进程崩溃打破了这个假设。第二层修复是改成两态:处理中和已完成。崩溃恢复后,所有还在处理中的消息视为未完成,允许重新处理。已完成状态的消息才是真正的去重边界。

止血之后是防复发。滚动升级和节点驱逐是两个常见的“意外终止”场景。如果进程被强制杀死,正在处理的请求没有机会完成,就又回到了消息丢失的问题。第三层修复是两个机制:优雅退出窗口,给进程一个“收尾时间”,让它在被杀死之前把正在处理的请求跑完;副本可用性保护,防止滚动升级一次把所有副本都杀掉。

OOM止血、去重两态、优雅退出——三个修复合在一起,才构成一个完整的“崩溃恢复链路”。以前的目标是不崩,现在的目标是崩了也能自己恢复。

二、夜间日志巡检:比用户更早知道问题

这轮有一批修复来自“夜间日志巡检”,包括解密失败日志洪泛、工具参数名导致的运行时错误、跨租户越权写库失败。这些问题的共同特点是:不会让系统崩溃,但会持续污染日志,掩盖真正的异常信号。

把日志巡检变成日常流程,意义不在于“能发现更多问题”,而在于“能看清系统真实在发生什么”。巡检驱动修复,比等用户反馈驱动修复,要早至少一个反馈周期。这是一种运营成熟度的标志:你比用户更早知道系统出了问题。

三、权限:上下文没带全,是比逻辑错误更隐蔽的bug

这轮权限类的修复集中在一个模式上:逻辑写对了,但调用时上下文没带全。

数据库的行级安全策略是正确的,但它需要每次查询都显式声明当前的组织身份。漏掉这个声明,查询不会报语法错,只是静默返回空——或者在写入时报权限不足。

消息写入没带组织归属、用户信息入库时没设组织上下文、工具加载时身份参数没注入——每一个单独看都是遗漏,但背后是同一个问题:多租户架构下,“我是谁”这个身份信息需要在每一个调用边界都显式传递,不能依赖全局状态或隐式继承。

四、动态路由的脆弱性:每一个环节都有状态

自定义意图路由的核心逻辑是:用户定义意图 → 系统自动注入到路由图 → 命中时跳转到对应子图。这条链路看起来顺畅,但每个环节都有状态,任何一个状态不对,整条路由就断。

具体问题包括:查询意图定义时结果集被提前消费导致第二次读取为空;节点名为空时没有过滤,污染了边的配置;身份上下文没注入导致查询权限不足。调试动态路由比调试静态路由难,因为失败路径是在运行时才被激活的。

修复之后,自定义意图不再容易触发路由错误,路由装配的稳定性明显提高。

一共二十多条提交,两次发版,主线只有一件事:让系统在压力下不崩,崩了之后能恢复,恢复后不丢消息。

发版之后团队里有人说:“以前我们是做到不崩,现在是做到崩了也没事。”

这两句话之间,差了这整轮的工作量。

这,是第五十四天。

《从0到1:企业级AI项目迭代日记》记录一个企业级 AI 项目从创意、架构到落地的真实过程。不讲神话,只记录进化。


如果你也在做企业 AI 落地,欢迎留言来聊。或者,把这篇转发给一个正在踩同样坑的朋友。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 2:33:40

如何夺回你的数字记忆主权:WeChatMsg完整指南

如何夺回你的数字记忆主权:WeChatMsg完整指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg …

作者头像 李华
网站建设 2026/6/26 2:33:15

AI编排实战:MuleSoft+LangChain构建企业级AI中枢

1. 项目概述:当企业数据孤岛撞上大模型狂潮,谁来当那个“调度员”?我干企业集成这行快十二年了,从最早手写SOAP接口、在WebLogic里调JNDI数据源,到后来搭ESB总线、配API网关策略,再到如今每天和MuleSoft An…

作者头像 李华
网站建设 2026/6/26 2:30:09

最新量化实现别急着扩功能,先跑通 API 小流程

从手工交易规则进入量化实现时,复杂功能很容易显得更有吸引力。但如果最基本的流程还没有被验证,复杂只会让问题变得更难定位。更稳妥的做法,是先把一条小而完整的路径接起来。代码要回到规则本身API 数据、策略逻辑和交易执行分别对应流程中…

作者头像 李华
网站建设 2026/6/26 2:27:38

Transformer架构拆解:从张量形状到可运行代码的实操指南

1. 项目概述:这不是又一篇“Transformer保姆级教程”,而是一次彻底拆掉黑箱的实操解剖你点开这篇文章,大概率不是因为想读第17篇“从零手推Attention公式”的数学推导,而是被标题里那个“Easiest”戳中了——你试过太多次&#xf…

作者头像 李华
网站建设 2026/6/26 2:27:17

区块链交易ID唯一性的一种司法应用

222万现金交了出去,区块链交易ID全是同一个。▎案情 2024年12月,陆先生被微信"同小区邻居"诱导开通境外网店,对方以"外汇管制不便"为由让他线下取现换U。陆先生取了222万现金与"取手"陈某交接,收到…

作者头像 李华
网站建设 2026/6/26 2:26:36

GitNexus:零服务器的代码知识图谱引擎

引言:AI 编程时代的代码理解难题GitHub 上已有超过 4 亿个仓库,全球活跃开发者超过 1 亿。随着 AI 编程助手(Cursor、Claude Code、Codex 等)的普及,AI 对代码库的理解能力成为瓶颈。传统方式中,AI 代理只能…

作者头像 李华