API网关正在经历身份危机

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

  • 它们是否是集中的共享资源,以促进对外部实体的API公开和治理?
  • 它们是集群入口哨兵,可以严格控制哪些用户流量进入或离开集群吗?
  • 还是他们根据自己拥有的客户端类型,使用某种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网关

利用API网关的API管理软件示例:

  • Google Cloud Apigee
  • 红帽3Scale
  • Mulesoft
  • Kong

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

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

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

集群入口

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

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

在这个级别上,我们可能希望某种“入口网关”成为允许请求和消息进入群集的流量哨兵。 在这个级别上,您的思考更多是“我的集群中有此服务,我需要集群外的人才能调用它”。 这可能是服务(公开API),现有的整体组件,gRPC服务,缓存,消息队列,数据库等。有些人选择将其称为API网关,而其中有些人实际上可能会做更多比流量的入口/出口要大,但重点是在集群操作级别存在此级别的问题。 随着我们倾向于部署更多集群(相对于一个单一的,高度多租户的集群),我们最终将拥有更多的入口点,并且需要这些入口点之间进行交互。

API网关

这些类型的入口实现的示例包括:

  • Envoy代理及其基础上的项目包括:
    • 数据线大使
  • HAProxy
    • 包括OpenShift的路由器
  • NGINX
  • 特拉菲克

此级别的集群入口控制器由平台团队操作,但是,这部分基础架构通常与更分散的自助服务工作流相关联(正如您对云原生平台所期望的那样)。 参见Weaveworks的好伙伴介绍的“ GitOps”工作流程

API网关模式

关于“ API网关”一词的另一种扩展是我在听到该术语时通常想到的扩展,它与API网关模式最相似。 克里斯·理查森(Chris Richardson)在第8章的“微服务模式”一书中做了很好的介绍。 可以在他的microservices.io网站上的API Gatway Pattern上找到更快速的浏览信息。简而言之,API-gateway模式是管理API,以使不同类别的消费者更好地使用。 此策展涉及一个API间接级别。 您可能会听到的另一个代表API网关模式的术语是“后端的后端”,其中“前端”可以是文字前端(UI),移动客户端,IoT客户端甚至其他服务/应用程序开发人员。

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

与上一节中的Ingress控制器不同,此API网关更接近开发人员的世界观,而不是集中在暴露给集群外使用的端口或服务上。 这个“ API网关”也不同于我们管理现有API的API管理世界观。 该API网关将对后端的调用混搭在一起,这些调用可能会暴露API,但也可能会与未描述为API的事物进行对话,例如对旧系统的RPC调用,协议与“ REST”的外观不符,例如被黑通过HTTP,gRPC,SOAP,GraphQL,websocket和消息队列的JSON。 也可以调用这种类型的网关来进行消息级转换,复杂的路由,网络弹性/后备以及响应的聚合。

如果您熟悉REST API的Richardson Maturity模型,则将调用实现API网关模式的API网关来集成比1-3级实现更多的0级请求(及其之间的所有内容)。

API网关

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

API网关

此类API网关的示例包括:

  • Spring Cloud Gateway
  • 格洛
  • Netflix Zuul
  • IBM-Strongloop回送/微网关

也可以使用更多通用的编程或集成语言/框架来构建此类网关,例如:

  • 阿帕奇骆驼
  • Spring整合
  • Ballerina
  • Eclipse Vert.x
  • 节点JS

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

启用服务网格

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

  • 服务到服务(即东西向交通)的弹性
  • 安全性包括最终用户身份验证,相互TLS,服务到服务RBAC / ABAC
  • 黑匣子服务的可观察性(专注于网络通信),例如请求/秒,请求延迟,请求失败,断路事件,分布式跟踪等
  • 服务到服务速率限制,配额执行等

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

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

API网关

我们很乐意为您服务!

也许有些人知道我非常热衷于帮助人们,尤其是在云,微服务,事件驱动的体系结构和服务网格领域。 在我的公司Solo.io中 ,我们正在帮助组织消除混乱,并以适当的级别以及成功使用它们的步伐(如果需要,更重要的是,成功地)采用网关和服务网格之类的API技术。 !)。 我们正在建设的工具,如GLOO , 东张西望 ,并SuperGloo技术类似的顶部特使代理 , GraphQL和Istio以帮助实现API网关和服务网格管理。 请直接与我们联系( @soloio_inc , http : //solo.io )或与我联系( @christianposta , blog ),以深入了解我们的愿景以及我们的技术如何为您的组织提供帮助。 在接下来的系列博客中,我们将更深入地探讨API网关模式,多个集群的困难,多服务网格的困难等等! 敬请关注!

还相关阅读:

http://blog.christianposta.com/microservices/application-network-functions-with-esbs-api-management-and-now-service-mesh/

翻译自: https://www.javacodegeeks.com/2019/01/api-gateways-going-identity-crisis.html

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

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

相关文章

通信原理速学02:随机过程

模块1 随机过程 随机过程与样本函数 随机过程指一类随时间做随机变化的过程,用ξ(t)表示,其值不确定,无法用确切的时间函数描述。 随机过程的每一次实现,就称为一次样本函数ξi(t),随机过程是所有样本函数的集合。 基…

使用Apache Ignite瘦客户端– Apache Ignite内部博客

从2.4.0版本开始,Apache Ignite引入了一种新的连接到Ignite群集的方法,该方法允许与Ignite群集进行通信而无需启动Ignite客户端节点。 从历史上看,Apache Ignite提供了客户端和服务器节点两个概念。 点燃旨在用作轻量级模式的客户端节点&…

2020-12-15通信原理

1、随机过程是一类随时间作随机变化的过程,不能用确切的时间函数描述。 不同角度理解:(1)对应不同随机试验结果的时间过程的集合;(2)随机过程是随机变量概念的延伸。 可以把随机过程看作是在时间…

2020-12-19通信电子线路第一章

振幅键控(Amplitude-shift keying) (ASK) 相位键控(phase-shift keying) (PSK) 频率键控:(Frequency-shift keying) (FSK) CDMA (Code Division Multiple Access) 码分多址 软件无线电结构&am…

现代交换技术学习笔记001

1、交换 在通信领域中,所谓交换,就是在通信网上,负责在通信的源和目的终端之间建立通信信道传送通信信息的机制(控制)。 2、通信网的组成(三要素) 交换设备,传输设备,终端…

移动通信学习笔记_01概述

OSI 7层模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层 TCP/IP共5层:物理层、数据链路层、网络层、传输层(运输层)、应用层 物理层:编码(信道编码)、调制 本课程&#xff1a…

计算机二级office学习之PPT操作题考点整理

考点1 新建幻灯片 01 大纲级别 S1、word中:选择格式相似的文本-段落大纲级别; S2、打开PPT:新建幻灯片-幻灯片从大纲-选择word文档。 (S3、不保留原素材的格式)在预览窗口ctrlA,右键重设幻灯片。 注:若无法…

计算机二级考前急救之Word(上)

一、文件选项卡 (思维导图来源:小黑老师) 1、另存为PDF格式:(另存为快捷键:F12) 2、去掉兼容模式:文件-信息-转换 3、删除不可见的内容:文件-信息-检查文档&#xff08…

参数化测试 junit_使用JUnitParams进行参数化的JUnit测试

参数化测试 junit参数化的单元测试用于在不同条件下测试相同的代码。 借助参数化的单元测试,我们可以建立一种测试方法,该方法从某个数据源中检索数据。 该数据源可以是测试数据对象,外部文件甚至数据库的集合。 一般的想法是使使用相同的单元…

计算机二级office学习之Excel操作题考点整理

考点1 页面设置 页面布局-页边距、纸张方向、纸张大小、打印区域、页面背景、打印标题、页眉页脚、缩印 页面布局-选中打印区域-打印标题-顶端标题行-选中第二行 考点2 获取外部数据和删除重复值 1、获取外部数据 1.1 自网页 右击文件-打开方式为IE浏览器(360可…

Jsoup V的幕后秘密:优化的技巧和窍门

我们做对了,现在是时候更快地做事了。 我们会牢记Donald Knuth的警告:“大约97%的时间,我们应该忘记效率低下:过早的优化是万恶之源”。 根据Jonathan Hedley的介绍,他使用YourKit Java Profiler来测量内存…

计算机二级选择题复习整理(公共基础部分)

主要列个人不太熟悉或较为重要的点,不求全。 一、计算机基础 1、计算机最早应用领域是数值计算 2、冯诺依曼型体系计算机引进概念:二进制、存储程序 3、CAD:设计;CAM:制造;CAI:教育&#xff1…

移动通信学习笔记03_蜂窝原理

教学大纲:组网技术 基本内容:典型的多址接入技术;话务量与呼损率的计算;蜂窝的概念、频率复用原则和区群的概念;信道的分配策略和分配原则;蜂窝系统的基本网络结构和各部分的功能;切换和漫游&am…

01_2_数字基带传输及其频谱特性

一、数字基带信号的表示 g(t)g(t)g(t)是一个基本的脉冲,有不同形状;ana_nan​从信源出来的信息码序列,只有电平特性。 二、功率谱密度的推导过程 ① 广义平稳随机信号的自相关函数和功率谱密度之间互为傅立叶变换关系 ② 计算基带信号的自相…

Linux环境变量剖析

一、什么是环境变量 概念:环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,是在操作系统中一个具有特定名字的对象,它包含了一个或多个应用程序所将使用到的信息&#xff0c…

APIGEE:用于API代理的CI / CD管道

在本文中,我们将看到如何为APIGEE API代理创建CI / CD管道。 我已经参考了APIGEE社区上同一主题的几篇文章。 这些给了一些关于如何为API代理设置CI / CD管道的想法。 这是我用来设置CI / CD的工具。 詹金斯 节点 蜂胶 新人 APIGEE管理API 确保已创建APIGEE边…

01_3基带传输的常用码型和码间串扰

第十七讲 基带传输的常用码型和码间串扰 第一节 基带传输的常用码型 一、数字基带信号的编码规则 基带传输对信号的要求(即独立又有联系) 对传输码型的要求:原始消息码必须编成适合于信道传输用的码型(码型的选择) …

移动通信考前预习_第1章_无线通信系统概述

下周考试,开始预习。 第一章为概念,直接copyPPT。 第1章 无线通信系统概述 一、移动通信发展 1、第一代 80年代——模拟通信时代(1G) 典型系统:AMPS系统(先进移动电话系统)、TACS系统&#…

java 调试 工具_Java调试器–权威的工具列表

java 调试 工具Java调试是一个复杂的空间。 调试器的类型很多,工具也很多。 在此页面中,我们将介绍7种类型的调试器之间的区别,并查看每个类别中的主要工具,以帮助您为正确的工作选择正确的工具。 以下是我们介绍的调试器类型&a…

移动通信考前预习_第2章_蜂窝技术

一、蜂窝的概念 1、系统级的概念:用许多小功率的发射机(小覆盖区)来代替单个的大功率发射机(大覆盖区),每个小覆盖区只提供服务范围内的一小部分覆盖。 2、不需要做技术上的重大修改,没有增加额…