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

选择适用于微服务的 Azure 计算方案

术语“计算”指的是计算资源(应用程序在这些资源上运行)的承载模型。 本文提供规范性指南,可帮助你为微服务选择计算平台。 微服务计算平台选择可能取决于更细微的要求。

对于微服务体系结构,以下方法很受欢迎:

  • 使用微服务业务流程协调程序在专用计算平台上部署微服务。
  • 在无服务器平台上部署微服务。

尽管这些选项并不是唯一选项,但它们都是构建微服务的成熟方法。 应用程序可以包含这两种方案。

显示 Azure 中的微服务计算选项的关系图。

下载此体系结构的 Visio 文件

使用无服务器平台

可以使用无服务器平台在 Azure 容器应用或 Azure Functions 上部署微服务。 容器应用和 Functions 都提供无服务器计算选项,这些选项基于请求量而不是计算消耗量计费。 这两个平台还可以选择在专用容量上托管工作负荷。

部署基于代码的微服务

如果要将微服务部署为代码,而不是容器化微服务,可能需要使用 Azure Functions。 有关详细信息,请参阅 Functions 支持的编程和脚本语言列表。 对于以其他语言开发的微服务,可能需要在 Functions 中实现自定义处理程序,或考虑容器化应用程序。

使用 GPU 模型

例如,如果微服务需要 GPU 容量来运行机器学习任务,请考虑为平台选择容器应用或Azure Kubernetes 服务(AKS)。 AKS 可以使用 Azure 中的任何 GPU 模型,容器应用提供一部分 GPU 模型可供选择

使用服务业务流程协调程序

业务流程协调程序处理与部署和管理一组服务相关的任务。 这些任务包括在节点上放置服务、监视服务运行状况、重启不正常的服务、对服务实例之间的网络流量进行负载均衡、服务发现、缩放服务实例的数目,以及应用配置更新。 常用的业务流程协调程序包括 Kubernetes、Azure Service Fabric、DC/OS 和 Docker Swarm。

在 Azure 平台上,请考虑以下选项:

  • Azure Kubernetes 服务 (AKS) 是托管的 Kubernetes 服务。 AKS 预配 Kubernetes 并公开 Kubernetes API 终结点、托管和管理 Kubernetes 控制平面,并执行自动升级、自动修补、自动缩放和其他管理任务。 AKS 提供对 Kubernetes API 的直接访问。

  • 容器应用 是基于 Kubernetes 构建的托管服务,它抽象化了容器业务流程和其他管理任务的复杂性。 容器应用可在无服务器环境中简化容器化应用程序和微服务的部署和管理,同时提供 Kubernetes 的功能。 容器应用非常适合不需要直接访问 Kubernetes API 的方案。

  • Service Fabric 是用于打包、部署和管理微服务的分布式系统平台。 可以将微服务作为容器、二进制可执行文件或 Reliable Services 部署到 Service Fabric。 通过使用 Reliable Services 编程模型,服务可以直接使用 Service Fabric 编程 API 来查询系统、报告运行状况、接收有关配置和代码更改的通知,以及发现其他服务。

  • 使用 Azure Red Hat OpenShift 部署完全托管的 OpenShift 群集。 Azure Red Hat OpenShift 扩展 Kubernetes。 Azure Red Hat OpenShift 由 Red Hat 和 Microsoft 联合设计、运营和支持。

  • 其他选项(例如 Docker 企业版)可以在 Azure 上的云计算环境中运行。 可以在 Azure 市场找到部署模板。

使用 Kubernetes API

选择计算选项时,访问 Kubernetes API 通常是决定因素。 AKS 提供对 Kubernetes API 的直接访问,但容器应用不提供。 容器应用隐藏 Kubernetes 的复杂性,并简化了容器部署体验。 如果将微服务部署设计为直接与 Kubernetes API 交互,AKS 可能是正确的选择。

其他决策因素

可能存在影响微服务计算平台选择的其他因素。 这些因素包括可在组织中使用的服务网格选项、平台可伸缩性和技能集。

注意事项

这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改善工作负荷质量的指导原则。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架

可靠性

可靠性可确保应用程序符合你对客户的承诺。 有关详细信息,请参阅可靠性设计评审核对清单

可靠性的重要支柱之一是复原能力。 复原的目标是在发生故障后将工作负荷返回到完全正常运行的状态。

如果选择 Azure Functions 作为微服务计算平台,请考虑在区域冗余配置中部署 Functions Premium 计划或Azure App 服务计划。 有关详细信息,请参阅 Functions 中的可靠性。

如果选择 AKS 作为微服务计算平台,可以通过部署 使用可用性区域的 AKS 群集、使用 Azure Kubernetes 群集的标准层或高级层 以及增加最小 Pod 和节点数来提高微服务可靠性。 有关详细信息,请参阅 AKS 的部署和群集可靠性最佳做法。

如果选择容器应用作为微服务计算平台,则可以使用可用性区域增强可靠性。 有关详细信息,请参阅 容器应用中的可靠性。

安全性

安全性针对蓄意攻击及滥用宝贵数据和系统提供保障措施。 有关详细信息,请参阅可靠性设计审查检查表

如果选择 Azure Functions 作为计算平台来部署微服务,则保护 Azure Functions 的原则也适用于微服务。

如果选择 AKS 作为计算平台来部署微服务, AKS 安全基线体系结构 提供了保护计算平台的指导。 有关 AKS 上的微服务安全性的最佳做法,请参阅 高级 AKS 微服务体系结构

如果选择容器应用作为计算平台来部署微服务,请参阅 容器应用 的安全基线以实现安全最佳做法。

成本优化

成本优化是关于寻找减少不必要的费用和提高运营效率的方法。 有关详细信息,请参阅成本优化设计评审核对清单

使用业务流程协调程序时,需要为群集中运行的虚拟机付费。 使用无服务器应用程序时,只需为使用的实际计算资源付费。 在这两种情况下,都需要考虑任何额外的服务(如存储、数据库和消息传送服务)的成本。

Azure Functions、容器应用和 AKS 提供自动缩放选项。 容器应用和 Functions 提供无服务器平台,其中成本基于消耗,可以为零。 AKS 仅提供专用计算选项。

如果选择 AKS 作为计算平台来部署微服务,则需要了解成本优化最佳做法。 有关详细信息,请参阅优化Azure Kubernetes 服务中的成本。

如果选择容器应用作为微服务计算平台,则需要了解各种计费模型,并根据工作负荷要求决定微服务的部署模型。 有关详细信息,请参阅 容器应用中的计费。

如果选择 Azure Functions 作为微服务计算平台,则需要了解各种计费模型,并根据工作负荷要求决定 Functions 计划。 有关详细信息,请参阅 估算基于消耗的成本Azure Functions 计划详细信息

卓越运营

卓越运营涵盖了部署应用程序并使其在生产环境中保持运行的运营流程。 有关详细信息,请参阅设计卓越运营的审查清单

可以使用 Terraform、Bicep 和其他脚本语言以自动化方式部署本文介绍的所有微服务计算选项。 可以使用 Application InsightsAzure Monitor 和其他监视解决方案来监视这些计算平台和微服务。

在业务流程协调程序方法和无服务器方法之间进行选择时,请考虑以下因素:

  • 灵活性和控制: 业务流程协调程序可让你控制配置和管理服务和群集。 权衡更为复杂。 使用无服务器体系结构会牺牲一定的控制度,因为这些细节已抽象化。

  • 可移植性: 本文中列出的所有业务流程协调程序(包括 Kubernetes、DC/OS、Docker Swarm 和 Service Fabric)都可以在本地或多个公有云中运行。

  • 应用程序集成: 构建使用无服务器体系结构的复杂应用程序可能很困难,因为你需要协调、部署和管理许多小型独立函数。 Azure 中的一个选项是使用Azure 逻辑应用来协调一组 Azure Functions。 有关此方法的示例,请参阅 创建与逻辑应用集成的函数。

下一步