系统设计之API网关

系统设计之API网关

作为请求的流量入口,承担着安全,限流,熔断降级,监控,日志,鉴权等功能

  • 接入层网关, 主要负责路由,限流,日志,缓存等, 主要承载着将请求路由到各个应用网关
  • 应用层网关,不同微服务不同技术栈,路由,超时,重试,熔断等

Screen Shot 2020-09-14 at 1.58.07 PM

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 网关进行了额外的网络跳转以及复杂性风险,响应时间增长了。