让我们先来看下微服务 API 网关的作用,下图是一个简要的说明:
API 网关并非一个新兴的概念,在十几年前就已经存在了,它的作用主要是作为流量的入口,统一的处理和业务相关的请求,让请求更加安全、快速和准确的得到处理。它有以下传统的功能:
在最近几年,业务相关的流量,不再仅仅是由 PC 客户端和浏览器发起,更多的来自手机、IoT 设备等,未来随着 5G 的普及,这些流量会越来越多,同时,随着微服务架构的结构变迁,服务之间的流量也开始爆发性的增长。在这种新的业务场景下,催生了API 网关更多、更高级的功能:
一个微服务 API 网关具备了上述十几项功能,就可以让用户的服务只关心业务本身,而和业务实现无关的功能,比如服务发现、服务熔断、身份认证、限流限速、统计、性能分析等,就可以在独立的网关层面来解决。从这个角度来看,API 网关既可以替代 Nginx 的所有功能,来处理南北向的流量,也可以完成 Istio 控制面和 Envoy 数据面的角色,来处理东西向的流量。
正因为微服务 API 网关的地位如此重要,所以它一直处于兵家必争之地,传统的 IT 巨头在这个领域很早就都有布局,比如谷歌、CA、IBM、红帽、salesforce、以及 AWS、阿里云等公有云厂商。
这些闭源的商业产品,它们的功能都很完善,覆盖了 API 的设计、多语言 SDK、文档、测试和发布等全生命周期管理,并且提供 SaaS 服务,有些还与公有云做了集成,使用起来非常方便,但同时也带来两个痛点:
所以我们更偏重于开源的 API 网关方案,比如 Kong、APISIX 和 Trk 等。这些 API 网关是从云原生软件基金会(CNCF)的全景图中摘选的:
下面是各个 API 网关多个角度的对比结果:
从中我们可以看出,Kong 和 APISIX 都是非常好的选择。如果你有其他推荐的 API 网关,或者有更多的观点,欢迎留言。