你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

选择 Azure 计算服务

Azure 应用服务
Azure Kubernetes 服务 (AKS)

Azure 提供多种方式来托管应用程序代码。 术语“计算”是指运行应用程序的资源的承载模型。 本文将帮助你为应用程序选择计算服务。

选择候选服务

使用以下流程图选择候选计算服务。

显示 Azure 计算服务决策树的示意图。

下载此决策树的 Visio 文件

此图提到了两种迁移策略:

  • 直接迁移:这是一种将工作负载迁移到云的策略,不重新设计应用程序,也不进行代码更改。 它也称为“重新托管”。 有关详细信息,请参阅 Azure 迁移和现代化中心
  • 云优化:这是一种云迁移策略,需重构应用程序,以便充分利用云原生特性和功能。

此流程图的输出就是你的起点。 接下来,请评估服务,看看它是否符合你的需求。

本文中的多个表格可帮助你选择服务。 流程图中的初始候选项可能不适合你的应用程序或工作负载。 在这种情况下,扩展分析以包含其他计算服务。

如果应用程序包括多个工作负荷,请单独评估每个工作负荷。 完整的解决方案可能会合并两个或更多个计算服务。

了解基本功能

如果你不熟悉上一部分中选择的 Azure 服务,请参阅此概述文档:

  • Azure 虚拟机:一个用于在 Azure 虚拟网络中部署和管理虚拟机 (VM) 的服务。
  • Azure 应用服务:一个托管服务,用于承载 Web 应用、移动应用后端、RESTful API 或自动化业务流程。
  • Azure Functions:托管函数即服务。
  • Azure Kubernetes 服务 (AKS): 一种托管 Kubernetes 服务,用于运行容器化应用程序。
  • Azure 容器应用:一个在 Kubernetes 上构建的托管服务,可以简化在无服务器环境中部署容器化应用程序的流程。
  • Azure 容器实例:此服务是在 Azure 中运行容器的快速简单方法。 无需预配任何 VM 或采用更高级别的服务。
  • Azure Red Hat OpenShift:一种完全托管的 OpenShift 群集,用于使用 Kubernetes 在生产环境中运行容器。
  • Azure Spring Apps:一个为托管 Spring Boot 应用而设计和优化的托管服务。
  • Azure Service Fabric:一个可在多个环境(包括 Azure 或本地环境)中运行的分布式系统平台。
  • Azure Batch:一个托管服务,适用于运行大规模并行和高性能计算 (HPC) 应用程序。

了解承载模型

对于承载模型,云服务分为三种类别:

  • 基础结构即服务 (IaaS):它使你能够预配 VM 及其关联的网络和存储组件。 然后你可以将需要的任何软件和应用程序部署到这些 VM 上。 此模型最接近传统的本地环境。 Microsoft 管理基础结构。 你仍然管理虚拟机。

  • 平台即服务 (PaaS):提供托管的承载环境,可在其中部署应用程序而无需管理 VM 或网络资源。 Azure 应用服务和 Azure 容器应用是 PaaS 服务。

  • 函数即服务 (FaaS):使你能够将代码部署到服务,后者会自动运行代码。 Azure Functions 是 FaaS 服务。

    备注

    Azure Functions 是一种 Azure 无服务器计算产品/服务。 若要了解此服务与其他 Azure 无服务器产品/服务(例如提供无服务器工作流的逻辑应用)的差别,请参阅在 Azure 中选择适当的集成和自动化服务

从 IaaS 到纯 PaaS 存在一个范围。 例如,Azure VM 可以使用虚拟机规模集进行自动缩放。 此功能在严格意义上并非 PaaS,而是 PaaS 中的一种管理功能。

需要在控制度和易管理性之间做出权衡。 IaaS 提供了最大的控制、灵活性和可移植性,但必须预配、配置和管理所创建的 VM 和网络组件。 FaaS 服务自动管理运行应用程序的几乎方方面面。 PaaS 的优缺点介于上述两者之间。

服务 应用程序的构成 密度 最小节点数 状态管理 Web 托管
Azure 虚拟机 不可知 不可知 1 2 无状态或有状态 不可知
Azure 应用服务 应用程序、容器 通过应用服务计划让每个实例运行多个应用 1 无状态 内置
Azure Functions 函数、容器 无服务器 1 无服务器 1 无状态或有状态 6 不适用
Azure Kubernetes 服务 容器 一个节点多个容器 3 3 无状态或有状态 不可知
Azure Container Apps 容器 无服务器 无服务器 无状态或有状态 不可知
Azure 容器实例 容器 无专用实例 无专用节点 无状态 不可知
Azure Red Hat OpenShift 容器 一个节点多个容器 6 5 无状态或有状态 不可知
Azure Spring Apps 应用程序, 微服务 每个服务实例拥有多个应用 2 无状态 内置
Azure Service Fabric 服务、来宾可执行文件、容器 每个 VM 多个服务 5 3 无状态或有状态 不可知
Azure Batch 计划的作业 每个 VM 多个应用 1 4 无状态

注释

  1. 如果使用消耗计划。 对于应用服务计划,函数将在为应用服务计划分配的 VM 上运行。 请参阅为 Azure Functions 选择正确的服务计划
  2. 具有两个或更多个实例的更高的服务级别协议 (SLA)。
  3. 建议用于生产环境。
  4. 作业完成后可以缩小至零。
  5. 三个用于主节点,三个用于工作器节点。
  6. 使用 Durable Functions 时。

网络

服务 虚拟网络集成 混合连接
Azure 虚拟机 支持 支持
Azure 应用服务 支持 1 支持 2
Azure Functions 支持 1 支持 3
Azure Kubernetes 服务 支持 支持
Azure Container Apps 支持 支持
Azure 容器实例 支持 支持
Azure Red Hat OpenShift 支持 支持
Azure Spring Apps 支持 支持
Azure Service Fabric 支持 支持
Azure Batch 支持 支持

说明

  1. 需要应用服务环境。
  2. 使用 Azure 应用服务混合连接
  3. 需要应用服务计划或 Azure Functions 高级计划

DevOps

服务 本地调试 编程模型 应用程序更新
Azure 虚拟机 不可知 不可知 没有内置支持
Azure 应用服务 IIS Express、其他 1 Web 和 API 应用程序、后台任务的 WebJobs 部署槽
Azure Functions Visual Studio 或 Azure Functions CLI 无服务器,事件驱动 部署槽
Azure Kubernetes 服务 Minikube、Docker 等 不可知 滚动更新
Azure Container Apps 本地容器运行时 不可知 修订管理
Azure 容器实例 本地容器运行时 不可知 不适用
Azure Red Hat OpenShift Minikube、Docker 等 不可知 滚动更新
Azure Spring Apps Visual Studio Code、Intellij、Eclipse Spring Boot、Steeltoe 滚动升级、蓝绿部署
Azure Service Fabric 本地节点群集 来宾可执行文件、服务模型、参与者模型、容器 滚动升级(每个服务)
Azure Batch 不支持 命令行应用程序 不适用

注释

  1. 选项包括:IIS Express for ASP.NET 或 node.js (iisnode)、PHP Web 服务器、Azure Toolkit for IntelliJ 和 Azure Toolkit for Eclipse。 应用服务还支持对已部署的 web 应用进行远程调试。

可伸缩性

服务 自动缩放 负载均衡器 缩放限制3
Azure 虚拟机 虚拟机规模集 Azure 负载均衡器 平台映像:每个规模集 1,000 个节点,自定义映像:每个规模集 600 个节点
Azure 应用服务 内置服务 集成 30 个实例,应用服务环境为 100 个
Azure Functions 内置服务 集成 每个函数应用 200 个实例
Azure Kubernetes 服务 Pod 自动缩放1、群集自动缩放2 Azure 负载均衡器或 Azure 应用程序网关 使用运行时间 SLA 时为 5,000 个节点
Azure Container Apps 缩放规则4 集成 每个区域有 5 个环境,每个环境有 20 个容器应用,每个容器应用有 30 个副本
Azure 容器实例 不支持 没有内置支持 每个订阅有 20 个容器组(默认限制)
Azure Red Hat OpenShift Pod 自动缩放、群集自动缩放 Azure 负载均衡器或 Azure 应用程序网关 每个群集 60 个节点(默认限制)
Azure Spring Apps 内置服务 集成 标准 500 个应用实例
Azure Service Fabric 虚拟机规模集 Azure 负载均衡器 每个虚拟机规模集有 100 个节点
Azure Batch 不适用 Azure 负载均衡器 20 个核心的限制(默认限制)

说明

  1. 请参阅自动缩放 Pod
  2. 请参阅自动缩放群集以满足 Azure Kubernetes 服务中的应用程序需求
  3. 请参阅 Azure 订阅和服务限制、配额和约束
  4. 请参阅在 Azure 容器应用中设置缩放规则

可用性

服务 SLA 多区域故障转移
Azure 虚拟机 虚拟机的 SLA Azure 流量管理器、Azure Front Door 和跨区域 Azure 负载均衡器
Azure 应用服务 应用服务的 SLA Azure 流量管理器和 Azure Front Door
Azure Functions Functions 的 SLA Azure 流量管理器和 Azure Front Door
Azure Kubernetes 服务 (AKS) AKS 的 SLA Azure 流量管理器、Azure Front Door 和多区域群集
Azure Container Apps 容器应用的 SLA Azure 流量管理器和 Azure Front Door
Azure 容器实例 容器实例的 SLA Azure 流量管理器和 Azure Front Door
Azure Red Hat OpenShift Azure Red Hat OpenShift 的 SLA Azure 流量管理器和 Azure Front Door
Azure Spring Apps 适用于 Azure Spring Apps 的 SLA Azure 流量管理器、Azure Front Door 和多区域群集
Azure Service Fabric Service Fabric 的 SLA Azure 流量管理器、Azure Front Door 和跨区域 Azure 负载均衡器
Azure Batch Batch 的 SLA 不适用

有关服务保证的引导式学习,请查看核心云服务 - Azure 体系结构和服务保证

安全性

查看并了解每项服务的可用安全控制和可见性:

其他条件

服务 TLS 成本 合适的体系结构样式
Azure 虚拟机 已在 VM 中配置 WindowsLinux N 层大计算 (HPC)
Azure 应用服务 支持 应用服务定价 Web-队列-辅助角色
Azure Functions 支持 Functions 定价 微服务事件驱动型体系结构
Azure Kubernetes 服务 (AKS) 入口控制器 AKS 定价 微服务事件驱动型体系结构
Azure Container Apps 入口控制器 容器应用定价 微服务事件驱动型体系结构
Azure 容器实例 使用挎斗容器 容器实例定价 微服务、任务自动化、批处理作业
Azure Red Hat OpenShift 支持 Azure Red Hat OpenShift 定价 微服务事件驱动型体系结构
Azure Spring Apps 支持 Azure Spring Apps 定价 Spring Boot、微服务
Azure Service Fabric 支持 Service Fabric 定价 微服务事件驱动型体系结构
Azure Batch 支持 Batch 定价 大计算 (HPC)

考虑限制和成本

除了上面的比较表以外,请对候选服务的以下方面进行更详细的评估:

作者

本文由 Microsoft 维护, 最初由以下贡献者撰写:

若要查看非公开的领英个人资料,请登录到领英。

后续步骤

核心云服务 - Azure 计算选项。 此 Learn 模块探讨计算服务如何解决常见的业务需求。