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

Azure API for FHIR 的自动缩放

Azure API for FHIR 作为一种托管服务,允许客户保留符合快速医疗保健互操作性资源 (FHIR®) 的医疗保健数据,并通过服务 API 安全地交换它。 为了适应不同的事务工作负载,客户可以使用手动缩放或自动缩放。

Azure API for FHIR 在数据库和计算级别提供缩放功能。

在数据库级别自动缩放

默认情况下,Azure API for FHIR 设置为手动进行数据库缩放。 当事务工作负载已知且一致时,此选项非常适合。 客户可以通过门户将吞吐量 RU/s 调整为最多 100,000,并提交提高限制的请求。

自动缩放功能旨在根据工作负载自动缩放 Azure 资源(包括数据库吞吐量),从而消除数据层中可能存在的瓶颈。

让我们通过后续部分了解如何在数据库级别启用自动缩放

启用自动缩放的指南

一般而言,当工作负载变化很大且不可预知时,客户应考虑自动缩放。

若要启用自动缩放功能,客户需要创建一次性支持票证,以通过Azure 门户请求它。 Microsoft 支持团队根据支持优先级启用自动缩放功能。

注意

Azure 门户中无法使用自动缩放功能。

RU/秒的自动缩放

启用自动缩放后,系统会计算并设置初始 Tmax 值。 可伸缩性由最大吞吐量 RU/s 值 (Tmax) 控制,且在 0.1 *Tmax(或 Tmax 的 10%)和 Tmax RU/s 之间缩放。 随着总数据规模的增长,Tmax 将自动增加。 为了确保最大可伸缩性,Tmax 值应按原样保留。 但是,客户可以请求将该值更改为 Tmax 的 10% 到 100% 之间的值。

可以增加最大 RU/sTmax 值,直至服务支持的上限。 当服务繁忙时,吞吐量 RU/s 将纵向扩展到 Tmax 值。 当服务处于空闲状态时,吞吐量 RU/s 将纵向缩减到 Tmax 值的 10%。

您还可以减少最大 RU/sTmax 值。 减少最大 RU/s 时,可以设置的最小值为:MAX (4000, highest max RU/s ever provisioned / 10, current storage in GB * 400),舍入到最接近的 1000 RU/s

  • 示例 1:有 1 GB 的数据,预配的 RU/s 最大值为 10,000。 最小值为 Max (4000, 10,000/10, 1x400) = 4000。 使用第一个数字 4000。
  • 示例 2:有 20 GB 的数据,预配的 RU/s 最大值为 100,000。 最小值为 Max (4000, 100,000/10, 20x400) = 10,000。 使用第二个数字 100,000/10 =10,000。
  • 示例 3:有 80 GB 的数据,预配的 RU/s 最大值为 300,000。 最小值为 Max (4000, 300,000/10, 80x400) = 32,000。 使用第三个数字 80x400=32,000。

如果最大值 RU/sTmax 值有效且不超过 100, RU/s000,则可以通过门户调整。 可以创建支持票证来请求 Tmax 大于 100,000 的值。

注意

随着数据存储空间的增长,系统会自动将最大吞吐量增加到可支持该存储级别的下一个最高 RU/秒。

在计算级别自动缩放

为 FHIR 服务计算级别定义的自动缩放策略包括:

  • 缩放触发器

缩放触发器描述何时执行服务的缩放。 定期检查触发器中定义的条件,确定是否应缩放服务。 当前支持的所有触发器包括平均 CPU、最大工作线程数、平均 LogWrite、平均数据 IO。

  • 缩放机制

如果触发器检查确定需要缩放,则应用缩放机制。 此外,在缩放间隔过期(对于 Azure API for FHIR,该间隔设置为一分钟)之前,不会再次评估缩放触发器。

为了确保尽可能获得最佳结果,我们建议客户逐步提高其请求速率以匹配预期的推送速率,而不是一次性推送所有请求。

常见问题解答

如何估计所需的吞吐量 RU/秒?

数据大小是用于计算手动缩放和自动缩放所需的总吞吐量 RU/秒的几个因素之一。 可以使用“监视”下的“指标”菜单选项找到数据大小。 启动一个新图表,选择“指标”下拉框中的“Cosmos DB 集合大小”,然后选择“聚合”框中的“最大值”。

metrics_new_chart 屏幕截图

应能够看到所选时间段内的最大数据集合大小。 可在必要时更改“时间范围”,例如从“过去 30 分钟”更改为“过去 48 小时”。

cosmosdb_collection_size 屏幕截图

使用公式计算所需的 RU/秒。

  • 手动缩放:存储空间 (GB) * 40
  • 自动缩放:存储空间 (GB) * 400

请记住,这只是基于数据大小的估计值,还有其他因素会影响所需的 RU/秒。

我启用了自动缩放,如何手动迁移到缩放?

需要支持票证才能将自动缩放更改为手动缩放并指定吞吐量 RU/秒。 对于手动缩放,可以设置的最小值为:MAX (400, highest max RU/s ever provisioned / 100, current storage in GB * 40),舍入到最接近的 1000 RU/s。 此处使用的数字不同于自动缩放中使用的数字。

完成更改后,新的计费费率将基于手动缩放。

自动缩放有哪些成本影响?

由于自动管理预配的吞吐量单位,因此自动缩放功能会产生成本。 实际成本取决于每小时使用量,但请记住,预留吞吐量 RU/秒的最低成本为 Tmax 的 10%。 但是,此成本增加不适用于存储和运行时成本。 有关定价的详细信息,请参阅 Azure API for FHIR 定价

后续步骤

本文档介绍了 Azure API for FHIR 的自动缩放功能。 有关 Azure API for FHIR 的概述,请参阅

FHIR® 是 HL7 的注册商标,经 HL7 许可使用。