你真的了解 API 网关吗?一文说清微服务网关和企业级应用网关之差异与融合
软件架构总是在不断地演进迭代,20世纪90年代C/S架构非常流行,业务系统架构也都是单体架构的方式,系统之间数据交互非常少,随着企业的业务系统越来越多,这就会导致数据的孤岛问题,此时数据的互联互通的要求非常迫切,基于HTTP和XML的远程传输协议格式被很多广泛采用,SOA概念在2000年被IBM首次提出,确实解决了企业的很多异构系统的集成问题。
时间来到互联网时代,很多公司为了适应业务系统的灵活多变的业务需求,基于HTTP和JSON的架构风格逐渐成为企业开发的实践。SOA架构的集中式部署问题暴露,基于微服务分布式架构盛行起来,API网关作为微服务架构的核心组件,承担着所有流量的统一入口。上游业务系统不用关心安全和流控,只需要关注业务实现即可。
API网关是企业整体架构的关键的角色,他主要是增强、保障、控制对于后端微服务的调用,对所有的上游业务调用是透明的,API网关需要保证服务调用安全、高效、准确。API网关主要分为两类,一类是微服务网关,更贴近业务,一类是企业级应用网关,主要关注服务调用的流控和安全防护。
他们之间的差异点主要是以下几个方面:
1. 部署位置不同
微服务网关主要是部署在内网,作为微服务内部API的通讯。
企业级应用网关一般部署在DMZ区域或者在藏在负载均衡后面。
2. 功能侧重点不同
微服务网关主要功能:服务导流、服务自动发现和路由、服务编排、业务规则定制化开发、服务熔断、服务灰度发布。
企业级应用网关主要功能:全局性流控、统一安全认证、性能支持、负载均衡、IP黑白名单、安全防护。
3. 性能要求不同
微服务网关的性能只需要满足服务的并发要求。
企业级应用网关的性能需要在关注全局的流量和并发支持。
4. 使用场景不同
微服务网关:主要集中于微服务内部的网关调用场景。
企业级应用网关:主要是南北流量的入口,微信小程序、云端应用调用、移动APP调用、iPad平台、第三方合作伙伴,都是从外网调用内网的服务
5. 架构不同
微服务网关是微服务架构的一个基本组件,大部分互联网企业使用Zuul的开源产品,下图的架构使用的是性能和稳定性更好的Kong作为微服务的API网关。
架构如下图:
企业级应用网关主要是外部流量的统一入口,一般都是集中式部署,也会根据客户的要求按照地域、业务领域进行划分,组成企业级应用网关集群。
架构如下图:
企业级应用网关并发一般都是非常大,并要求产品具有独立性,不需要依赖于第三方使用,性能良好,很多偏互联网行业都选择Kong的开源产品,Kong社区活跃,GitHub上2万多star,CNCF中的API网关里面的其他产品也都非常不错,国内的产品有OpenResty、Orange以及最新推出的APISIX产品,性能都非常出色,不过稳定性有待验证。
微服务网关有很多产品,他们一般都和业务需求相关,并和注册服务发现产品无缝集成。业界用的最多的是Zuul以及Spring Cloud Gateway产品,由于是纯Java开发的产品,性能没有Kong产品好,所以很多互联网公司都进行了二次改造,比如:游戏、电商、彩票等,他们为了满足高并发和大流量的的需求,也会改造Kong来满足微服务网关的功能。