Agent 服务故障时如何通过熔断、降级和重试实现高可用?

考查重点:故障分类、熔断与恢复探测。临时网络失败限次退避,持续异常熔断后半开探测,降级到兼容模型或确定性流程;保护下游与用户状态,重复写入仍要幂等

本题目录

参考答案

核心回答

Agent 服务高可用要同时保护单次任务、依赖服务和用户状态。先用超时、限流和资源隔离控制负载;瞬时故障在任务预算内退避重试;某个依赖持续异常时熔断,快速转到可接受的备用模型、只读流程、缓存或人工处理;恢复后只放少量探测流量,确认稳定再逐步恢复。

这套机制不能保证所有故障都让用户完全无感。尤其是退款、发消息等写操作,超时不代表没有执行,重试前必须查明结果或复用业务幂等键。没有满足质量和权限要求的备用方案,就应保存任务进度并明确告知可恢复状态。

展开解析

1. 先防止一个依赖拖垮整个服务

模型请求通常耗时较长,连接、并发槽位和队列都有上限。应同时设置连接超时、首个有效输出等待时间、空闲读超时和任务总截止时间;取消要传递到真正执行请求的客户端。线程池、连接池或并发配额按依赖隔离,入口按租户和任务成本限流,避免一个供应商堵塞占满全部资源。

限流控制进入系统的压力,熔断隔离已经不健康的依赖,二者用途不同。备用链路也要有容量和限流,不能把主链路全部流量瞬间倾倒过去。

2. 熔断后的恢复要验证业务能力

熔断器通常有三个状态:

  • Closed:正常放行,统计近期可用性故障和慢调用。
  • Open:达到配置条件后停止正常调用,快速失败或进入降级。
  • Half-Open:冷却后允许受控探测;探测仍失败则重新打开,达到恢复条件后再放量。

统计窗口、最小样本量、错误比例和探测量根据流量与服务目标确定,不能把“失败两次”当作通用规则。参数非法、用户无权限之类请求错误,也不应直接计成供应商整体不可用。

flowchart LR
 C[Closed 正常放行] -->|故障达到配置条件| O[Open 暂停正常调用]
 O -->|冷却后受控探测| H[Half-Open 半开探测]
 H -->|探测失败| O
 H -->|达到恢复条件| C

健康页返回成功只能证明一部分链路可用。探测最好覆盖实际受影响的模型或工具路径,同时限制费用和副作用;恢复时观察成功率、尾延迟和队列,而不是一次成功就全量切回。

3. 降级必须保持任务语义

以售后助手为例:模型不可用时,可以先保留工单、提供已有政策入口,或把退款建议转成人工审核;不能返回“退款成功”充当兜底。切备用模型前要验证它能否处理当前上下文、工具协议、结构化输出和数据使用要求。缓存还需要检查用户权限、版本和时效。

已向用户发送的两个模型的输出片段不能直接拼成一条完整答复;后台生成失败也不能重跑整段工作流,把已完成的业务动作再做一次。应记录任务、步骤和尝试的独立标识,恢复到经过确认的进度。

4. 用演练验证保护是否生效

可分别模拟模型超时、持续过载、备用链路不可用、写操作成功但回包丢失,检查熔断是否隔离到正确依赖、重试是否放大流量、状态能否恢复、用户能否分辨完成与处理中。观察任务完成率、重试增量、降级比例、重复副作用和恢复耗时,才能判断保护措施是否有效。

追问

自动恢复为什么可能反复抖动?

探测过早、恢复流量过大或统计窗口过短,都可能让依赖刚恢复就再次过载。可以延长冷却、限制半开并发、逐步恢复,并对异常提供人工强制开关。

为什么不能让 SDK、网关和 Agent 各自重试?

多层重试会叠加尝试次数,还会重复已有工作。应确定主要重试层,其他层关闭重复策略或共享总截止时间和尝试预算。

对应教程

  • 17-Tools工具调用:工具异常可控、幂等、超时和日志;分类策略与服务保护为外部补充。

参考资料

相关面经

8 篇

多益网络

软件开发工程师
一面
查看原面经 →
追问
两次就熔断,熔断之后怎么恢复?

启云方

AI 应用开发工程师
一面
查看原面经 →
智能体高并发或上游 API 波动导致不可用,怎么设计降级 / 限流?

乐堡互娱

AI应用开发岗
校招秋招一面、二面、三面、四面
查看原面经 →
Agent调用工具超时了怎么处理,如果一直失败会不会重复调用,有没有设计熔断机制

美团

AI 全栈开发工程师
校招秋招二面
查看原面经 →
如果Agent服务挂了,怎么保证用户无感知?有没有做熔断、降级、重试

阿里巴巴

AI 应用研发工程师
校招秋招一面
查看原面经 →
线上高并发场景,Agent服务怎么限流、降级、熔断
展开剩余 3 篇面经

拼多多

AI Agent
秋招二面
查看原面经 →
给你场景,就是环境异常了,你就进行切换,那后面环境正常了,有自动恢复的手段吗,怎么做的?
好的,假如你现在就遇到这种场景,需要处理,你打算怎么做呢

影石创新

AI Agent
实习一面
查看原面经 →
Agent 在执行任务时,如果调用外部工具或 API 出现超时、异常等情况,一般应该如何设计容错机制?

唯品会

Agent 开发
社招一面
查看原面经 →
Agent出错的兜底机制。

收录题集

5 个来源,共7 份题集

影石创新高频面试题

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

AI 项目复盘与自测

Guide · JavaGuide · 1 条原题

查看题集 →

容错与鲁棒性面试题

Onefly · zero2Agent · 2 条原题

查看题集 →

AI系统与训练推理工程

阿东玩 AI · AgentGuide · 2 条原题

查看题集 →

系统设计与后端基础

阿东玩 AI · AgentGuide · 4 条原题

查看题集 →
展开其余 1 条原题
展开剩余 2 份题集

相关题目

4 题