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,一经查实,立即删除!

相关文章

【渝粤教育】广东开放大学 PHP动态网站设计 形成性考核 (48)

选择题 题目:下列说法不正确的是____________。 答案:看左侧 题目:PHP是一种跨平台、的网页脚本语言。 答案:看左侧 题目:PHP网站可称为。 答案:看左侧 题目:PHP网页文件的文件扩展名为________…

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

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

【渝粤教育】广东开放大学 企业财务报表分析 形成性考核 (26)

选择题 题目:行业平均水平标准一般可用于() 答案:看左侧 题目:确定影响因素、衡量其影响程度、查明指标变动原因的分析方法是()。 答案:看左侧 题目:在企业编制的会计报表…

Verilog基本语法初学

一、语言要素 (一)概述 1、空白符(White Space) 空格、换行、换页、Tab等; 是代码错落有致,提高可读性。 2、注释(Comment) 单行注释:“ // ”; 多行注释:“ /* ”~“ …

spring 事务持久性_项目学生:Spring数据的持久性

spring 事务持久性这是Project Student的一部分。 其他职位包括带有Jersey的Webservice Client,带有Jersey的 Webservice Server和业务层 。 RESTful webapp onion的最后一层是持久层。 持久层有两种哲学。 一个阵营将数据库视为一个简单的存储,并希望…

【渝粤教育】广东开放大学 商法 形成性考核 (40)

选择题 题目:2020年1月1日,小李到广州A超市购物,发现A超市设有服务台和自助寄存柜。考虑到服务台需要排队,为节省时间,小李根据A超市对自助寄存柜的使用方法及物品的保管等问题的明确指引和警示,进行操作&a…

力扣算法001_两数之和

1、 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums [2, 7, 11…

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

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

【渝粤教育】广东开放大学 岭南文化概论 形成性考核 (45)

选择题 题目: ()是岭南文化中最有响并最具典型性的文化。 选择一项: 答案:看左侧 题目: ()是岭南文化中最有响并最具典型性的文化。 选择一项: 答案:看左侧…

【渝粤教育】广东开放大学 数据采集技术 形成性考核 (29)

选择题 题目:GET和POST的区别,以下说法不正确的有()。 题目:以下属于HTTP协议的主要特点的是()。 题目:增量式爬虫中的()指的是:爬虫以相同的频率…

2020-12-15通信原理

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

【渝粤教育】广东开放大学 机械制造基础 形成性考核 (51)

选择题 题目:退火一般安排在 ( ) 题目:从蠕墨铸铁的牌号上可以看出其硬度和冲击韧性。 题目:钎焊接头的主要缺点是( ) 题目:高碳钢淬火后回火时,随回火温度升高其( ) 题目&#xff1…

【渝粤教育】广东开放大学 电子支付与安全 形成性考核 (59)

选择题 题目:直接参与者:商行和央行(商行以其不通层次的管辖银行在相应层次的央行开设清算帐户) 答案:看左侧 题目:支付系统全国处理中心是控制支付系统运行,管理国家金融网络通信、接收、结算、…

java 将光标移至行首_Java:将条件移至消息文件

java 将光标移至行首Java类ResourceBundle和MessageFormat提供了一个很好的工具集,用于解决Java应用程序内部的本地化消息。 这篇文章提供了一个小示例,说明如何使用ChoiceFormat将与消息相关的简单条件从Java代码移动到消息文件中。 如果您已经知道Choi…

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

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

【渝粤教育】广东开放大学 网络市场与预测 形成性考核 (23)

选择题 题目:()是利用互联网发掘和了解顾客需求、市场机会、竞争对手、行业潮流、分销渠道以及战略合作伙伴等方面的情况。 题目:市场调查首先要解决的问题是( )。 题目:为了在市场调查方案实施…

在Ubuntu 18.04上实际安装OpenJDK 11

OpenJDK 11于 1018年9月25日发布 。由于这是版本8之后的第一个LTS版本,因此期待已久。 在Ubuntu 18.04(Bionic Beaver)上安装了该软件包后,该软件包附带了一个名为openjdk-11-jdk的软件包,令我惊讶的是它仍然是早期版本…

【渝粤教育】广东开放大学 计量基础知识 形成性考核 (48)

选择题 题目:工业计量也称工程计量。一般指工业、工程、生产企业中的()计量。 答案:看左侧 题目:我国古代有许多令炎黄子孙骄傲自豪的计量文化,我们耳熟能详的就有()等。 答案&#…

Verilog二选一数据选择器

//二选一数据选择器module mux2_1(a0,a1,s,f) input a0,a1,s; output f;//默认是wire(线)变量 assign f(s)?a1:a0;//assign 专门给线类型变量赋值 endmodulemodule mux2_1(a,s,f) input s; input [1:0]a; output f; reg f;//reg(寄存器型) a…

【渝粤教育】电大中专Office办公软件 (1)作业 题库

1.西文字符一般采用的编码是( )。 A.ASCII码 B.BCD码 C.国标码 D.EBCDIC码 正确 正确答案:左边查询 学生答案:A 2.若已知一汉字的国标码是5E38,则其内码是( )。 A.DE38 B.DEB8 C.7E58 D.5EB8 错…