在这篇文章中,我们继续探讨微服务面试问题。我们将涵盖以下话题:

  • 什么是 API 网关?
  • REST 和 RPC 有什么区别?
  • 什么是配置管理器?
  • 常见的微服务容错方法有哪些?
  • 我们如何管理分布式事务?
  • 我们如何在单体和微服务架构之间选择?

你可以在我们之前的文章中找到微服务的定义及其基本组件的更多信息。

什么是 API 网关?

我们现在深入探讨 API 网关,它是微服务架构中的重要请求入口点。

在微服务架构中,API 网关充当客户端请求的单一入口点。API 网关负责请求路由、组合和协议转换。它还提供额外功能,如身份验证、授权、缓存和速率限制。

下图显示了关键步骤:

API 网关工作流程

步骤 1:客户端向 API 网关发送 HTTP 请求。

步骤 2:API 网关解析和验证 HTTP 请求中的属性。

步骤 3:API 网关检查允许/拒绝列表。

步骤 4:API 网关通过身份提供商进行身份验证和授权。

步骤 5:应用速率限制规则。超过限制的请求被拒绝。

步骤 6 和 7:API 网关通过路径匹配将请求路由到相关后端服务。

步骤 8:API 网关将请求转换为适当的协议并转发到后端微服务。

步骤 9:API 网关处理请求处理期间可能出现的任何错误,以实现服务的优雅降级。

步骤 10:API 网关实现弹性模式,如断路器,以检测故障并防止过载互连服务,避免级联故障。

步骤 11:API 网关利用可观察性工具,如 ELK 栈(Elastic-Logstash-Kibana),用于日志记录、监控、追踪和调试。

步骤 12:API 网关可以选择性地缓存对常见请求的响应,以提高响应能力。

除了请求路由,API 网关还可以将来自微服务的响应聚合成单个响应给客户端。

API 网关 vs. 负载均衡器

API 网关与负载均衡器不同。虽然两者都处理网络流量,但 API 网关在应用层运行,主要处理 HTTP 请求;负载均衡器主要在传输层运行,处理 TCP/UDP 协议。API 网关提供更多功能,因为它能看到请求负载。

API 网关与负载均衡器的不同之处在于,它通常在应用层运行以处理 HTTP 请求并理解消息负载,而传统负载均衡器在传输层运行以处理 TCP/UDP 连接,而不查看应用数据。

然而,这两类基础设施之间的界限可能模糊。一些高级负载均衡器正在获得类似 API 网关的应用层可见性和路由能力。

但一般来说,API 网关专注于基于负载的应用级关注点,如安全、路由、组合和弹性,而传统负载均衡器主要基于 IP 和端口号等传输级元数据将请求映射到后端服务器。

针对不同客户端的 API 网关

我们经常有针对不同客户端及其用户体验需求定制的独立 API 网关。下图显示了典型架构。我们有不同的 API 网关来处理来自移动设备和 Web 应用的请求,因为它们对用户体验有独特需求。此外,我们分离 WebSocket API 网关,因为它与 HTTP 网关相比有不同的连接持久性和速率限制需求。

多 API 网关架构

API 网关趋势

一些最近的 API 网关趋势:

  • GraphQL 支持:GraphQL 是一种类型系统和 API 查询语言。许多 API 网关现在提供与 GraphQL 的集成
  • 服务网格集成:如 Istio 和 Linkerd 等服务网格用于处理微服务之间的通信。API 网关正在与它们集成以增强流量管理能力
  • AI 集成:API 网关正在与 AI 能力集成,以实现更智能的请求路由或流量模式中的异常检测

REST vs. RPC

REST(表述性状态转移)和 RPC(远程过程调用)是分布式系统中用于通信的两种常见架构模式。REST 用于客户端 - 服务器通信,RPC 用于服务器 - 服务器通信,如下图所示。

REST vs. RPC

本文为学习目的的个人翻译,译文仅供参考。

原文链接:6 More Microservices Interview Questions

版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。