Azure 中的分布式应用服务 - API 管理、Service Fabric、ASE、应用程序网关?

Distributed App Services in Azure - API Management, Service Fabric, ASE, Application Gateway?

我计划拥有许多 Azure App Service API 应用程序,其中一些应该可以通过单个根 URL 公开访问(两个客户端应用程序),这些将连接到不可公开访问的内部服务。

我调查了 Azure 上的所有选项,包括:

Azure API Management

Azure Application Gateway

Azure Service Fabric Mesh

Azure App Service Environments

Ocelot

Azure Function Proxies

我似乎找不到明确满足我要求的解决方案(我觉得它真的很混乱):

  1. 外部客户端的单个 URL 根目录
  2. 内部服务之间的连接 (REST)
  3. 基于无服务器架构
  4. 支持应用服务API 应用和潜在的 Azure 功能
  5. 安全
  6. 可扩展

非常感谢任何帮助或建议!

谢谢

你的问题太宽泛了,很难给出一个涵盖所有这些项目的好的答案。 我将添加我的 2 美分并指导以下信息,以详细说明正确的问题:

我认为您的决定面临 3 个主要挑战:

  • 应用平台
  • 负载平衡和访问管理
  • 服务间通信

您不可能做出涵盖所有这些主题的单一决定,因为对一个主题的决定会影响其他主题:

首先,我建议您决定哪个应用程序平台更适合您的服务,在 Functions、AppService 和 Service Fabric Mesh 之间做出决定是一个艰难的决定,这里的一个单一答案不足以提供正确的信息。

在您的选项中您缺少容器,这是 Service Fabric Mesh 的基础,如果容器是一个选项,您还必须增加许多其他平台的列表。

你的决定会很艰难:

  • 函数
  • AppServiceAPIs
  • Service Fabric 网格
  • Azure 容器实例
  • 容器网络应用程序
  • Kubernetes (AKS)

可扩展性与每个应用程序相关,一个解决方案可能在一个平台上可扩展,但其他解决方案则不能,您必须针对每个应用程序评估您的应用程序设计。

一旦你选择了正确的,下一步就是服务到服务的通信,每个平台都有比其他平台更有效的方法。

一旦你找到了这两个的答案,你就可以决定你选择哪个 Proxy\Gateway 来处理负载平衡和访问管理,并且根据你上面的选择,Azure API 管理或Azure 应用程序网关可能不是一个好的选择,但您可以使用其他选项。

Azure API 管理是一个很好的选择,可以从一项服务中的多个后端聚合和管理您的 API。您可以观看this recording以更好地理解它。

它支持从 Azure Function Apps 导入,并在本地与 Service Fabric 一起工作。您可以使用 auth 或 use a virtual network setup 保护您的后端服务以将它们隐藏在 Internet 之外。