文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

微服务架构中API网关介绍

2024-11-30 13:24

关注

一些架构师、云工程师和 DevOps 人员经常说,“微服务是小单体。” 这源于处理大量服务的复杂性,尤其是管理和配置它们的网络规则和安全方面。

当客户端向分布在分布式系统中的多个集群和云中的微服务发出请求时,跟踪每个请求以确保安全和正确的路由规则变得乏味。理想情况下,后端服务不应该这样做,因为它们应该单独提供业务逻辑。这就是 API 网关(所有请求的单一入口点)的用武之地。让我们看看什么是 API 网关以及它提供的功能和优势。

什么是 API 网关?

API 网关是客户端和微服务之间的服务器(或 L7 代理),充当所有客户端进入系统的集中入口点。它是一个反向代理,接受客户端 API 调用并将它们转发到适当的微服务(参见下图 A)。

通过为每个客户端提供 API,API 网关封装了底层系统的复杂性,让客户端与其对话,而不是调用特定的服务。他们还在流量到达服务之前执行安全检查(身份验证和授权),从而让服务专注于其核心功能。

图 A – 微服务架构的 API 网关实现概念图

微服务对 API 网关的需求

直接的客户端到微服务通信模式带来的挑战导致了 API 网关的流行。让我们来看看其中的一些。

服务发现和流量路由问题

对于客户端到微服务的直接连接,客户端必须知道服务实例的特定端点。但是由于服务的动态(去)缩放,跟踪端点增加了客户端的复杂性。此外,如果客户端与服务耦合,则扩展将成为一个问题,因为它需要在客户端更改配置。此外,当客户端直接调用服务时,很难配置基于某些属性的路由流量,例如地理(geo-routing)。

安全问题

为直接的客户端到服务通信公开暴露服务端点会引起安全问题。它增加了入侵者的攻击面,并使后端服务容易受到威胁,例如数据包嗅探、中间人攻击等。此外,直接的客户端到微服务给服务增加了验证和授权 API 调用的负担而不是让他们专注于交付业务逻辑。

影响互操作性的多种协议

微服务架构提供的灵活性让开发人员可以使用他们选择的语言(Python、Java、Go)构建服务。同样,他们可以使用不同的 API 类型(例如 REST、gRPC 等)来实现这些服务。在客户端到微服务的直接通信模式中,客户端需要理解并使用不同的协议进行通信。这增加了额外的复杂性,因为客户端应用程序将需要更多代码和逻辑。

往返引起的延迟

考虑来自亚马逊网站的产品页面。产品定价、数量和评论等一些属性将在后端部署为不同的服务。如果客户端直接调用服务,它将不得不为每个服务(产品价格、评论、数量等)发出单独的请求以检索所需的信息,因为没有缓存来自上游服务的响应的机制。这些调用增加了建立多个连接的开销,并且这些网络请求引起的往返增加了延迟和次优的用户体验。
API 网关的架构在某种程度上减轻了直接客户端到微服务连接所带来的挑战,并提供了多种功能。

API 网关流量

API 网关是一个 L7 代理,它从通常由客户端请求的前端微服务中抽象出流量管理。API 网关可以读取和理解 HTTP 消息(参见下图),因此它们可以应用过滤器或对流量采取行动。

HTTP消息结构

请求在 API 网关处流经多个步骤。下图(图 B)表示位于 Kubernetes 集群边缘的 API 网关以及请求流经的阶段。

图 B – 通过 API 网关的传入 gRPC 请求的流量

API 网关完成上述步骤后,会将服务的响应返回给客户端。但是,请注意,概述的步骤可能会有所不同,具体取决于网关的配置方式和其他功能的实现。

API网关功能

除了上面提到的关键功能外,API 网关还提供许多功能。

API 网关提供的所有这些功能为管理分布式服务系统带来了巨大的好处。

API 网关的好处

API 网关实施可帮助组织获得以下好处等。

改进的应用程序安全性

作为 API 管理的集中点,网关隐藏了服务和底层基础设施,不被公开。这使得攻击者很难试图关闭应用程序,特别是通过用请求压倒服务(DoS 攻击)。由于网关在到达后端之前处理每个请求,因此它们可以对此类攻击应用速率限制。其他安全功能,如请求验证、authN/Z、断路和策略实施,再加上日志记录和监控,使 API 网关有助于应用程序的整体安全性。

增强处理和扩展微服务的灵活性

API 网关将外部客户端与内部微服务分离。这为 DevOps 和基础架构工程师提供了高度的灵活性,可以更改后端服务,而无需更新客户端应用程序中的配置。客户端仍然可以通过网关发出请求并获得响应,而无需了解后端发生的变化。许多重要的功能,例如 authN/Z 和负载平衡,将由网关负责。将这些责任卸载到网关有助于开发人员为应用程序编写更少的代码,从而促进创新并实现快速发布。

API 提供商更好的货币化

API 货币化就是为第三方消费者将 API 产品化。API 网关为公司提供了一种更好的方式来将其 API 货币化以产生收入或支付维护 API 的运营成本。网关将客户端请求连接到计费系统,从而为 API 提供商提供集中计费和计量机制。这有助于公司通过为 API 消费者实施不同的定价模型(例如现收现付、分层和基于单位)来跟踪 API 使用情况并收取服务费用。

改进的用户体验 (UX)

API 网关通过请求底层服务并聚合它们来减轻客户端发出过多请求的麻烦。也就是说,对网关的单个请求就足以满足客户端应用程序的需求,从而显着减少延迟。并且在频繁重复请求的情况下,网关可以及时提供缓存的响应,而无需将请求转发给后端。此外,借助监控和日志记录功能,API 网关可以更轻松地跟踪和排除任何性能问题,这有助于最大限度地减少应用程序停机时间。所有这些都有助于提高应用程序的性能、可靠性和用户体验。

三大开源 API 网关工具

在评估 API 网关工具时,组织可以寻找开源工具、云服务提供商或企业版。如果开源是您的首要任务,我们根据易用性、灵活性和可扩展性等因素列出了排名前三的开源 API 网关工具。

1.Tyk API网关

Tyk提供了一个完全开源的网关,支持多种协议,如 REST、GraphQL 和 gRPC。除了 Redis 之外,它没有第三方依赖项,是当今最快的网关之一。

以下是 Tyk API 网关的一些功能:

2.Kong API网关

Kong API Gateway是一个适用于多云和混合云部署的云原生网关。在其自己的Kubernetes ingress controller的帮助下,网关也是 Kubernetes 原生的。Kong 以其通过模块和插件的灵活性和可扩展性而闻名。

Kong API Gateway 的一些开源功能包括:

3. KrakenD API网关

KrakenD是一个高性能的 API 网关,采用无服务器架构构建,可提供真正的线性可扩展性。它有助于在没有单点故障的情况下进行扩展。KrakenD 在本地、混合或云上运行,并且可以使用插件和嵌入式脚本进行扩展。

KrakenD 的开源版本提供以下功能:

API 网关是银弹吗?

不它不是。与任何其他工具一样,API 网关也面临着一系列挑战。这里有几个:

详细探索 API 网关的这些挑战,并理解为什么考虑像 Istio 这样的服务网格平台是理想的:API 网关与 Istio 服务网格。

此外,还有不同的场景可以使用您现有的 API 网关基础设施来实施 Istio。

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯