微服务网关是微服务架构中最为核心和关键的组件之一,负责微服务集群中服务 API 统一暴露和出入口流量管理。举一个具体的例子,在微服务集群中可能同时存在上百个微服务,其中有些是内部依赖,有些则需要对外暴露 API,为外部客户端提供服务。如果让各个微服务自身负责 API 的暴露,那一个微服务集群可能会同时有几十个流量出入口,大大提高流量安全和流量管理的成本,同时对客户端也非常不友好。所以引入一个集中组件来统一控制 API 暴露,并负责流量的均衡和分发就是一个自然而然的选择了(事实上,服务暴露还涉及一个网络隔离的问题,不过本文主要介绍的是七层 API 网关,网络问题暂且忽略)。
相比于传统的反向代理,微服务网关有了一个职能的增强。传统的反向代理更加注重基础的路由转发和负载均衡,而 API 网关除此以外,更多的还要关注流量的治理能力和流量的观察能力。
网易基于 Envoy 的云原生网关实践
在构建函谷网关之前,集团内部实际上已经有了一些其他的 API 网关方案。比如网易传媒、严选使用的是 Kong,还有一些业务使用基于 Spring Gateway 的技术方案。但是这些 API 网关都有一些局限性,比如它们的容器化支撑能力,再比如它们的性能,又或者它们的治理能力。网易数帆最初的动机就是准备构建一个具备丰富能力、覆盖多种场景需求并兼具高性能的新 API 网关统一和替代网易集团内部的这些技术方案。