重定向是 API 网关的有效策略吗?

Is redirection a valid strategy for an API Gateway?

我阅读了 this article 关于 API 网关模式的内容。我意识到 API 网关通常用作 反向代理 ,但这会造成瓶颈情况。如果对应用程序 public 服务的所有请求都通过单个网关,或者甚至跨多个网关副本的单个负载均衡器(也许是一个硬件负载均衡器,它可以比 API 网关),那么单个接入点就是瓶颈。

我也明白这是一个广泛的瓶颈,因为它只需要在代理中传递消息,因为网关和负载平衡器本身不负责任何处理或查询。然而,想象一个拥有许多用户的非常大的应用程序,需要非常强大的硬件才能注意到通过网关或负载均衡器传输的大量带宽,因为对网关公开的每个微服务的每个请求都通过该单个访问点传输。

如果 API 网关 只是将客户端 重定向到 public 公开的微服务(有点像自定义 DNS 查找),则硬件要求会低很多。这是因为进出 API 网关的消息非常小,请求仅包含微服务名称,而响应仅包含关联的 public IP 地址。

我知道由于外部请求的增加,这种模式会涉及更大的延迟。它也将更难保护,因为每个微服务都是 publicly 公开的,而不是在单个入口点提供身份验证。但是,它将允许带宽更均匀地分配,并提供更广泛的瓶颈,从而使应用程序更具可扩展性。这是一个有效的策略吗?

DNS/Public 基于 IP 的方法从很多角度来看都不好:

  • 更高的攻击面,因为你有太多的暴露点,每个点都需要保护
  • 没有。需要的 public 个 IP 更高
  • 对于这些 API,您可能需要更多带有子域或域的 DNS 设置
  • 很多时候您的 API 会 运行 在根路径上,但您可能希望将它们公开在文件夹路径 example.com/service1 上,这需要 你也可以使用一些网关
  • 处理这些 public 暴露的 SSL 证书
  • 集中节点集的安全性与保护每个public盟友暴露的服务成为一项非常艰巨的任务

虽然理论上可以将客户端直接重定向到节点,但存在一些缺陷。

@Tarun 已涵盖安全、证书和 DNS 管理

高可用性问题

DNS 缓存域与它们服务的 IP 相当积极,因为它们很少更改。如果我们使用 DNS 公开公开多个服务实例,并且其中一台服务器出现故障,或者如果我们正在进行部署,则 DNS 将继续将请求路由到出现故障的节点相当长的一段时间。我们无法控制外部 DNS 及其政策。 使用反向代理,我们可以避免根据健康检查命中这些节点。