系统设计之API网关
系统设计之API网关
作为请求的流量入口,承担着安全,限流,熔断降级,监控,日志,鉴权等功能
- 接入层网关, 主要负责路由,限流,日志,缓存等, 主要承载着将请求路由到各个应用网关
- 应用层网关,不同微服务不同技术栈,路由,超时,重试,熔断等
service mesh
API 网关被部署为业务解决方案的一部分,被外部的服务发现,处理纵向的流量(面对外部客户端),但是,Service Mesh 是用来处理横向流量(在不同的微服务之间)。
解决方案
- 基于Nginx+Lua+ OpenResty的方案,可以看到Kong,orange都是基于这个方案--
- Kong kong是基于Nginx+Lua进行二次开发的方案, https://konghq.com/
- Netflix Zuul,zuul是spring cloud的一个推荐组件,https://github.com/Netflix/zuul
优点
- 聚合接口使得服务对调用者透明,客户端与后端的耦合度降低
- 聚合后台服务,节省流量,提高性能,提升用户体验
- 提供安全、流控、过滤、缓存、计费、统计、监控等 API 管理功能
潜在问题
- 可能产生的单点故障或者瓶颈
- 由于通过 API 网关进行了额外的网络跳转以及复杂性风险,响应时间增长了。