API 网关的功能用途及实现方式

2023-02-22,,

1. API 网关诞生背景

前言

API 经济生态链已经在全球范围覆盖, 绝大多数企业都已经走在数字化转型的道路上,API 成为企业连接业务的核心载体, 并产生巨大的盈利空间。快速增长的 API 规模以及调用量,使得企业 IT 在架构上、模式上面临着更多的挑战。

API 是什么

API 网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API 网关封装了系统内部架构,为每个客户端提供一个定制的 API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。API 网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。通常,网关也是提供 REST/HTTP 的访问 API。服务端通过 API-GW 注册和管理服务。

1. API 开放数量不断增加

毋庸置疑,随着企业的数据化进展,微服务改造,不同领域的 API 层出不穷,早在 2014 年 ProgrammableWeb 便预测 API 矢量可达到 100,000 到 200,000,并会不断增长。API 开发数量的增加给边缘系统带来机会,也随即演变了 API 网关的出现。大规模的 API 管理系统成为核心的发展趋势。

2. API 服务平台多样化

最初的 API 主要针对不同单体应用的网络单元之间信息交互,现已演变到服务间快速通讯。随着人工智能 EI,IOT 的不断演进,依赖 API 的平台不断更新,如 Web,Mobile,终端等,未来将会出现更多的服务体系。包括不限于:

浏览器
IOS
Android
macOS
Windows
Linux
IOT
其他移动端
小程序
终端设备(如智慧零售、工业的终端等)
......

3. 逐步替换原有企业的服务模式,API 即商品

卖计算,卖软件,卖能力,最终的企业的销售模式会逐步转变,能力变现,释放数据价值,依托不同的 API 管理平台创造新的盈利。

API 网关诞生背景

随着 API 的整体趋势发展,每个时期都面临着不同的挑战,架构也随之变化,具体如下图:

    1960-1980:阿帕网、ATTP、TCP
    1980-1990:点对点
    1990-2000:消息中间件、ESB(企业服务总线,Enterprise service bus),SOA(面向服务的架构)
    2000 至今:Integration as a service,RESTful services,API 管理,云上编排

从最原始的“传输协议通讯” -> “简单的接口集成” -> “消息中间件” -> “标准 REST”, 可以看到 API 的发展更趋向于简洁, 集成,规范化, 这也促使更多的系统边界组件不断涌现,在承载了万亿级的 API 经济的背景下, API 网关应运而生。

如果没有合适的 API 管理工具, API 经济不可能顺利开展。 同时提出了对于 API 管理系统的生命周期定义: planning(规划), design(设计), implementation(实施), publication(发布),operation(运维), consumption(消费), maintenance(维护) and retirement of APIs(下架)

如果没有合适的 API 管理工具, API 经济不可能顺利开展。 同时提出了对于 API 管理系统的生命周期定义: planning(规划), design(设计), implementation(实施), publication(发布),operation(运维), consumption(消费), maintenance(维护) and retirement of APIs(下架)

-- Magic Quadrant for Full Life Cycle API Management,Gartner, 2016-10-27

2. API 网关核心功能

API 生命周期管理

planning(规划)
design(设计)
implementation(实施)
publication(发布)
operation(运维)
consumption(消费)
maintenance(维护)
retirement(下架)
API 网关基础功能
认证
鉴权
服务发现和集成
负载均衡
日志
链路追踪
监控
重试
限流
QoS
熔断器
映射
缓存
Header、query 字符串 等 转义
API 文档
API 测试
SDK 生成
API 多版本、多环境管理
插件
API 集中式 metrics、logging、tracing 管理
安全
HTTPS
IP 黑白名单
高可用
可热重启
高性能
可扩展性
无状态横向扩展

3. API 网关的用途

OpenAPI

企业需要将自身数据、能力等作为开发平台向外开放,通常会以 rest 的方式向外提供。最好的例子就是淘宝开放平台、腾讯公司的 QQ 开发平台、微信开放平台。

Open API 开放平台必然涉及到客户应用的接入、API 权限的管理、调用次数管理等,必然会有一个统一的入口进行管理,这正是 API 网关可以发挥作用的时候。

微服务网关

在微服务架构中,有一个组件可以说是必不可少的,那就是微服务网关,微服务网关处理了负载均衡,缓存,路由,访问控制,服务代理,监控,日志等。

API 网关在微服务架构中正是以微服务网关的身份存在。

API 中台

上述的微服务架构对企业来说有可能实施上是困难的,企业有很多遗留系统,要全部抽取为微服务改动太大,对企业来说成本太高。

但是由于不同系统间存在大量的 API 服务互相调用,因此需要对系统间服务调用进行管理,清晰地看到各系统调用关系,对系统间调用进行监控等。

API 网关可以解决这些问题,我们可以认为如果没有大规模的实施微服务架构,那么对企业来说微服务网关就是企业的 API 中台。

4. API 网关的价值

通过 API 网关,可以封装后端各种服务,以 API 的形式,提供给各方使用。API 网关产品的优势总结如下:

API 全生命周期管理:协助开发者轻松完成 API 的创建、维护、发布、监控等整个生命周期的管理。
丰富的服务治理能力:支持 API 限流,参数校验,元数据维护,SDK 生成,批量操作等能力,协助开发者高效管理服务。
可观察性:通过 API 网关,支持对调用次数,前后端错误次数等丰富监控指标的可视和告警能力;通过全面的监控告警,保证用户服务的可用性。
可运营性:支持 企业 OpenAPI 定价,账单等运营功能
服务安全:通过接入多种认证方式,确保用户 API 的访问安全性;通过严格的流量控制,避免用户服务的过载。
前后端业务解耦
多类型后端打通

5. API 网关的实现方式

主流 API 网关

Istio(以及最新出的 Envoy Gateway)
Linkerd
NGINX 及其商业版
KONG
Traefik
APISIX
RedHat 3scale
Netflix Zuul
Spring Cloud Gateway
Amazon API Gateway
阿里云 API 网关(其最新开源的 Higress 是基于 Envoy Gateway 的)
腾讯云 API 网关
MuleSoft

OpenAPI

对于定位 OpenAPI 平台的 API 网关,目前只能选择专业的 API 网关作为解决方案。

微服务网关

对于定位为「微服务网关」的 API 网关,业务有多种实现方式:

Service Mesh

典型的如 Istio,架构如下:

通用反向代理

基于 NGINX 或 NGINX + LUA + OpenResty 的实现。典型如:

Nginx 及其 商业版

NGINX Controller(API 管理、App 交付)
NGINX Plus(API Gateway,负载均衡,仪表板)
NGINX Ingress Controller
NGINX Service Mesh
KONG
Traefik
3scale

API 网关框架

Netflix Zuul,zuul 是 spring cloud 的一个推荐组件
Spring Cloud Gateway

公有云解决方案

其实公有云的解决方案也是基于以上方案的定制化开发并产品化后发布到公有云上,主流的也是基于:NGINX + LUA + OpenResty, 或者最新的可能是基于 Istio Gateway 的实现

Amazon API Gateway
阿里云 API 网关
腾讯云 API 网关

其他方案

基于 Netty、非阻塞 IO 模型。
基于 Node.js 的方案。这种方案是应用了 Node.js 的非阻塞的特性。
基于 Java,如 MuleSoft

API 网关的功能用途及实现方式的相关教程结束。

《API 网关的功能用途及实现方式.doc》

下载本文的Word格式文档,以方便收藏与打印。