定運行)
【免費下載鏈接】GoModelAI gateway / AI control plane / AI proxy written in Go. Unified OpenAI-compatible and Anthropic-compatible API for OpenAI, Anthropic, Gemini, Groq, xAI, Ollama, vLLM and more. A LiteLLM alternative with observability, guardrails, streaming, cost tracking, intelligent routing, sticky sessions, failover, real-time logs and usage tracking. Prod ready.項目地址https://gitcode.com/gh_mirrors/go/GoModel點擊查看免費下載GoModel 是一個用 Go 編寫的開源 AI 網關AI Gateway / AI 控制平面它統(tǒng)一提供 OpenAI 兼容與 Anthropic 兼容的 API將 OpenAI、Anthropic、Gemini、Groq、xAI、Ollama、vLLM 等上游模型服務收攏到一個入口后面。本文聚焦它的故障轉移Failover與彈性Resilience設計內置的指數退避自動重試、按 Provider 隔離的熔斷器Circuit Breaker、以及基于虛擬模型Virtual Model的跨模型故障轉移鏈——三層保護讓 Provider 報錯、限流、超時時請求被自動接管無需人工干預。為什么 AI 網關需要故障轉移三類常見的上游故障AI 網關位于你的應用和多個模型供應商之間而上游不穩(wěn)定是常態(tài)而非例外故障類型典型表現(xiàn)網關不處理時的后果? 瞬時錯誤502/503/504、Cloudflare522/524超時用戶請求直接報錯 限流429觸發(fā)速率限制請求排隊或直接失敗 靜默故障Provider 返回200但正文是{error: ...}或空choices應用誤判為成功 慢而不斷Provider 仍在響應但單次要幾分鐘連接被長時間占住更棘手的是最后一種還活著的慢 Provider 永遠不會報錯傳統(tǒng)錯誤檢測對它無效。GoModel 的彈性設計正是針對這四類場景逐層設防。GoModel 彈性架構三層保護一覽GoModel 為每一次上游 Provider 調用包裹了多層彈性機制由內到外自動重試Retry—— 對同一 Provider 指數退避重試。默認即覆蓋429、502、503、504、522、524等瞬時狀態(tài)碼。熔斷器Circuit Breaker—— 按 Provider或按模型統(tǒng)計連續(xù)失敗達到閾值后快速失敗并定時探測直到自動恢復??缒P凸收限D移Failover—— 前兩層救不回來時沿虛擬模型定義的故障轉移鏈按聲明順序自動嘗試備用目標。前兩層解決同一個 Provider 怎么重試、什么時候放棄第三層回答什么時候換一家模型。三者默認參數分別定義在 config/resilience.go 與 config/failover_policy.go 中。第一層 | 指數退避自動重試零配置即可用默認參數已經按生產安全調過大多數部署無需改動參數默認值含義max_retries3每個請求最多重試次數initial_backoff1s首次重試等待backoff_factor2.0指數退避倍數1s → 2s → 4s …max_backoff30s單次等待上限jitter_factor0.1隨機抖動避免重試風暴retry_on_statuses429, 502, 503, 504, 522, 524觸發(fā)重試的狀態(tài)碼兩個值得注意的細節(jié)流式請求一旦開始發(fā)送就不再重試——部分數據可能已經發(fā)給客戶端透明重放會破壞回答。但 GoModel 會在首個字節(jié)到達前做故障轉移判定空流會被當作502處理。Idempotency-Key會原樣轉發(fā)給 Provider 及每一次重試支持按 key 去重的供應商可以識別重放請求。第二層 | 熔斷器對壞掉的 Provider 快速失敗重試解決的是偶發(fā)抖動而一個持續(xù)出錯的 Provider 需要被暫時隔離——這就是熔斷器的職責。默認行為參數默認值含義failure_threshold5連續(xù)失敗多少次后熔斷打開timeout30s熔斷打開后等待多久放一次探測請求success_threshold2連續(xù)探測成功多少次后關閉熔斷scopeprovider隔離粒度按 Provider 或按模型modelslow_call_threshold0關閉響應慢于該時長也計為失敗熔斷打開期間請求不再排隊苦等超時而是立即收到一條可觸發(fā)故障轉移的503circuit breaker is open - provider name temporarily unavailable隨即進入第三層保護。每經過timeout放行一個探測請求試探上游連續(xù)success_threshold次成功即自動恢復全程無需重啟。對付慢而不斷把slow_call_threshold設為你健康請求的慢上限如60s連續(xù)慢調用同樣會觸發(fā)熔斷——這是 GoModel 區(qū)別于多數網關的能力。注意此時建議配合scope: model避免同一 Provider 上快的模型不斷重置慢模型的計數。熔斷器狀態(tài)是內存態(tài)、按網關進程獨立重啟即重置開啟 Prometheus 指標后還會導出gomodel_circuit_breaker_state指標0閉合1半開2打開。第三層 | 跨模型故障轉移用虛擬模型搭建保護鏈當某個目標的重試耗盡或熔斷打開后GoModel 會沿著虛擬模型的故障轉移鏈自動切換。只需聲明一個failover策略的虛擬模型把目標按優(yōu)先級排好virtual_models: - source: resilient-chat strategy: failover targets: - { model: openai/gpt-4o } - { model: anthropic/claude-sonnet-4-6 } - { model: ollama/qwen3:8b }客戶端請求model: resilient-chatGoModel 總是優(yōu)先打向第一目標失敗后按聲明順序嘗試后續(xù)目標首個成功即返回。也可以在 Dashboard 的 Models 頁面直接為某個真實模型添加回退目標策略默認即 Failover無需改動客戶端代碼哪些失敗會觸發(fā)故障轉移5xx服務端錯誤含隱藏錯誤的502429限流——被限滿的目標會被跳過把流量讓給有容量的目標模型不存在 / 已下線 / 被禁用類錯誤model not found、model deprecated等短語匹配與狀態(tài)碼無關聚合類 Provider 用4xx轉發(fā)的上游失敗如400 Upstream request failed200但choices為空的響應按502處理被禁用的目標、當前 API Key 無權使用的目標會被靜默跳過不計入嘗試次數。每次嘗試都會寫入請求日志響應按實際應答的模型計費審計軌跡里能清楚看到故障轉移發(fā)生過。實戰(zhàn)組合先重試 Cloudflare 超時再自動換模型對非流式請求三層機制可以疊加使用同一模型上先重試 Cloudflare522/524徹底失敗后再切到備用模型。合并以下配置到你的config.yamlproviders: cloudflare: resilience: retry: max_retries: 2 retry_on_statuses: [429, 502, 503, 504, 522, 524] circuit_breaker: scope: model # 一個模型熔斷不牽連同 Provider 的其他模型 failure_threshold: 5 virtual_models: - source: resilient-chat strategy: failover targets: - { model: cloudflare/model1 } - { model: cloudflare/model2 }效果model1返回524時最多重試 2 次3 次全部失敗后自動請求model2它擁有自己獨立的重試預算model1熔斷打開期間直接跳過不再阻塞model2。Dashboard 監(jiān)控熔斷器狀態(tài)與每次嘗試一目了然彈性機制不是黑盒。Dashboard 的 Providers 頁面把每個 Provider 的健康狀況攤開給你看狀態(tài)藥丸Healthy / Degraded / Circuit Open / Recovering、最近 10 分鐘請求成敗統(tǒng)計、Breaker State芯片以及生效的重試與熔斷器參數3 retries, 1s initial, 30s max, factor 2, jitter 0.1這樣的人類可讀格式熔斷打開時狀態(tài)藥丸變?yōu)镃ircuit Open恢復中顯示RecoveringProvider 掉線時模型列表會自動隱藏其模型全部 Provider 同時故障則保留舊庫存避免把上游報錯變成模型不存在快檢循環(huán)每 60 秒重探一次上游恢復后通常一分鐘內流量回歸。配合審計日志每一次重試、每一次故障轉移都有據可查——日志按會話分組右側面板可回看完整的請求交互故障轉移與熔斷器實現(xiàn)在哪里想深入源碼或完整文檔可以從這些入口開始重試與熔斷器默認配置config/resilience.go故障轉移觸發(fā)狀態(tài)與錯誤短語清單config/failover_policy.go客戶端側重試 / 熔斷實現(xiàn)internal/llmclient/網關編排重試與故障轉移的銜接internal/gateway/Provider 健康狀態(tài) APIinternal/admin/handler_providers.go官方文檔Resilience彈性與熔斷器調優(yōu)、Failover故障轉移鏈、Virtual Models虛擬模型、Provider Failure Modes各類故障的處理契約一句話總結GoModel 把重試 → 熔斷 → 跨模型故障轉移做成默認開啟的三層保護絕大多數部署零配置即可獲得生產級穩(wěn)定性而需要精細調優(yōu)時每一層的閾值都能通過 YAML 或環(huán)境變量獨立控制。贊分享【免費下載鏈接】GoModelAI gateway / AI control plane / AI proxy written in Go. Unified OpenAI-compatible and Anthropic-compatible API for OpenAI, Anthropic, Gemini, Groq, xAI, Ollama, vLLM and more. A LiteLLM alternative with observability, guardrails, streaming, cost tracking, intelligent routing, sticky sessions, failover, real-time logs and usage tracking. Prod ready.項目地址https://gitcode.com/gh_mirrors/go/GoModel點擊查看免費下載相關推薦CC-Switch 故障轉移機制詳解故障轉移隊列、熔斷器與自動切換的實現(xiàn)原理CC Switch 故障轉移機制詳解故障轉移隊列、熔斷器與自動切換的實現(xiàn)原理 本文以 cc switch 用戶手冊中的「故障轉移」章節(jié)為核心完整講解如何在AI 應用開發(fā)者工具桌面應用如何使用ieBetter.js快速修復IE6-IE8兼容性問題完整指南如何使用ieBetter.js快速修復IE6 IE8兼容性問題完整指南 ieBetter.js是一款專為IE6 IE8瀏覽器設計的輕量級JavaScript工前端Portkey網關負載均衡策略自動故障轉移與重試機制Portkey網關負載均衡策略自動故障轉移與重試機制 引言構建可靠的AI應用基礎設施 在現(xiàn)代AI應用開發(fā)中服務可靠性是決定用戶體驗的關鍵因素。當您的應用依LLM 網關API網關后端負載均衡人工智能創(chuàng)作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考