一、何为API网关?
APIGateway 即API网关,所有请求首先会经过这个网关,然后到达后端服务,有点类似于Facade模式。API网关作为系统接口对外的统一出口,可以减少调用方对服务实现的感知。
没有API网关时的系统结构如下图1:由图可以看出,在没有API网关作为统一出口的情况下,需要调用方自己组合各种服务,而且容易让调用方感知后端各种服务的存在。
加入API网关时的系统结构如下图2:由图可以看出,在加入了API网关之后,通过网关暴露接口给调用方,调用方可以在不感知后端服务的情况下调用服务,而且通过统一的接口,后端服务接口的变化不会影响调用方,后端服务变化可以通过网关的转换,对外仍然保持一致的风格。
二、网关的几种使用场景
2.1、面向Web App
这类场景,在物理形态上类似前后端分离,此时的Web App已经不是全功能的Web App,而是根据场景定制、场景化的App。
2.2、面向Mobile App
这类场景,移动App是后端Service的使用者,此时的APIGateway还需要承担一部分MDM(此处是指移动设备管理,不是主数据管理)的职能。
2.3、面向Partner OpenAPI
这类场景,主要为了满足业务形态对外开放,与企业外部合作伙伴建立生态圈,此时的APIGateway需要增加配额、流控、令牌等一系列安全管控功能。
2.4、面向Partner ExternalAPI
这类场景,业界提的比较少,很多时候系统的建设,都是为了满足企业自身业务的需要,实现对企业自有业务的映射。当互联网形态逐渐影响传统企业时,很多系统都会为了导入流量或者内容,依赖外部合作伙伴的能力,一些典型的例子就是使用「合作方账号登录」、「使用第三方支付平台支付」等等,这些对于企业内部来说,都是一些外部能力。此时的API GW就需要在边界上,为企业内部Service 统一调用外部的API做统一的认证、(多租户形式的)授权、以及访问控制。