010、构建企业级API网关:统一封装、治理与自动化测试
上周排查一个线上问题,凌晨三点被告警叫醒。日志显示某个微服务的响应时间从平均50毫秒飙到了3秒,但服务本身的监控一切正常。最后定位到问题出在客户端直接调用的某个第三方API上——对方服务突发抖动,导致我们整条业务链卡死。这个坑让我重新审视了当前系统里散落各处的直接API调用:没有统一出口,没有熔断隔离,出了问题只能干瞪眼。
是时候搞个企业级API网关了。
一、网关不是简单的反向代理
很多人觉得API网关就是个高级Nginx,配个路由转发就完事。这种想法在企业级场景里会吃大亏。我们需要的网关至少得干四件事:
- 把所有外部API调用收口到网关,内部服务只认网关这一个出口
- 给每个API加上身份认证、流量控制、熔断降级
- 自动记录所有调用的日志和指标,方便问题追溯
- 能对下游API做自动化健康检查,异常时自动切换
下面这段配置是我们在生产环境用的路由定义,注意看注释里的细节:
routes:-id