企业级API网关的设计
Table table of Contents
-
背景
-
作用
-
隔离
-
解耦
-
脚手架
-
-
带来的好处
-
企业级API网关需要具备的条件
-
企业环境下,API网关需要考虑哪些要素
-
-
业界常用的API网关方案
-
如何设计一个好的企业级API网关产品
-
网关的高性能设计
-
-
网关的高可用设计
背景
是出现在系统边界上的一个面向API的、串行集中式的强管控服务
API网关的流行,源于近几年来,移动应用与企业间互联需求的兴起。移动应用、企业互联,使得后台服务支持的对象,从以前单一的Web应用,扩展到多种使用场景,且每种使用场景对后台服务的要求都不尽相同。这不仅增加了后台服务的响应量,还增加了后台服务的复杂性。随着微服务架构概念的提出,API网关成为了微服务架构的一个标配组件。
作用
-
第一类作用是隔离作用,作为企业系统边界,隔离外网系统与内网系统。
-
第二类作用是解耦作用,通过解耦,使得微服务系统的各方能够独立、自由、高效、灵活地调整,而不用担心给其他方面带来影响。
-
第三类作用是脚手架作用,提供了一个地点,方便通过扩展机制对请求进行一系列加工和处理。
隔离
API网关部署在防火墙外面,起到一层挡板作用,内部系统只接受API网关转发过来的请求。网关通过白名单或校验规则,对访问进行了初步的过滤。相比防火墙,这种软件实现的过滤规则,更加动态灵活。
解耦
有了API网关这一层,可以很好的解耦各方的相互依赖关系,让各方更加专注自己的目标。
-
解耦功能与非功能
-
解耦客户端与服务提供者
-
网关层是否需要实现服务的编排? no
脚手架
网关层除了请求的路由、转发外,还需要负责安全、鉴权、限流、监控等。这些功能的实现方式,往往随着业务的变化不断调整。
带来的好处
-
网关层对外部和内部进行了隔离,保障了后台服务的安全性。
-
对外访问控制由网络层面转换成了运维层面,减少变更的流程和错误成本
-
减少客户端与服务的耦合,服务可以独立发展。通过网关层来做映射。
-
通过网关层聚合,减少外部访问的频次,提升访问效率。
-
节约后端服务开发成本,减少上线风险。
-
为服务熔断,灰度发布,线上测试提供简单方案。
-
便于扩展。
企业级API网关需要具备的条件
应对大量的对外访问,另一方面,还要给对内的服务提供一定的安全保障。
除此之外,企业提供的API服务多种多样,API网关要能够对这些API的全生命周期进行便捷的管理,例如服务发布、调整、下架、计费、监控等。
企业环境下,API网关需要考虑哪些要素
-
安全性问题
-
性能问题
-
高可用问题
-
扩展性问题
-
API高效运维的问题
-
API全生命周期管理的问题
业界常用的API网关方案
-
Nginx+ Lua
-
SpringCloud Zuul
-
MashapeKong
如何设计一个好的企业级API网关产品
API 生命周期管理功能
开发和使用支持功能
安全防护功能
流量控制功能
请求管理功能
API交易功能
网关的高性能设计
网关的高性能设计->事件驱动的并发模型(nio)
网关的高可用设计
1、无状态设计原则
2、优雅下线原则
3、Slow start特性