工作几年了,API 网关还不懂?

API 网关的选型和持续集成 2019 年 8 月 31 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·成都站,APISIX 作者温铭在活动上做了《 API 网关的选型和持续集成 》的分享。 OpenResty x Open Talk 全国巡回沙龙是由 OpenResty 中国社区、又拍云发起,邀请业内资深的 OpenResty 技术专家,分享 OpenResty 实战... 阅读详情

点击上方“芋道源码”,选择“设为星标”

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 8:55 更新文章,每天掉亿点点头发...

源码精品专栏

 

来源:jianshu.com/p/9fab0982c6bb


翻译一篇API网关的文章,介绍了其三种角色:API管理、集群ingress网关、API网关模式,最后还讲了与service mesh的关系,通过此文可以更全面的理解API网关的作用。

原文:API Gateways are going through an identity crisis

这些年来,API网关正在经历一些身份危机。

  • 它们是否是集中的、共享的资源,从而促进了API对外部实体的暴露与治理?

  • 它们是集群入口(ingress)哨兵,从而可以严格控制哪些用户流量进入或离开集群吗?

  • 或者它们根据自己拥有的客户端类型,使用某种API结合胶水来更简洁地表达API?

  • 当然,房间里的大象和我经常听到的一个问题:“服务网格会使API网关过时吗?

房间里的大象:英语习语,指的是一些虽然显而易见,但却由于可能造成尴尬、争执、触及敏感或禁忌等原因被人刻意忽视的事情。

一些背景

随着技术发展日新月异,整个行业通过技术和架构模式进行快速洗牌,如果你说“所有这些都使我头大”,也可以理解。在本文中,我希望总结出“ API网关”的不同身份,阐明公司中的哪些群体可以使用API网关(他们正在尝试解决的问题),并重新关注这些首要原则。理想情况下,在本文结束时,您将更好地了解API基础架构在不同层级、对不同团队的作用,同时明白如何从每个层级获得最大价值。

在深入探讨之前,让我们先明确API一词的含义。

我对API的定义:

一个明确定义和目的型接口,通过网络调用,使软件开发人员能够以受控且方便的方式,对组织内的数据和功能进行编程访问。

这些接口抽象了实现它们的技术架构细节。对于这些设计的网络端点,我们希望获得一定程度的文档、使用指南、稳定性和向后兼容性。

相反,仅仅因为我们可以通过网络与另一软件进行通信,并不一定意味着远程端点就是符合此定义的API。许多系统相互通信,但是通信发生更加随意,并在与耦合和其他因素之间进行权衡。

我们创建API来为业务的各个部分提供周全的抽象,以实现新的业务功能以及偶然的创新。

在谈论API网关时,首先要提到的是API管理。

API管理

许多人从API管理的角度考虑API网关。这是公平的。但是,让我们快速看一下此类网关的功能。

通过API Management,我们试图解决“何时公开现有的API供他人使用”的问题,如何跟踪谁使用这些API,实施关于允许谁使用它们的政策,建立安全流程来进行身份验证和授权许可,同时创建一个服务目录(该目录可在设计时使用以促进API使用,并为有效治理奠定基础)。

我们想解决“我们拥有要与他人共享,但要按我们的条款共享这些现有的、经过精心设计的API ”的问题。

API管理也做得很好,它允许用户(潜在的API使用者)进行自助服务,签署不同的API使用计划(请考虑:在给定时间范围内,在指定价格点上,每个端点每个用户的调用次数)。有能力完成这些管理功能的基础架构就是网关(API流量所经过的)。在网关层,我们可以执行身份验证,速率限制,指标收集,其它策略执行等操作。

API Management Gateway

基于API网关的API管理软件示例:

  • Google Cloud Apigee

  • Red Hat 3Scale

  • Mulesoft

  • Kong

在这个级别上,我们考虑的是API(如上定义)是如何最好地管理和允许对其进行访问。我们不是在考虑服务器,主机、端口、容器甚至服务(另一个定义不明确的词)。

API管理(以及它们相应的网关)通常被作为由“平台团队”、“集成团队”或其它API基础架构团队所拥有的、严格控制的共享基础架构。

需要注意的一件事:我们要小心,别让任何业务逻辑进入这一层。如前一段所述,API管理是共享的基础结构,但是由于我们的API流量经过了它,因此它倾向于重新创建“大包大揽的全能型”(认为是企业服务总线)网关,这会导致我们必须与之协调来更改我们的服务。从理论上讲,这听起来不错。实际上,这最终可能成为组织的瓶颈。有关更多信息,请参见这篇文章:具有ESB,API管理和Now…Service Mesh的应用程序网络功能?

集群入口

为了构建和实现API,我们将重点放在代码、数据、生产力框架等方面。但是,要想使这些事情中的任何一个产生价值,就必须对其进行测试,部署到生产中并进行监控。当我们开始部署到云原生平台时,我们开始考虑部署、容器、服务、主机、端口等,并构建可在此环境中运行的应用程序。我们可能正在设计工作流(CI)和管道(CD),以利用云平台快速迁移、更改、将其展示在客户面前等等。

在这种环境中,我们可能会构建和维护多个集群来承载我们的应用程序,并且需要某种方式来访问这些群集中的应用程序和服务。以Kubernetes为例思考。我们可能会通过Kubernetes Ingress来访问Kubernetes集群(集群中的其它所有内容都无法从外部访问)。这样,我们就可以通过定义明确的入口点(例如域/虚拟主机、端口、协议等),严格控制哪些流量可以进入(甚至离开)我们的集群。

在这个级别上,我们可能希望某种“ingress网关”成为允许请求和消息进入群集的流量哨兵。在这个级别上,您的思考更多是“我的集群中有此服务,我需要集群外的人能够调用它”。这可能是服务(公开API)、现有的整体组件、gRPC服务,缓存、消息队列、数据库等。有些人选择将其称为API网关,而且实际上可能会做比流量的入口/出口更多的事情,但重点是这个层级的问题是属于集群操作级别的。

Cluster Ingress Gateway

这些类型的ingress实现的示例包括:Envoy Proxy 及其基础上的项目包括:

  • Datawire Ambassador

  • Solo.io Gloo

  • Heptio Contour

基于其他反向代理/负载均衡器构建的其它组件:

  • HAProxy

  • OpenShift’s Router (based on HAProxy)

  • NGINX

  • Traefik

  • Kong

此层级的集群入口控制器由平台团队操作,但是,这部分基础架构通常与更加去中心化的、自助服务工作流相关联(正如您对云原生平台所期望的那样)。参见The “GitOps” workflow as described by the good folks at Weaveworks

API网关模式

关于“ API网关”一词的另一种扩展是我在听到该术语时通常想到的,它是与API网关模式最相似的。Chris Richardson在其“微服务模式”一书第8章很好地介绍了这种用法。我强烈建议您将此书用于此模式和其他微服务模式学习资料。可在他的microservices.io网站API Gatway Pattern可以进行快速浏览。简而言之,API网关模式是针对不同类别的消费者来优化API的使用。这个优化涉及一个API间接访问。您可能会听到另一个代表API网关模式的术语是“前端的后端”,其中“前端”可以是字符终端(UI)、移动客户端、IoT客户端甚至其它服务/应用程序开发人员。

在API网关模式中,我们明显简化了一组API的调用,以模拟针对特定用户、客户端或使用者的“应用程序”内聚API。回想一下,当我们使用微服务构建系统时,“应用程序”的概念就消失了。API网关模式有助于恢复此概念。这里的关键是API网关,一旦实现,它将成为客户端和应用程序的API,并负责与任何后端API和其他应用程序网络端点(不满足上述API定义的端点)进行通信。

与上一节中的Ingress控制器不同,此API网关更接近开发人员的视角,而较少关注哪些端口或服务暴露以供集群外使用的方面。此“ API网关”也不同于我们管理现有API的API管理视角。此API网关将对后端的调用聚合在一起,这可能会公开API,但也可能是与API描述较少的东西,例如对旧系统的RPC调用,使用不符合“ REST”的协议的调用(如通过HTTP但不使用JSON),gRPC,SOAP,GraphQL、websockets和消息队列。这种类型的网关也可用来进行消息级转换、复杂的路由、网络弹性/回退以及响应的聚合。

如果您熟悉REST API的Richardson Maturity模型,就会发现相比Level 1–3,实现了API网关模式的API网关来集成了更多的Level 0请求(及其之间的所有内容)。

https://martinfowler.com/articles/richardsonMaturityModel.html

这些类型的网关实现仍需要解决速率限制、身份验证/授权、断路、度量收集、流量路由等问题。这些类型的网关可以在集群边缘用作集群入口控制器,也可以在集群内部用作应用程序网关。

API Gateway Pattern

此类API网关的示例包括:

  • Spring Cloud Gateway

  • Solo.io Gloo

  • Netflix Zuul

  • IBM-Strongloop Loopback/Microgateway

也可以使用更通用的编程或集成语言/框架(例如:

  • Apache Camel

  • Spring Integration

  • Ballerina.io

  • Eclipse Vert.x

  • NodeJS

由于这种类型的API网关与应用和服务的开发紧密相关,因此我们希望开发人员能够参与帮助指定API网关公开的API,了解所涉及的任何聚合逻辑以及快速测试和更改此API基础架构的能力。我们还希望运维人员或SRE对API网关的安全性、弹性和可观察性配置有一些意见。这种层级的基础架构还必须适应不断发展的、按需的、自助服务开发人员工作流。可以通过查看GitOps模型获取更多这方面信息。

进入服务网格(Service Mesh)

在云基础架构上运行服务架构的一部分难点是,如何在网络中构建正确级别的可观察性和控制。在解决此问题的先前迭代中,我们使用了应用程序库和希望的开发人员治理来实现此目的。但是,在大规模和多种开发语言环境下,服务网格技术的出现提供了更好的解决方案。服务网格通过透明地实现为平台及其组成服务带来以下功能:

  • 服务到服务(即东西向流量)的弹性

  • 安全性包括最终用户身份验证、相互TLS、服务到服务RBAC / ABAC

  • 黑盒服务的可观察性(专注于网络通信),例如请求/秒、请求延迟、请求失败、熔断事件、分布式跟踪等

  • 服务到服务速率限制,配额执行等

精明的读者会认识到,API网关和服务网格在功能上似乎有所重叠。服务网格的目的是通过在L7透明地解决所有服务/应用程序的这些问题。换句话说,服务网格希望融合到服务中(实际上它的代码并没有嵌入到服务中)。另一方面,API网关位于服务网格以及应用程序之上(L8?)。服务网格为服务、主机、端口、协议等(东西向流量)之间的请求流带来了价值。它们还可以提供基本的集群入口功能,以将某些此功能引入南北向。但是,这不应与API网关可以带来北/南流量的功能相混淆。(一个在集群的南北向和一个是在一组应用程序的南北向)

Service Mesh和API网关在某些方面在功能上重叠,但是在它们在不同层面互补,分别负责解决不同的问题。理想的解决方案是将每个组件(API管理、API网关、服务网格)合适的安置到您的解决方案中,并根据需要在各组件间建立良好的边界(或在不需要时排除它们)。同样重要的是找到适合去中心化开发人员和运营工作流程的这些工具实现。即使这些不同组件的术语和标识存在混淆,我们也应该依靠基本原理,并了解这些组件在我们的体系结构中带来的价值,从而来确定它们如何独立存在和互补并存。



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:

已在知识星球更新源码解析如下:

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 20 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
微服务架构下API网关设计与实现 作者:禅与计算机程序设计艺术 1.简介 背景介绍 近几年随着互联网应用的高速发展、互联网公司业务的不断扩张、移动互联网、物联网等新兴技术的崛起,越来越多的公司和组织选择了使用微服务架构模式进行开发。微服务架构将单体应用拆分成多个小型服务,每个服务都可以独立运行、独立 阅读详情

相关推荐

深入剖析QWEN 2.5模型架构:从GQA到RoPE的技术实现

本文深入解析了QWEN 2.5模型架构,重点介绍了其创新的GQA(分组查询注意力)和RoPE(旋转位置编码)技术实现。通过详细代码解读,展示了这些技术如何提升模型的计算效率和长文本处理能力,适用于代码生成和数学推理等任务。文章还提供了实践部署建议和调优经验,帮助开发者更好地应用这一先进模型。

weixin_42548816的博客 390

JAVA微服务_网关

自定义的Filter选择合适的接口实现官网关于全局过滤器的例子。注意全局过滤器不需要在配置文件里配置到某一服务上了,因为全局有效;//放行 } //过滤器顺序,按自然数顺序,-1为在所有fliter之前 @Override public int getOrder() {return - 1;} }也可以直接在类上加@Component注解(ruoyi的做法)非全局的filter要进行配置,将自定义filter的类名写上。

阿巴阿巴 3797

kaggle——销量预测的baseline(M5 Forecasting - Accuracy)

前言 在刚刚结束的kaggle比赛M5 Forecasting - Accuracy中,因为是第一次参加,笔者也是花了大量的时间和精力在上面,最终拿到一块银牌(所以我拿到了大学第一个考试挂科。。。求求电磁场老师高抬贵手给点平时分放我一马吧。。。早上看到kaggle成绩异常兴奋,中午考完直接爆炸=。=),当然运气占了很大因素,这次比赛private leadboard的shake up非常大,排名波动几千名都存在的。笔者运气不错,是向上的shake:)。这里总结一下销量预测的基本流程。 从下图可以看到这次比

weixin_43901221的博客 5432

微服务中API网关的作用是什么?

API网关的作用?

长林攻城狮的博客 3200

DeepSeek-V4 本地部署实战指南:4套方案从入门到企业级(附RTX 5090实测数据)

V4-Flash 便宜是便宜,输入 1 元/M token,输出 2 元/M token,但量大了还是肉疼。V4-Pro 更离谱,输入 12 元/M token,输出 24 元/M token,这价格要是天天调用,月账单轻松破万。用 4-bit 量化跑 V4-Flash,显存占用 ~22GB,延迟 ~80ms/token,并发能到 2-3 路。换句话说,同样的硬件,能跑更长的上下文、更大的并发。Flash 是「小而美」,一张 RTX 4090/5090 就能跑,门槛低,效果够用。

datayx的文章 9851

实战:RK3568 Android14 调试 ES8388 音频驱动 (MIC 篇)

这个板子的MIC设计使用了硬件自动切换方案,极大简化了软件层面的逻辑。我们不需要根据耳机插拔事件去编写复杂的路由切换代码,只需要守住 LIN1/RIN1 这一个入口,配置好增益,剩下的交给那颗 SGM3157 芯片即可。祝您的录音功能调试顺利!

qq_33427070的博客 1680

【Java】微服务——Gateway网关

过滤器的作用是什么?① 对路由的请求或响应做加工处理,比如添加请求头② 配置在路由下的过滤器只对当前路由的请求生效defaultFilters的作用是什么?① 对所有路由都生效的过滤器需求:定义全局过滤器,拦截请求,判断请求的参数是否满足下面条件:参数中是否有authorization,authorization参数值是否为admin如果同时满足则放行,否则拦截实现:import org。

qq_59708493的博客 5104

【WRF编译-Lab1】使用自动脚本编译WRF:错误总结

WRF编译过程及错误总结

WW、forever的博客 83

Java知识点整理 10 — 网关

Spring Cloud Gateway 网关相关知识点。

konghaoran的博客 2589

RHEL 8 与 RHEL 7 与 RHEL 6 的比较,RHEL 8强到离谱!

Red Hat Enterprise Linux(RHEL)是企业级 Linux 发行版中最受欢迎的操作系统之一。RHEL 为服务器和企业环境提供了高性能、稳定性和安全性,适用于各种数据中心和云计算平台。自 RHEL 6 以来,Red Hat 对其操作系统进行了多次重大更新,RHEL 7 和 RHEL 8 带来了许多新的特性、工具和架构变化。

网络技术联盟站 708

固定效应模型-以stata为工具

固定效应模型(Fixed Effects Model)是一种面板数据分析方法,通过引入个体固定效应来控制个体间的异质性,并更准确地估计解释变量对因变量的影响。它在许多经济、社会科学和健康研究中被广泛应用。

侯小啾技术博客 2839

SpringCloud-网关路由(GateWay、Predicat、GlobalFilter)

SpringCloud-网关路由 GateWay GatWay即网关,他就像守门的安保人员,他是整个微服务架构的组成部分,主要功能是为服务提供过滤、熔断、限流、重试等功能 基本介绍 SpringCloud Gateway 使用的Webflux中的reactor-netty响应式编程组件,底层使用了Netty通信框架,使得Gateway 在高并发下有很好的性能,若想了解Netty框架可以阅读我的专栏JAVA网络编程 GateWay能干什么? 反向代理、鉴权、流量控制、熔断、日志监控等 三大核心 Ro

JolyouLu的博客 3409

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

工作几年了,API 网关还不懂?

从应用程序架构的变迁过程可以发现,随着业务多变性、灵活性的不断提高,应用程序需要以更加灵活的组合来应对。

AlbenXie的博客 516

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

使用istio服务网格作为api网关

API网关作为客户端访问后端的入口由来已久,主要是管理“南北”流量,近几年开始流行Service Mesh架构,主要是管理内部系统,(即“东西”流量),而像 Istio 这样的服务网格也有内置网关,可以将系统内外的流量置于统一控制之下。这通常会给 Istio 的初次用户带来困惑。Service Mesh 和 API Gateway 是什么关系?Istio 的网关是如何工作的?在 Istio 网格中暴露服务的方式有哪些?这篇文章给你答案。

Go与Python双剑合一 1154

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

各种企业级API网关的设计对比

         1.1  API网关背景介绍   API Gateway(APIGW / API 网关),顾名思义,是出现在系统边界上的一个面向API的、串行集中式的强管控服务,这里的边界是企业IT系统的边界,主要起到隔离外部访问与内部系统的作用。在微服务概念的流行之前,API网关的实体就已经诞生了,例如银行、证券等领域常见的前置机系统,它也是解决访问认证、报文转换、访问统计等问题的。 ...

ronon77的专栏 3353

企业级API网关的设计

转载本文需注明出处:微信公众号EAWorld,违者必究。本文目录:一、网关简介二、网关的作用和价值三、企业级API网关需要具备的条件四、业界常用的API网关方案五、如何设...

低代码开发,数据,中间件,企业架构原创技术分享 1746

深入浅出聊聊企业级API网关

https://mp.weixin.qq.com/s?__biz=MzI4MTY5NTk4Ng==&mid=2247489382&idx=1&sn=18f4b4f6129177190713220eaff8da9a&chksm=eba414fbdcd39dedd6c7a8f96468c381103e1cbae3ed6f53bc8d9382a98a26afd6...

411

一文搞懂网关选型,看谁还不懂!

互联网在近几年突飞猛进的发展,流量随着时间推移不断增长,而且互联网企业也喜欢玩一些新花样,将服务设置的更加细致,业务场景越来越复杂,这就让微服务框架不断普及。现如今微服务基本上可以是我们...

Java技术栈,分享最主流的Java技术 1395
上一篇: 我是培训机构出身的程序员,不敢告诉任何人
下一篇: Nacos 2.0 正式发布,性能大幅提升 10 倍!
公众号-芋道源码
博客等级 码龄10年 1631粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值