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

news2025/1/16 5:11:11

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 管理系统成为核心的发展趋势。

The API Economy Disruption and the Business of APIs,Nordic APIs

2. API 服务平台多样化

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

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

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

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

API 网关诞生背景

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

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

API economy From systems to business services

从最原始的“传输协议通讯” -> “简单的接口集成” -> “消息中间件” -> “标准 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

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/169271.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

flume整合数据到kafka,sparkStreaming消费数据,并存储到hbase和redis中

目录 1、模拟数据生成 2、flume采集数据 1、node01配置flume的conf文件 2、node02开发flume的配置文件 3、node03开发flume的配置文件 4、开发flume启动停止脚本 5、node01执行以下命令创建kafka的topic 6、启动并查看kafka的数据 3、SparkStreaming消费kafka中的数…

第二章.线性回归以及非线性回归—LASSO算法

第二章.线性回归以及非线性回归 2.13 LASSO算法 1.前期导入: 通过构造一个一阶惩罚函数获得一个精炼的模型;通过最终确定一些指标(变量)的系数为零,解释力很强 岭回归估计系数等于0的机会微乎其微,造成筛选变量困难 擅长处理具有…

如何实现根据环境切换不同配置?

在企业开发中,系统的配置信息往往会分不同的环境,如开发环境、测试环境、生产环境。当我们使用nacos做为配置中心时,一定会遇到的问题就是在应用中配置nacos的server-addr时测试环境的nacos地址和线上nacos地址如何区分的问题 拿开发环境和正…

4.4 可迭代对象(Iterable)与迭代器(Iterator)

4.4 可迭代对象(Iterable)与迭代器(Iterator) 4.4.1 可迭代(Iterable)对象 如果一个对象实现了__iter__方法,那么这个对象就是可迭代(Iterable)对象>>> #如何知道一个对象实现了那些…

STM32MP157内核移植相关bug

STM32MP157 官方Linux5.15内核移植相关bug一、主频问题二、驱动开发时的头文件缺失问题三、结语一、主频问题 在初学STM32MP157驱动开发时,笔者曾对官方最新版的Linux内核进行了移植,但是因为一些问题,导致移植后的系统存在一些bug。最近笔者…

Java学习之抽象类

目录 一、抽象类引出 二、抽象类的介绍 三、抽象类的细节 第一条 第二点 第三点 第四点 第五点 第六点 第七点 第八点 四、练习 第一题 第二题 一、抽象类引出 当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法,这个方法就是抽象方法,用…

【设计模式】创建者模式·建造者模式

学习汇总入口【23种设计模式】学习汇总(数万字讲解体系思维导图) 写作不易,如果您觉得写的不错,欢迎给博主来一波点赞、收藏~让博主更有动力吧! 一.概述 将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 …

Python实现哈里斯鹰优化算法(HHO)优化支持向量机回归模型(SVR算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 2019年Heidari等人提出哈里斯鹰优化算法(Harris Hawk Optimization, HHO),该算法有较强的全…

目标检测——day66 Scaled-YOLOv4: Scaling Cross Stage Partial Network

Scaled-Yolov4:可伸缩跨级部分网络 Scaled-YOLOv41. Introduction2. Related work2.1. Real-time object detection2.2. Model scaling(模型缩放)3. Principles of model scaling4. Scaled-YOLOv44.1. CSP-ized YOLOv44.2. YOLOv4-tiny4.3. YOLOv4-large…

上海亚商投顾:沪指缩量小幅调整 半导体与旅游股领涨

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。市场情绪沪指今日缩量小幅调整,创业板指稍显强势,多数时间红盘运行,科创50指数涨超1%。半…

springMVC讲解(上)

SpringMvc 1,简介 springmvc是spring的一个后续产品,是spring的一个子项目,是spring为表示层所开发的一整套完备的解决方案,在表示层框架经历了struct、webWork、struct2等诸多产品的历代更迭之后,目前业界普遍选择了…

JAVA就业课程,面试题大全

面试整体流程1.1 简单的自我介绍我是xxxx,工作xxx年.我先后在xxxx公司、yyyy公司工作。先后做个xxxx项目、yyyy项目。1.2 你简单介绍一下xxxx项目为了解决xxxx问题,开发了一套xxxx系统,该系统主要有那些部分组成。简单介绍项目的整体架构。参与某个模块的…

【Python学习】输入和输出

前言 往期文章 【Python学习】列表和元组 【Python学习】字典和集合 【Python学习】条件和循环 在很多时候,你会想要让你的程序与用户(可能是你自己)交互。你会从用户那里得到输入,然后打印一些结果。我们可以使用iinput和pr…

MATLAB趣味绘图-内接正六边形旋转

MATLAB趣味绘图-内接正六边形旋转 观察一下内部的正六边形大概在外部的正六边形边的四等分点的位置,通过数学平面几何知识可得边和角度的迭代关系式为: an134an−1θnθn−1arctan⁡36a_n \frac{\sqrt{13}}{4} a_{n-1} \\ \theta_n \theta_{n-1}\arcta…

金融行业数据库场景下,SmartX 超融合表现如何|性能验证与落地实践

在金融行业,数据库是一项至关重要的 IT 基础设施。作为交易和数据的主要载体,数据库往往需要在短时间内处理大量的业务数据,其可靠性、稳定性和性能将直接影响业务系统的运行状态。而在进行数据库基础架构选型时,一些客户对于超融…

C++学习笔记——类和对象

1.面向对象的三大特性:封装、继承、多态 2.对象有其属性和行为 3.具有相同性质的对象,可被抽象为类 1.封装 1.封装是C面向对象三大特性之一 2.封装的意义: (1)将属性(变量)和行为&#xff…

python学习 --- 字典基础

目录 一、什么是字典? 1、字典示意图-无序说明 2、字典实现原理 二、字典的创建 1、使用花括号 2、使用内置函数dict() 三、字典常用操作 1、字典中元素的获取 2、key的判断(存在与否) 3、字典元素的删除 4、字典元素的新增 5、获…

计讯物联智慧水务解决方案:用“智水”捍卫生命之泉

项目背景 水是生命的源泉,是城市的灵魂,是农业的命脉,是工业的基石。2022年以来,基于国家政策的引导、科技革新的驱动与供排水需求增长,智慧水务的发展突飞猛进,从信息化到数字化,再到智能化&a…

若依 ruoyi vue el-switch 列表开关状态显示有误 全部关闭的问题

后台使用int类型传状态status的值但是前端列表展示的开关状态是未开启,实际上,后台传的都是开启的状态结果应该是这样确定后台传的status值 在 el-switch 标签中是否使用了正确的值判断,比如 后台用的是字符串、布尔 或者是 数值类型&#xf…

android判断文件是否存在跳转不同activity

android studio版本:2021.2.1Patch 2例程名称:ActivityJump完成日期:2023.1.17一直在完善一个小东西,也是不断的在学习。之前做的那个桌面日历天气(老旧安卓手机发挥余热做桌面时钟摆件使用),有…