通讯网关 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管理软件示例:

  • 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网关,其中有些人实际上可能会做更多比流量的入口/出口要大,但是重点是在集群操作级别存在此级别的问题。 随着我们倾向于部署更多集群(相对于一个单一的,高度多租户的集群),我们最终会有更多的入口点,并且需要这些入口点之间进行交互。


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

  • Envoy代理及其基础上的项目包括:

    • 数据线大使
  • 代理
    • 包括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网关,以集成比Level 1 – 3实现更多的Level 0请求(及其之间的所有内容)。


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


此类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网关,服务网格)插入并播放到您的解决方案中,并在需要时在组件之间建立良好的边界(或在不需要时排除它们)。 同样重要的是找到适合分散式开发人员和运营工作流程的这些工具的实现。 即使这些不同组件的术语和标识存在混淆,我们也应该依靠基本原理,并了解这些组件在我们的体系结构中带来了价值,以及它们如何独立存在和互补并存。


我们很乐意为您服务!

你们中的有些人可能知道我非常热衷于帮助人们,尤其是在云,微服务,事件驱动的体系结构和服务网格领域。 在我的公司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

通讯网关 api网关

通讯网关 api网关_API网关正在经历身份危机相关推荐

  1. API网关正在经历身份危机

    这些年来,API网关正在经历一些身份危机 . 它们是否是集中的共享资源,以促进对外部实体的API公开和治理? 它们是集群入口哨兵,可以严格控制哪些用户流量进入或离开集群吗? 还是他们根据自己拥有的客户 ...

  2. Kong 网关API安装部署以及应用实例----------腾云驾雾

    背景介绍 之前项目上api的接口用的是自己nginx搭建的反向代理接口,觉得功能性比较查差,故而另辟蹊径找到了kong作为接口网关服务. 工作原理 kong会把所有的后端接口对应的数据放到cassan ...

  3. 微服务网关API Geteway

    什么是API网关(API Geteway) 在微服务架构里,服务的粒度被进一步细分,各个业务服务可以被独立的设计.开发.测试.部署和管理.这时,各个独立部署单元可以用不同的开发测试团队维护,可以使用不 ...

  4. 工程小白问题:数采网关、智慧网关、物联网关、工业网关、DTU透传网关、边缘网关、协议网关、通讯管理机、中控网关、LORA网关、PROFIBUS网关、HART网关,都啥区别?如何判断是否符合工程要求?

    什么是数采网关,LoRa数采网关\NB-IOT数采网关\HART数采网关profibus DB 数采网关 数采网关就是数据采集网关,一端对接各种数据采集终端.电子仪器仪表,一般都是工业现场总线通讯传输 ...

  5. 从0开始构建你的api网关--Spring Cloud Gateway网关实战及原理解析

    API 网关 API 网关出现的原因是微服务架构的出现,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题 ...

  6. 网关服务器性能,服务网关API路由导致的性能问题分析

    背景 酷家乐是从 16 年初开始进行服务化改造的,因为一些特殊原因,无法直接使用主流的dubbo 或 spring cloud,因此酷家乐研发团队在开源的基础上做了二次开发,迅速上线了一套定制型的微服 ...

  7. 通过三种情况深度分析,复杂的公网环境,网络穿透如何做到?丨C++后端开发丨P2P丨c/c++Linux服务器开发丨网关API

    通过三种情况深度分析,复杂的公网环境,网络穿透如何做到? 视频讲解如下,点击观看: 通过三种情况深度分析,复杂的公网环境,网络穿透如何做到?丨C++后端开发丨P2P丨c/c++Linux服务器开发丨网 ...

  8. API 网关 ( API gateway )

    前言 在 IOT ( 物联网 )中,当我们的一些设备.例如( 监控.传感器等 )需要将收集到的数据和信息进行汇总时,我们就需要一个 API 网关来接收从千百个终端发出的请求,它实现对外统一接口,对内进 ...

  9. 阿里云云原生网关,开启下一代网关新进程

    流量网关和微服务网关必须分开构建吗? 在容器技术和 K8s 主导的云原生时代,这个命题正浮现出新的答案. 更经济:将流量网关与微服务网关合二为一,用户资源成本直降 50% Aliware 流量网关(如 ...

最新文章

  1. 独家 | 将时间信息编码用于机器学习模型的三种编码时间信息作为特征的三种方法...
  2. openstack Q版部署-----安装报错问题
  3. 7-39 魔法优惠券 (25 分)(思路加解释 用容器做的)加油兄弟们
  4. word文档打印 自动编码_办公室文件打印有哪些技巧 办公室文件打印技巧介绍【图文】...
  5. 05-Prohibited package name: java异常原因
  6. bs4爬取的时候有两个标签相同_利用Python爬取OPGG上英雄联盟英雄胜率及选取率信息!...
  7. JavaScript——JQuery原理介绍及模拟
  8. 2021年江苏专转本计算机知识点,2021年江苏专转本计算机考试复习知识点归纳内部资料.doc...
  9. TreeMap内部实现简介
  10. SQL Server DATEPART() 函数
  11. OFFICE技术讲座:连续内容分断的规则
  12. Atitit 互联网技术公司防爆指南技术规范标准流程 30个危险物品
  13. 争分夺秒的一晚和赛尔的烂网络
  14. winxp笔记本和有线路由器通过网线连接情况下的设置方法
  15. source not found解决方法(亲测)
  16. 巧设BIOS,让老主板也支持U盘启动!
  17. 数组反转,Java实现
  18. 操作系统服务器的安全性,服务器操作系统安全性
  19. 吃货的痛点:鱼龙混杂,究竟我该相信谁
  20. vb登录php代码,VB自动登陆网络站点详解

热门文章

  1. [luogu P4198] 楼房重建(线段树 + 思维)
  2. ybtoj洛谷P3268:圆的异或并(扫描线)
  3. 模板:后缀自动机(SAM)
  4. 不止代码:迷宫问题(bfs)
  5. P4922-[MtOI2018]崩坏3?非酋之战!【dp】
  6. P4170-[CQOI2007]涂色【区间dp】
  7. POJ2752-Seek the Name, Seek the Fame【KMP】
  8. 面试官问我:Redis 内存满了怎么办
  9. JavaFX UI控件教程(十七)之Slider
  10. JavaFX官方教程(七)之使用FXML创建用户界面