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

适用于 NoSQL 的 Azure Cosmos DB 的体系结构最佳做法

Azure Cosmos DB 是一种完全托管的数据库解决方案,可以托管多个数据库类型,例如 NoSQL、关系数据库、向量数据库和表数据库。 它可以容纳工作负载的大多数用例。 本指南中的建议侧重于 Azure Cosmos DB for NoSQL 变体。 还可以将一些基础建议应用于其他变体。

本文假设作为架构师,你已查看 Azure 数据选项 ,并选择 Azure Cosmos DB for NoSQL 作为工作负荷的数据存储。 本文中的指南提供了映射到 Well-Architected 框架支柱原则的体系结构建议。

重要

如何使用本指南

每个部分都有一个 设计清单,该清单提供关注的体系结构区域以及本地化为技术范围的设计策略。

此外,还包括有助于具体化这些策略的技术功能的建议。 这些建议并不表示可用于 NoSQL 的 Azure Cosmos DB 及其依赖项的所有配置的详尽列表。 而是列出与设计视角相匹配的关键建议。 使用建议生成概念证明或优化现有环境。

技术范围

此次审查重点分析以下 Azure 资源的相关决策:

  • Azure Cosmos DB(用于NoSQL)

可靠性

可靠性支柱的目的是通过 建立足够的复原能力和从故障快速恢复来提供持续的功能。

可靠性设计原则 为各个组件、系统流和整个系统提供高级设计策略。

设计清单

根据可靠性设计评审核对清单开始实施您的设计策略。 确定其与业务需求的相关性,同时请记住一致性级别、跨区域复制和预配的吞吐量。 扩展策略以根据需要包含更多方法。

  • 选择简单的设计并避免不必要的功能。 不要采用不必要的功能来增加工作负荷的复杂性,例如多主写入和自定义索引。 Azure Cosmos DB 支持这些功能,然而它们可以带来巨大的复杂性和操作负担。 仔细评估工作负荷是否需要任何高级功能。

    将工作负载职责和跨领域关注点卸载到其他服务,例如使用 Microsoft Entra ID 进行身份验证和授权,或使用 Azure Monitor 和 Application Insights 进行监视。

  • 确定工作负荷流的优先级。 应用程序中的所有流并非同样重要。 确定关键路径并为每个流分配优先级,以指导你的设计决策。 用户流设计可能会影响服务层级、功能和分配给 Azure Cosmos DB 数据库的容量。

    为了帮助识别可能需要特殊处理的关键流,请记录其在数据处理能力方面区别于其他流的处理要求。 例如,某些流可能需要更高的吞吐量或对延迟问题更加敏感。 某些解决方案流可能需要不同的事务一致性级别。

  • 使用故障模式分析来确定工作负荷中的潜在故障。 规划潜在故障的缓解策略。 下表显示了故障模式分析的示例。

    失败 缓解措施
    在向新地理区域的用户推出后,出现了高延迟和超时问题 启用多区域复制到离新用户更近的 Azure 区域。
    由于超出请求单位 (RU) 数而受到限制 实现重试逻辑。 监视 RU 消耗并根据需要调整吞吐量设置。
    Azure Cosmos DB 在单个 DNS 区域中的单个地区失败 创建数据库时配置可用性区域支持。

    有关详细信息,请参阅 Azure 应用程序故障模式分析

  • 构建冗余以提高复原能力,并帮助满足可靠性目标。 设计数据库帐户部署,使其至少跨越 Azure 中的两个区域。 如果 Azure 区域支持,请将帐户分配到多个可用性区域。

    评估您的工作负载所适用的多区域写入策略和单区域写入策略。 对于单区域写入,请设计您的工作负荷,使其至少包含一个用于故障转移的备用读取区域。 为单区域写入和多区域读取方案启用自动故障转移。 对于多区域写入,需要将在复杂性和一致性方面的权衡与写入多个区域的优势进行比较。 有关详细信息,请参阅针对单区域和多区域写入帐户在区域中断期间的预期情况

    考虑你的一致性级别和复制模式如何在区域性中断中影响恢复点目标(RPO)

    为应用程序设计端到端的高可用性测试,涵盖测试数据库故障转移和故障恢复。

  • 使用本机灾难恢复和备份功能。 实现 数据库和容器备份和还原 以满足要求。 还原方案包括时间点还原、从意外破坏性操作中恢复、将已删除的资源恢复,以及还原到某个时间点的另一个区域。 使用 连续备份配置帐户。 根据业务需求选择适当的保留期。

  • 将 Azure Cosmos DB 设计与行业标准应用程序设计指南和模式保持一致。 探索 设计可复原应用程序的指南,查看 SDK 的默认重试策略 ,并规划 特定暂时性错误的自定义处理。 这些指南提供了使应用程序代码能够应对暂时性错误的最佳做法。

建议

建议 益处
当可用时,将 Azure Cosmos DB 帐户跨 可用区 分配。 可用性区域提供独立的电源、网络和冷却系统,这有助于将硬件故障的影响限制到您的副本的一个子集。 如果不使用可用性区域功能,Azure Cosmos DB 会在单个随机选择的可用性区域内分布多个副本。
将 Azure Cosmos DB 帐户配置为至少跨越 两个区域 跨越多个区域有助于确保您的工作负荷能够抵御区域性故障。
为帐户启用服务托管故障转移。 了解服务托管故障转移的利弊,并在必要时规划强制故障转移。

暂时禁用服务托管的故障转移,以验证应用程序的端到端高可用性。 可以使用脚本或 Azure 门户启动手动故障转移。
服务管理的故障转移允许 Azure Cosmos DB 自动更改多区域帐户的写入区域以保留可用性。 此更改在没有用户交互的情况下发生。

安全

安全支柱的目的是为工作负荷提供 保密性、完整性和可用性 保证。

安全设计原则通过对 Azure Cosmos DB for NoSQL 的技术设计应用方法,为实现这些目标提供了高级设计策略。

设计清单

根据 设计评审清单制定针对安全 的设计策略,并确定漏洞和控制,以增强安全防御能力。 扩展策略以根据需要包含更多方法。

  • 审查安全基线。 若要增强工作负荷的安全态势,请查看 Azure 数据库的安全清单Azure Cosmos DB 的安全基线。 至少,实现 数据保护标识管理 安全基线,以帮助保护 Azure Cosmos DB 帐户。

    在当前全局个人数据要求上下文中评估服务级别 合规性认证

  • 实施严格的、有条件的、可审核的标识和访问管理。 将 Microsoft Entra ID 用于工作负荷的身份验证和授权需求。 Microsoft Entra ID 提供集中式授权和访问管理。

    要通过控制平面和数据平面访问帐户,请根据最低特权访问原则创建角色、组和分配。 请考虑 禁用基于密钥的身份验证

  • 加密数据。使用服务管理的密钥或客户管理的密钥加密静态数据或动态数据。

  • 应用网络分段和安全控制。 在网络设计中创建有意的分段和外围,并使用所有网络边界的本地化网络控制来应用深度防御原则。

    根据 Azure Cosmos DB 的安全基线,使用专用终结点来减少攻击面。

  • 实施全面的安全监视策略。 使用控制平面日志审核用户访问、安全漏洞和资源操作。

    使用 数据平面指标监视数据出口、数据更改、使用情况和延迟。

  • 使用安全开发和测试做法。 遵循最佳软件开发做法来保护对数据的访问。 开发与 Azure Cosmos DB 交互的应用程序时,请遵循安全编码做法并执行安全代码评审。

建议

建议 益处
尽可能禁用公共 终结点并使用专用终结点 通过专用终结点使用专用网络可减少帐户中易受攻击的暴露面。
使用 基于角色的访问控制(RBAC) 限制对明确定义的分配中特定身份和组别的控制平面访问。 使用 RBAC 有助于防止对帐户进行未经授权的访问。 根据最低特权原则,为访问 Azure Cosmos DB 的用户或应用程序分配适当的角色和权限。
创建 虚拟网络 终结点和规则以限制对帐户的访问。 使用网络安全组(NSG)控制来自 Azure Cosmos DB 资源的流量。 虚拟网络服务终结点、NSG 和防火墙规则有助于限制对 Azure Cosmos DB 帐户的访问,并帮助保护数据免受未经授权的访问。
防范常见的安全漏洞,例如注入攻击、跨站点脚本或不安全的直接对象引用。 为常见 HTTP 状态代码实现输入验证、参数化查询和适当的错误处理,以防止安全风险。 输入验证有助于防止应用程序处理恶意数据。 此方法会阻止可能导致安全漏洞或数据损坏的潜在有害数据。

正确的错误处理使应用程序能够以受控的方式响应错误,并防止泄露敏感信息。
监视控制平面日志 ,以检测对 Azure Cosmos DB 帐户的未经授权的修改。 监视有助于跟踪访问模式和审核日志,以确保数据库保持安全且符合相关数据保护法规。 监视数据平面指标还有助于识别可能显示安全漏洞的不熟悉模式。
启用 Microsoft Defender for Azure Cosmos DB ,以便在发生异常活动时触发安全警报。 Microsoft Defender 检测到试图利用您帐户中数据库漏洞的行为。 Defender 可检测潜在的 SQL 注入、可疑访问模式和其他潜在利用活动。

成本优化

成本优化侧重于 检测支出模式、优先考虑关键领域的投资,以及优化其他 以满足组织预算,同时满足业务需求。

成本优化设计原则提供了一个高级设计策略,用于实现这些目标,并在与 Cosmos DB for No SQL 及其环境相关的技术设计中做出权衡。

设计清单

根据投资的成本优化设计评审核对清单开始实施您的设计策略。 微调设计,使工作负荷与为工作负荷分配的预算保持一致。 设计应使用正确的 Azure 功能,监视投资,并查找随时间推移进行优化的机会。

  • 优化 Azure Cosmos DB 缩放策略。 了解 Azure Cosmos DB 如何处理 存储和吞吐量缩放。 确定符合要求的性能和成本的正确平衡。

    选择适合工作负荷的吞吐量分配架构。 审查在数据库或容器级别分布的标准吞吐量和自动缩放吞吐量的优点。 此外,请考虑在适当情况下使用无服务器选项。 分析工作负荷的流量模式 ,以选择最合适的吞吐量分配方案。

    确定具有高基数且保持不变的分区键或分区键集。 使用 现有指南和最佳做法 来帮助选择适当的分区键。 此外,确定分区键时,请考虑 索引策略

  • 优化 Azure Cosmos DB 数据成本。 清点数据并计算工作负荷的预期总体数据存储。 项和索引的大小都会影响数据存储成本。 计算复制和备份对存储成本的影响。

    创建策略以自动删除不再使用或必要的旧项。 如果需要,请在删除这些项目之前将这些项导出到成本较低的存储解决方案。

  • 优化您的查询以降低成本。 评估最常见的查询,以最大程度地减少跨分区查找。 使用此信息通知选择分区键或自定义索引策略的过程。

    使用投影来降低大型查询结果集的吞吐量成本。 创作查询以仅投影结果集中所需的最少字段数。 如果需要对字段进行计算,请评估执行这些计算服务器端与客户端的吞吐量成本。

    避免使用未绑定的跨分区查询。 评估和设计查询,以确保它们尽可能在单个逻辑分区内进行搜索。 使用查询筛选器控制查询目标逻辑分区。 如果查询必须跨逻辑分区进行搜索,请将查询绑定到仅搜索逻辑分区的子集,而不是完全扫描。

    设计一个索引策略,该策略考虑工作负荷中的常见作和查询。

建议

建议 益处
监视每秒 RU 的使用情况和模式。 使用查询和其他数据研究技术在应用程序代码中查找反模式。 使用指标监视从 Azure Cosmos DB 部署早期开始的 RU 消耗量,有助于识别消耗过多 RU 的低效查询和作。 可以优化查询以降低成本。
自定义 索引策略 ,使其与工作负荷保持一致。 仅根据需要为常见查询编制索引的路径使用索引策略。

对于写入密集型工作负荷,请禁用查询中不使用的列的自动索引。
默认索引策略为项中的所有路径编制索引,并且可能会显著影响 RU 消耗和成本。 自定义索引策略可让你根据特定要求定制索引策略。 此方法有助于确保最佳性能和资源使用情况。
为工作负荷选择 分区键 ,以便均匀分配吞吐量消耗量和跨逻辑分区的数据存储。 避免接收不成比例的流量的热分区。 不平衡的分区可以提高吞吐量成本和暂时性错误。

选择还应尽量减少未限定跨分区查询的数量。 使用最常见的搜索查询来确定可能只运行单分区或边界跨分区查询的潜在分区键。
选择正确的分区键均匀分布数据,从而减少热分区的可能性并优化吞吐量消耗。 此方法可以显著提高效率和降低成本。
为 Azure Cosmos DB 实例选择正确的预配吞吐量选项。 在 无服务器预配的吞吐量 与手动预配或自动缩放之间进行选择。 根据工作负荷的特定需求,在数据库或容器级别应用这些选项。

通常,小型工作负荷和开发/测试工作负荷受益于无服务器吞吐量或数据库级别的手动共享吞吐量。 更大的任务关键型工作负荷可能会受益于容器级别的预配吞吐量。
选择正确的预配吞吐量选项有助于通过避免过度预配或预配不足来优化成本。 它还可降低运营成本,同时确保应用程序能够有效地处理不同的流量模式。
为应用程序配置 默认一致性级别 。 如果适用,请降级客户端会话中的 默认一致性级别

考虑在更高一致性级别下读取所带来的更高成本。 你可能并不总是需要更改标准默认一致性级别,或在客户端会话中替代它。
为应用程序选择合适的一致性级别可确保在数据一致性、可用性、性能和成本之间实现所需的平衡。
对于开发/测试工作负荷,请使用 Azure Cosmos DB 模拟器,该模拟器也可用作 Docker 容器映像 模拟器可降低开发/测试和持续集成用例的成本。
使用 事务批处理操作。 设计分区,以便在逻辑分区键内利用事务性批处理操作来插入数据。

使用客户端 SDK 中的批处理作在单个事务请求中插入、更新或删除多个文档。
在 Azure Cosmos DB 中使用事务批处理作有助于减少单个请求的数量。 此方法有助于降低延迟并提高吞吐量效率。
实现 生存时间(TTL) 以自动删除不必要的数据。 如果需要,请将过期的数据导出到低成本的存储解决方案。 使用 TTL 可确保数据库保持整洁,从而优化存储成本。 将过期数据导出到低成本存储解决方案可以进一步降低成本,同时保留历史数据以实现合规性目的。
考虑为大量聚合提供一个分析存储 Azure Cosmos DB 分析存储会自动将数据同步到单独的列存储,以便针对大型聚合、报告和分析查询进行优化。

卓越运营

卓越运营主要侧重于 开发实践、可观测性和发布管理的各个过程。

卓越运营设计原则 提供了一个高级设计策略,用于实现这些运营需求目标。

设计清单

根据面向卓越运营的设计审查清单开始你的设计策略,定义与 Azure Cosmos DB for NoSQL 相关的可观测性、测试和部署的流程。

  • 监视 Azure Cosmos DB 实例。 在工作负载监视解决方案中包含跨区域分布的 Azure Cosmos DB 实例。

    在客户端应用程序中创建标识符以区分工作负荷。 考虑标志(如用户代理后缀)来标识每个日志条目或指标应与之关联的工作负荷。

    起草日志和指标监视策略,以区分不同的工作负荷、标记异常方案、跟踪异常和错误中的模式以及跟踪主机性能。

    定义多个警报,以监视限制流量、分析流量分配以及跟踪数据规模。

    根据分区和索引设计规划预期的指标阈值。 创建一个计划来监视这些指标,以确定它们与计划阈值的接近程度。

  • 通过基础设施即代码(IaC)自动化部署。 在代码部署实践中合并所有 Azure Cosmos DB 更改,包括基础结构部署和配置更改。

    创建并强制实施最佳做法,以自动部署 Azure Cosmos DB for NoSQL 帐户和资源。

    确保团队使用相同的模板部署到其他非生产环境。

建议

建议 益处
确保应用程序开发人员使用最新版本的开发人员 SDK。 有关详细信息,请参阅 .NET SDKJava SDK。 每个 Azure Cosmos DB for NoSQL SDK 都有最低建议的版本。 使用最新版本的开发人员 SDK 有助于维护应用程序的性能、安全性和兼容性。
使用每个 SDK 的诊断注入技术捕获补充诊断。 这些技术将添加有关工作负荷的补充信息以及默认指标和日志。 有关详细信息,请参阅 .NET SDKJava SDK 通过注入诊断,可以捕获自定义指标、跟踪和日志,以改进故障排除和优化应用程序。 可以监视默认指标和日志未涵盖的工作负荷的特定方面。
为主机资源创建 警报 由于客户端主机问题,连接和可用性问题可能发生。 使用使用 Azure Cosmos DB for NoSQL SDK 的客户端应用程序监视主机上的 CPU、内存和存储等资源。
通过使用诸如规范化 RU 消耗等指标来创建吞吐量节流警报。 此指标度量数据库或容器上预配吞吐量的百分比使用情况。

使用警报跟踪此指标何时超过预期阈值。 随着时间的推移,在详细了解工作负荷时查看和调整警报。
如果吞吐量限制始终为 100%,则请求可能会返回暂时性错误。 通过基于此指标创建警报,可以在使用量超过定义的阈值时收到通知。 在影响应用程序性能之前,可以采取纠正措施。
使用查询性能 指标 跟踪一段时间内排名靠前的查询的性能。 如果查询性能不佳,请对性能进行故障排除并应用查询最佳做法。 通过性能指标,可以更好地了解查询的运行方式以及潜在瓶颈的位置。 此信息可帮助你就索引策略和查询优化做出明智的决策。
使用模板自动部署帐户资源。 请考虑 使用 Azure 资源管理器BicepTerraform 模板自动部署帐户和后续资源。 IaC 模板有助于在描述性模型中定义基础结构。 它们有助于实现可重复性和一致性,并帮助维护统一且可预测的工作负荷环境。
跟踪 关键指标 ,如按分区的 RU 使用情况、吞吐量控制,以及按类型的请求量,以识别工作负荷中的常见问题。 监视这些关键指标有助于了解数据库在不同条件下的表现。 监视还有助于识别常见问题,以便采取纠正措施。

性能效率

性能效率就是通过管理容量来保持用户体验,即使负载增加也不例外。 该策略包括缩放资源、识别和优化潜在瓶颈,以及优化峰值性能。

性能效率设计原则 提供了一个高级设计策略,用于根据预期使用量实现这些容量目标。

设计清单

根据 性能效率的设计评审清单 ,根据 Azure Cosmos DB for NoSQL 的关键绩效指标定义基线,启动设计策略。

  • 规划和主动管理 Azure Cosmos DB 容量。 为应用程序定义性能基线。 测量可能需要处理的并发用户和事务数。 考虑工作负荷特征,例如平均用户流、常见作和使用量峰值。

    研究目标用户。 确定哪些 Azure 区域最接近它们。

  • 优化数据设计。 设计项目,使其相应的 JSON 文档尽可能小。 如有必要,请考虑在多个项之间拆分数据。

    使项的大小小于 100 KB。 对于常见的读取和写入操作,较大的项消耗更多的吞吐量。 查询投影所有字段的较大项还会显著增加吞吐量成本。

  • 选择适当的层、功能和计费模型。 确定工作负荷是否需要分析存储。 对于复杂的查询,请考虑分析存储和服务,例如 Azure Synapse Link

  • 优化部署模型。 将 Azure Cosmos DB for NoSQL 部署到离最终用户最近的区域。 |通过将 Azure Cosmos DB for NoSQL 部署到最靠近最终用户的区域来减少延迟。

  • 优化查询性能。 查看 查询性能提示 ,并应用适用于用例的策略。

    标识使用一个或多个排序字段的查询。 此外,确定影响多个字段的操作。 在索引策略设计中显式包括这些字段。

    设计大型工作负载时,应尽可能使用批量操作。

    识别子数组上的查询,并确定它们是否是 更高效的子查询的候选项。

    研究最常见的复杂查询。 标识使用多个查找、联接或聚合的查询。 在设计分区键或索引策略时,务必考虑这些查询。

    对于最常见的查询,请确定每个页面所需的结果数。 此数字可帮助你为预提取的结果正式确定一个缓冲项计数。

  • 优化代码逻辑。 在大多数 SDK 中,对 CosmosClient 类使用单一实例模式。 在大多数 SDK 中将客户端类用作单例。 客户端类管理自身的生命周期,并设计为不可释放。 不断创建和销毁实例可能会导致性能降低。

建议

建议 益处
使用 容量计算器 等工具来确定性能基线所需的吞吐量量。 使用 自动缩放 等功能缩放实际吞吐量,以更紧密地匹配实际工作负荷。 之后监视实际吞吐量消耗情况并进行调整。 使用容量计算器可帮助你最初就预配资源做出明智的决策。 可以确保数据库可以处理预期的负载,而无需不必要的成本。 自动缩放功能会根据实际工作负荷需求自动调整预配的吞吐量。
适当时,在客户端和服务器端使用优化技术。 利用内置 集成缓存。 配置 SDK 以管理每页预提取或 缓冲的项目数,并返回这些项目。 代码优化技术可以提高用户体验,并通过帮助降低重复读取和查询的 RU 费用,提高客户端和服务器端应用程序的效率。 这些优势可以降低成本。
在离最终用户最近的区域中部署 Azure Cosmos DB 实例。 将 .NETJava SDK 配置为优先选择接近最终用户的区域。

利用读取复制功能,无论你在单个区域或多个区域中如何配置写入操作,都能提供优化的读取性能。
将数据库部署到离最终用户最近的区域有助于降低延迟并提高用户体验。 不论写入操作如何配置,读取复制都能实现高性能读取操作。
直接模式 配置 SDK,以获得最佳性能。 此模式允许客户端直接打开到服务中的分区的传输控制协议(TCP)连接,并直接在没有中间网关的情况下发送请求。 直接模式提供更好的性能,因为网络跃点较少。
在需要高吞吐量的情况下,使用客户端 SDK 的 批量功能 。 批量功能会自动管理和批处理作,以最大程度地提高吞吐量。 使用批量功能可以减少后端请求的数量,并有效地跨分区分配任务。 此方法可提高性能和资源使用率。
禁用批量操作的索引。 如果有多个插入、替换或更新插入操作,请在使用相应 SDK 的批量支持时禁用索引,以提高操作速度。 可以稍后立即重新启用索引。 在批量操作期间禁用索引,可以减少与维护索引相关的开销。 可以更好地利用资源进行批量作,从而加速数据插入和更新。
为复杂作中的字段创建 复合索引 。 考虑对 ORDER BY 具有多个字段的语句使用复合索引。 复合索引可以提高对多个字段的作效率,从而使数据检索快速高效。
优化主机客户端机器以支持 SDK。 对于最常见的情况,请在使用 . NETJava SDK 的 64 位主机计算机上安装至少四个核心和 8 GB 内存。

在主机上启用 加速网络
使用规格较高的计算机可确保 SDK 可以同时处理更多作。 加速网络有助于降低延迟,从而增加响应时间。
从战略上使用子查询来优化联接大型数据集的查询。 使用子查询在项内联接数组之前筛选数组,从而优化自联接表达式

对于跨分区查询,请优化查询,以包含分区键上的筛选器,以优化查询路由到尽可能少的分区。
如果涉及多个数组且未筛选,则联接子数组的查询可能会增加复杂性。 通过使用子查询,可以在联接数组之前对其进行筛选,从而提高自联接表达式的效率。
对最复杂的查询使用 分析工作负荷

如果在大型容器上运行频繁的聚合或联接查询,请考虑在 Azure Synapse Analytics 中启用分析存储和执行查询。
分析工作负荷独立于事务工作负荷,并针对处理复杂查询进行了优化,从而防止性能下降,并确保更快的结果。

Azure 策略

Azure 提供了一组与用于 NoSQL 的 Azure Cosmos DB 及其依赖项相关的大量内置策略。 可以通过 Azure Policy 审核上述一些建议。 例如,可以检查以下情况:

  • Azure Cosmos DB 帐户部署到至少两个区域。

  • 为区域冗余适当配置 Azure Cosmos DB 数据库帐户。

  • Azure Cosmos DB 数据库帐户应禁用本地身份验证方法,以便身份验证需要Microsoft Entra 标识。

  • 已禁用公用网络访问,以便 Azure Cosmos DB 帐户不会在公共 Internet 上公开。

  • 通过资源提供程序创建 Azure Cosmos DB 数据库和容器时,应限制最大吞吐量。

若要进行全面的治理,请查看 适用于 NoSQL 的 Azure Cosmos DB 的 Azure Policy 内置定义 ,以及可能影响数据存储安全性的其他策略。

Azure 顾问建议

Azure 顾问是一名个性化的云顾问,可帮助你遵循最佳做法来优化 Azure 部署。

有关详细信息,请参阅 Azure 顾问