一 背景介绍
下图是我从网络上找到的一个微服务架构的简单架构图,如图可见 API Gateway 在其中起到一个承上启下的作用,是关键组件。
图片来源于网络
在更通用的场景下我们会使用 NGINX 这样的软件做前置,用来处理SLB负载均衡过来的流量,作用是反向代理、集群负载均衡、转发、日志收集等功能。
然后再将 NGINX 的请求 proxy 到 API Gateway 做统一网关处理。
在上面的这个场景下 API Gateway 可以包含以下功能:
-
安全
-
限流
-
缓存
-
熔断
-
重试
-
负载
-
反向路由
-
认证、鉴权
-
日志收集和监控
-
其他
熟悉 NGINX 的朋友应该可以看出来,上面列出的这些功能和 NGINX 的部分功能是重合的,不过由于架构结构不同,在上面我提到的场景中,即 NGINX 在前 API gateway 在后的结构中,他们两者关注的维度也不一样,所以即使有重合也正常。
二 架构调整
下图是我基于云原生微服务架构设计的架构图其中前端流量是通过 SLB -> NGINX -> API Gateway 再到具体服务。