1. API 网关诞生背景
前言
API 是什么
API 网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API 网关封装了系统内部架构,为每个客户端提供一个定制的 API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。API 网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。通常,网关也是提供 REST/HTTP 的访问 API。服务端通过 API-GW 注册和管理服务。
1. API 开放数量不断增加
2. API 服务平台多样化
- 浏览器
- IOS
- Android
- macOS
- Windows
- Linux
- IOT
- 其他移动端
- 小程序
- 终端设备(如智慧零售、工业的终端等)
- ......
3. 逐步替换原有企业的服务模式,API 即商品
API 网关诞生背景
随着 API 的整体趋势发展,每个时期都面临着不同的挑战,架构也随之变化,具体如下图:
- 1960-1980:阿帕网、ATTP、TCP
- 1980-1990:点对点
- 1990-2000:消息中间件、ESB(企业服务总线,Enterprise service bus),SOA(面向服务的架构)
- 2000 至今:Integration as a service,RESTful services,API 管理,云上编排
如果没有合适的 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 生成
- HTTPS
- 可热重启
- 无状态横向扩展
3. API 网关的用途
OpenAPI
Open 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
微服务网关
对于定位为「微服务网关」的 API 网关,业务有多种实现方式:
Service Mesh
通用反向代理
-
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 的实现
其他方案
- 基于 Netty、非阻塞 IO 模型。
- 基于 Node.js 的方案。这种方案是应用了 Node.js 的非阻塞的特性。
- 基于 Java,如 MuleSoft