登录
首页 >  Golang >  Go教程

Go 服务降级:不是所有下游失败都要拖垮主流程

来源:Golang学习网专题原创

时间:2026-06-09 04:06:00 582浏览 收藏

所属专题:Go 并发治理实战

并发聚合接口里,不同下游的重要性不同。用户资料失败可能必须返回错误,推荐位失败却可以返回空列表。降级的核心,是提前区分核心依赖和非核心依赖。

先定义核心路径

核心路径失败会影响业务正确性,应该快速失败;非核心路径失败只影响体验,可以返回默认值、缓存值或空值。

降级也要可观测

如果降级悄悄发生,长期看会掩盖下游问题。每次 fallback 都应该计数,并在日志中带上下游名称和原因。

不要把降级当成吞错误

降级不是忽略错误,而是用业务允许的方式返回。同时要保留排查线索,避免用户看到正常页面,系统却已经持续坏了几小时。

代码示例

recommend, err := recClient.List(ctx, uid)
if err != nil {
    metrics.DegradeTotal.WithLabelValues("recommend").Inc()
    recommend = []Item{}
}
return Page{Profile: profile, Recommend: recommend}, nil

上线检查

  • 核心/非核心依赖有明确清单。
  • fallback 结果符合业务语义。
  • 降级次数有报警阈值。
声明:本文转载于:Golang学习网专题原创 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>