Files
cc-switch/docs/user-manual/zh/4-proxy/4.3-failover.md
Jason bbed2a1fe1 docs: restructure user manual for i18n and add EN/JA translations
Reorganize docs/user-manual/ from flat structure to language subdirectories
(zh/, en/, ja/) with shared assets/. Move existing Chinese docs into zh/,
fix image paths, add multilingual navigation README, and translate all 23
markdown files (~4500 lines each) to English and Japanese.
2026-03-03 08:40:52 +08:00

5.6 KiB
Raw Blame History

4.3 故障转移

功能说明

故障转移功能在主供应商请求失败时,自动切换到备用供应商,确保服务不中断。

适用场景

  • 供应商服务不稳定
  • 需要高可用性
  • 长时间运行的任务

前提条件

使用故障转移功能需要:

  1. 启动代理服务
  2. 开启应用接管
  3. 配置故障转移队列
  4. 开启自动故障转移

配置故障转移队列

打开配置页面

设置 → 高级 → 故障转移

选择应用

页面顶部有三个 Tab

  • Claude
  • Codex
  • Gemini

选择要配置的应用。

添加备用供应商

  1. 在「故障转移队列」区域
  2. 点击「添加供应商」
  3. 从下拉列表选择供应商
  4. 供应商会添加到队列末尾

调整优先级

拖拽供应商调整顺序:

  • 序号越小,优先级越高
  • 主供应商失败后,按顺序尝试备用供应商

移除供应商

点击供应商右侧的「移除」按钮。

主界面快捷操作

当代理和故障转移都开启时,供应商卡片会显示故障转移开关。

添加到队列

  1. 找到供应商卡片
  2. 开启故障转移开关
  3. 供应商自动添加到队列

从队列移除

  1. 关闭供应商卡片的故障转移开关
  2. 供应商从队列中移除

开启自动故障转移

操作步骤

  1. 在故障转移配置页面
  2. 开启「自动故障转移」开关

开关说明

状态 行为
关闭 仅记录失败,不自动切换
开启 失败时自动切换到下一个供应商

故障转移流程

graph TD
    Start[请求到达代理] --> Send[发送到当前供应商]
    Send --> CheckSuccess{成功?}
    CheckSuccess -- 是 --> Return[返回响应]
    CheckSuccess -- 否 --> LogFail[记录失败]
    LogFail --> CheckCircuit{检查熔断状态}
    CheckCircuit -- 熔断 --> Skip[跳过此供应商]
    CheckCircuit -- 未熔断 --> IncFail[增加失败计数]
    Skip --> Next{队列中下一个?}
    IncFail --> Next
    Next -- 有 --> Switch[切换供应商]
    Switch --> Retry[重试请求]
    Retry --> Send
    Next -- 无 --> Error[返回错误]

熔断器配置

熔断器防止频繁重试失败的供应商。

配置项

不同应用有独立的默认配置。以下为通用默认值Claude 有独立的宽松配置。

配置 说明 通用默认值 Claude 默认值 范围
失败阈值 连续失败多少次触发熔断 4 8 1-20
恢复成功阈值 半开状态下成功多少次后关闭熔断器 2 3 1-10
恢复等待时间 熔断后多久尝试恢复(秒) 60 90 0-300
错误率阈值 错误率超过此值时打开熔断器 60% 70% 0-100%
最小请求数 计算错误率前的最小请求数 10 15 5-100

💡 Claude 由于请求耗时较长,默认配置更为宽松,容忍更多失败次数。

超时配置

配置 说明 通用默认值 Claude 默认值 范围
流式首字节超时 等待首个数据块的最大时间(秒) 60 90 1-120
流式静默超时 数据块之间的最大间隔(秒) 120 180 60-600填 0 禁用)
非流式超时 非流式请求的总超时时间(秒) 600 600 60-1200

重试配置

配置 说明 通用默认值 Claude 默认值 范围
最大重试次数 请求失败时的重试次数 3 6 0-10

💡 Gemini 的默认最大重试次数为 5。

熔断状态

状态 说明
关闭 正常状态,允许请求
开启 熔断状态,跳过此供应商
半开 尝试恢复,发送试探请求

状态转换

stateDiagram-v2
    [*] --> Closed: 初始化
    Closed --> Open: 失败次数 >= 阈值
    Open --> HalfOpen: 熔断时长到期
    HalfOpen --> Closed: 试探成功 (>= 恢复阈值)
    HalfOpen --> Open: 试探失败

健康状态指示

供应商卡片

卡片上显示健康状态徽章:

徽章 状态 说明
🟢 健康 连续失败次数为 0
🟡 警告 有失败但未触发熔断
🔴 熔断 已触发熔断,暂时跳过

队列列表

故障转移队列中也显示每个供应商的健康状态。

故障转移日志

每次故障转移会记录:

信息 说明
时间 发生时间
原供应商 失败的供应商
新供应商 切换到的供应商
失败原因 错误信息

在用量统计的请求日志中可以查看。

最佳实践

队列配置建议

  1. 主供应商:最稳定、最快的供应商
  2. 第一备用:次优选择
  3. 第二备用:保底选择

熔断器配置建议

场景 失败阈值 熔断时长
高可用要求 2 30 秒
一般场景 3 60 秒
容忍偶发失败 5 120 秒

监控建议

定期检查:

  • 各供应商的健康状态
  • 故障转移发生频率
  • 熔断触发情况

常见问题

故障转移没有触发

检查:

  1. 代理服务是否运行
  2. 应用接管是否开启
  3. 自动故障转移是否开启
  4. 队列中是否有备用供应商

频繁触发故障转移

可能原因:

  • 主供应商不稳定
  • 网络问题
  • 配置错误

解决方法:

  • 检查主供应商状态
  • 调整熔断器参数
  • 考虑更换主供应商

所有供应商都熔断

等待熔断时长到期后自动恢复,或:

  1. 手动重启代理服务
  2. 重置熔断状态