API网关服务综述

时间:2024-03-16 09:18:20

API网关服务综述

从以下几个方面对互联网上出现的API网关服务进行介绍:

 

1.  API 网关的分类

2.  网关的架构

3.  对具备服务网关能力(Nginx / Orange/kong / API Umbrella/DJ / Amazon /Netflix/阿里)的产品介绍

 

1. API网关的分类

API GW的定位主要有4类:

1面向Web App

在物理形态上类似前后端分离,此时的Web App已经不是全功能的Web App,而是根据场景定制、场景化的App。

2面向Mobile App

移动App是后端Service的使用者,此时的API GW还需要承担一部分MDM(此处是指移动设备管理,不是主数据管理)的职能。

3面向Partner OpenAPI

为了满足业务形态对外开放,与企业外部合作伙伴建立生态圈,此时的API GW需要增加配额、流控、令牌等一系列安全管控功能。当互联网形态逐渐影响传统企业时,很多系统都会为了导入流量或者内容,依赖外部合作伙伴的能力,一些典型的例子就是使用「合作方账号登录」、「使用第三方支付平台支付」等等,这些对于企业内部来说,都是一些外部能力。此时的API GW就需要在边界上,为企业内部Service 统一调用外部的API做统一的认证、(多租户形式的)授权、以及访问控制。

API网关服务综述

图1.1 API网关服务

 

(4)面向IoT- SmartDevice 

物联网网关:支持设备从工业控制协议、小无线向IP协议的转换,以便能够连入互联网、协议转换

物联网网中的API网关服务:服务请求的路由、安全验证、请求流量控制、数据流分析

2. 网关的架构 

API网关服务综述

                    图2.1 中心化    

API网关服务综述                               

 图 2.2去中心化

 

 

二者间的比较:

成熟  存在大量的开源的工具   —————             性能和可靠性高

可控性高                     —————       实现上比较复杂、可扩展性低

比较安全                     —————

 

3. 具备API网关服务能力的开源项目介绍

3.1 Nginx系列

Nginx / Orange/kong / APIUmbrella 利用Nginx反向代理的功能,扩展开发了一些面向非业务功能的功能,主要是管理、监控、安全、统计四个方面。

海视云那边选择Nginx作为API网关服务器应该是出于以下2点考虑:

(1)易部署

      Nginx 提供通过操作配置文件的方式来实现反向代理和负载均衡,因为比较成熟,所以技术实现上简单、可靠

(2)高可用

性能稳定、低系统资源的消耗

 

Nginx用做API网关服务器实现服务请求的路由非常优秀,但是他对于非业务功能的支持比较匮乏,原生态的代理功能在安全、监控等领域不支持。因此kong诞生了,kong提供了19个插件式的功能实现,涵盖广泛,像权限控制、流量控制、身份认证、日志等功能,但缺少对报文转换的能力(为避免产生业务场景的耦合,更通用)。

 

3.2  Kong

 

Kong 是由Mashape公司开发的一款APIGateway的软件,Kong是基于nginx开发,有两个组件:Server用来接收客户端的API请求,Cassandra来存储操作数据。Kong支持水平扩展,通过前置的负载均衡器向这些机器分发请求,根据文档描述,两个Cassandra节点就足以支撑绝大多数情况,但如果网络非常拥挤,可以考虑适当增加更多节点。Kong中最诱人的一个特性是可以通过插件扩展已有功能,这些插件在API请求响应循环的生命周期中被执行。插件使用Lua编写,而且Kong还有如下几个基础功能HTTP基本认证、**认证、CORS( Cross-origin Resource Sharing,跨域资源共享)、TCP、UDP、文件日志、API请求限流、请求转发以及nginx监控。

Kong支持集群方案,可以加入多个Kong节点来保障服务的高可用性以及提高负载的能力,多个kong组成的集群需要使用共享数据库CassandraPostgreSQL,以保证集群数据的一致性。

 API网关服务综述

图3.1

3.2 其他

AmazonAPI Gateway

一种完全托管的服务,可以帮助开发者轻松创建、发布、维护、监控和保护任意规模的 API。只需在 AWS 管理控制台中点击几下,您便可以创建可充当应用程序“前门”的 API,从后端服务访问数据、业务逻辑或功能,例如基于 Amazon Elastic Compute Cloud (Amazon EC2)运行的工作负载、基于 AWS Lambda 运行的代码或任意Web 应用。Amazon API Gateway 负责管理所有任务,涉及接受和处理成千上万个并发 API 调用,包括流量管理、授权和访问控制、监控以及 API 版本管理。Amazon API Gateway 没有最低费用或启动成本,您只需为收到的 API 调用和传输出去的数据量付费。

Netflix 自主研发的 Zuul:(able那边的也应该算是自主研发的)

    Zuul采用PRPE模型,最主要是功能就是为Netflix自身的核心视频业务,并且它开源的也是业务方面相关的技术,所以说他更应该是一个业务平台,不是技术平台,参考意义不大。

阿里及其他的服务提供商:

提供API Gateway托管服务,辅助用户将能力、服务、数据以接口的形式开放给合作伙伴。提供防攻击、防重放、请求加密、身份认证、权限管理、流量控制等多重手段保证 API 安全,降低 API 开放风险。

提供 API 定义、测试、发布、下线等全生命周期管理,并生成 SDKAPI 说明文档,提升 API 管理、迭代的效率。提供便捷的监控、报警、分析、API市场等运维、运营工具,降低 API 运营、维护成本。

 

Kubernetes(k8s)

Google开源的容器集群管理系统。Service提供了一个统一的服务访问入口以及服务代理和发现机制,用户不需要了解后台Pod是如何运行。Service Controller-管理维护Service,提供负载以及服务代理。