用途:为 Vercel 部署实现容错能力,分两层——函数级韧性(抵御依赖故障)与部署级韧性(抵御坏发布)。
主要能力:熔断器(CLOSED/OPEN/HALF_OPEN 状态,失败达阈值后返回 fallback);带指数退避与抖动的重试封装 withRetry,可自定义 retryOn 只重试网络错误与 5xx;优雅降级,主数据源失败时用 Vercel KV 的 TTL 缓存返回陈旧数据,无缓存则返回 503 降级响应;幂等键,要求请求头 idempotency-key,命中已处理记录时回放原状态与响应体;健康检查接口 /api/health 并行探测数据库、缓存、外部 API,全部正常返回 200,否则 503;部署级回滚,CI 中部署后 curl 健康检查,非 200 则执行 vercel rollback。
使用方式:按步骤引入 lib/circuit-breaker.ts、lib/retry.ts,在 Serverless 函数中包裹外部依赖调用;用 @vercel/kv 读写缓存;在变更类接口校验幂等键;新增健康检查路由;CI 脚本示例:DEPLOY_URL=$(vercel --prod),随后 curl 检查 /api/health,失败时 vercel rollback。
适用场景:支付等关键变更接口、依赖数据库或第三方 API 的接口、需要自动回滚的发布流程。
限制:Serverless 中熔断器状态仅存在于单个函数实例,跨实例需用 Vercel KV 或 Edge Config;重试需配合幂等避免重复副作用;健康检查超时过短会误报,回滚前建议加重试。前置条件为项目已部署生产、已识别外部依赖。其余细节暂未提供。