发布于 2026-01-06 1 阅读
0

为什么微服务需要 API 网关?

为什么微服务需要 API 网关?

API 网关在微服务架构中正变得越来越流行。最近,谷歌也发布了自己的API 网关。现在正是探讨微服务架构为何需要 API 网关,以及在没有 API 网关的情况下微服务架构现状的好时机。

我们来看一个没有 API 网关的微服务架构。

没有 API 网关的架构

除了核心功能之外,每个微服务传统上也都在执行这些操作。

  • 基于 OAuth 或 JWT 令牌或简单的基于密钥的身份验证来验证请求。(此身份验证用于验证其他服务或用户是否有权访问此服务,而不是基于应用程序数据的典型用户身份验证。)
  • 允许来自其他微服务的CORS 请求
  • 根据其入侵防御系统 (IPS) 允许/拒绝请求。
  • 速率限制——仅允许一定数量的请求。超过指定限制的请求将返回状态码 429(请求过多)。这些规则还可以保护微服务免受应用层DDoS 攻击。

  • 监控 - 从请求/响应中收集指标,以获取有价值的洞察。例如:每分钟请求数、每个 API 的请求数、特定用户超出速率限制的请求数。

  • 告警——这是监控的一个子集,用于针对特定事件生成告警。例如:当 1000 个请求的响应时间超过 500 毫秒时生成告警。使用 Prometheus 等可观测性工具有助于监控和告警。

  • 日志记录 - 记录向服务器发出的所有请求。

  • 请求终止 - 暂时禁用某些 API 的请求或在服务停机期间禁用该服务。

好的,以上列举了一些。可能还有更多。

这种方法的主要缺点:

  • 当一个新的微服务出现时,所有这些功能都需要复制。
  • 对一项功能的任何更改都应在所有服务中重复进行。例如:将请求日志记录从 Loggly 迁移到 StatsD。
  • 从逻辑上看,所有这些功能都不是底层应用程序所特有的。它们可以与应用程序本身解耦。

API网关:

API 网关现在无需过多介绍。您可以将 API 网关视为架构中的另一个微服务,它负责执行上述所有功能。

带有 API 网关的架构

  • 它是微服务的入口点,充当守门人的角色,在将请求传递给相应的微服务之前执行所有基本功能。
  • 所有功能现在都集中在一个地方,便于维护和分析。
  • 当一个新的微服务启动时,它只需要处理请求并将响应发送回网关。API网关会处理其余的事情。
  • 有了 API 网关,请求/响应转换、推出金丝雀部署等功能也成为可能。

我列举了一些API网关可以解决的问题。话虽如此,API网关究竟是必需的还是锦上添花,最终取决于架构本身。尤其是在架构中包含大量微服务的情况下,API网关就显得尤为重要。

无论是否绝对需要 API 网关,只要仔细观察 API 网关出现之前的设计,就会发现它明显违反了单一职责原则不要重复自己以及高内聚低耦合原则

文章来源:https://dev.to/rahul_ramfort/why-do-microservices-need-an-api-gateway-503i