API网关简介

什么是API网关?

API代表应用程序接口。它是一组用于构建软件应用程序的指令、协议和工具。它规定了软件组件之间应该如何交互。

API网关是一个服务器,它是系统的单一入口点。API网关封装了内部系统架构。它为每个客户端提供定制的API。它还具有其他职责,如身份验证、监控、负载平衡、缓存、请求塑形和管理,以及静态响应处理。

API网关还负责请求路由、组合和协议转换。所有客户端发出的请求都经过API网关。然后,API网关将请求路由到适当的微服务。

API网关以以下两种方式之一处理请求:

  • 将请求路由或代理到适当的服务。
  • 将请求分发到多个服务。

API网关可以为每个客户端提供自定义API,并在两种协议之间进行翻译,例如HTTP、WebSockets和内部使用的Web-Unfriendly协议。

示例

API网关的典型示例是Netflix API网关。Netflix流媒体服务可用于数百种不同类型的设备,如电视、机顶盒、智能手机、平板电脑等。它试图为其流媒体服务提供一个“一刀切”的API。

introduction-to-api-gateways.png

API网关包括:

  • 安全性
  • 缓存
  • API组合和处理
  • 管理访问配额
  • API健康监测
  • 版本控制
  • 路由

API网关的优点

  • API网关最重要的优点是封装了应用程序的内部结构。
  • 客户端直接与API网关交互,而不是调用特定的服务。
  • 减少了客户端与应用程序之间的往返次数。
  • 简化了客户端代码。
  • 减少了编码工作,使应用程序更高效,同时减少了错误。
  • 为每种类型的客户端提供了特定的API。

缺点

  • 需要路由规则。
  • 存在单点故障的可能性。
  • 所有API规则都集中在一处可能会增加复杂性。

API网关的工作原理

在微服务中,我们通过API路由所有请求。我们可以在API网关中实现常见功能,如身份验证、路由、速率限制、审计和日志记录。

考虑这样一个场景,我们不希望特定客户端调用某个微服务超过五次。我们可以将此作为API网关中的限制的一部分来实现。我们可以在API网关中跨微服务实现常见功能。Zuul API网关是一个常见的API网关实现。

我们必须在所有微服务中实现以下功能:

  • 服务聚合
  • 身份验证、授权和安全性
  • 速率限制
  • 容错性

假设有一个外部消费者想要在一个流程中调用十五个不同的服务。最好将这十五个服务聚合起来,并为外部消费者提供一个服务调用。这些都是在所有微服务中通用的功能。这些功能在API级别实现。

与其允许微服务直接相互调用,不如通过API网关执行所有调用。API网关将处理常见功能,如身份验证、容错性等,并提供所有微服务的聚合服务,因为所有调用都经过API网关。

标签: spring, Spring教程, spring cloud, spring cloud教程, spring cloud框架, spring cloud面试题, springcloud组件, springcloud微服务架构, springcloud入门教程, springcloud主件, spring cloud架构图