一般来说,API网关有四大职能:
- 请求接入:作为所有API接口服务请求的接入点,管理所有的接入请求
- 业务聚合:作为所有后端业务服务的聚合点,所有业务服务都可以在这里被调用
- 中介策略:实现安全、验证、路由、过滤、流控、缓存等策略,进行一些必要的中介处理
- 统一管理:提供配置管理工具,对所有API服务的调用生命周期和相应的中介策略进行统一管理
如果对上述目标进入更深入的思考,则可以分为流量网关和业务网关。
开源网关对比
SpringCloudGateway | Zuul2 | OpenResty | Kong | |
限流 |
可以通过IP、用户、集群限流,提供了相应的接口进行扩展 |
可以通过配置文件配置集群限流和单服务器限流,也可以通过Filter实现限流扩展 | 需要Lua开发 |
根据秒、分、时、天、月、年,根据用户进行限流。可以二次开发 |
鉴权 | 普通鉴权、OAuth2.0 | Filter中实现 | 需要Lua开发 | 普通鉴权、Key Auth鉴权、HMAC、Oauth2.0 |
监控 | Gateway Metrics Filter | Filter中实现 | 需要开发 | 可上报datadog,请求数据量、应答数据量、接收和发送的时间间隔、状态码数量、Kong内运行时间 |
易用性 | 简单易用 | 参考资料较少 | 简单易用,但是需要Lua开发 | 简单易用,API转发通过管理员接口配置,开发需要Lua脚本 |
可维护性 | 扩展性强、易配置 | 可维护性较差 | 可维护性较差,将来维护需要大量Lua脚本 | 可维护性较差,将来维护需要大量Lua脚本 |
成熟度 | 社区成熟,但是Gateway资源较少 | 资料较少 | 成熟,资料多 | 相对成熟,插件开源 |