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

Azure API for FHIR 的自动缩放

重要

Azure API for FHIR 将于 2026 年 9 月 30 日停用。 请按照迁移策略,在该日期之前转换到Azure Health Data Services FHIR® 服务。 由于 Azure API for FHIR 停用,从 2025 年 4 月 1 日开始,不允许使用新的客户部署。 Azure Health Data Services FHIR 服务是 Azure API for FHIR 的演化版本,可让客户管理 FHIR、DICOM 和医疗技术服务,并集成到其他 Azure 服务。

Azure API for FHIR 作为托管服务,让客户能够存储符合 Fast Healthcare 互操作性资源(FHIR®)标准的医疗保健数据,并通过服务 API 安全地交换这些数据。 为了适应不同的事务工作负荷,客户可以使用手动缩放或自动缩放。

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

在数据库级别自动缩放

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

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

以下部分提供有关如何在数据库级别启用自动缩放的指导。

启用自动缩放

一般情况下,客户在工作负荷变化很大且不可预知时应考虑自动缩放。

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

注释

自动缩放功能在 Azure 门户中不可用。

RU/s 的自动缩放

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

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

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

  • 示例 1:有 1 GB 数据,预配 RU/s 的最高值为 10,000。 最小值为 Max (400, 10,000/10, 1x40) = 1000。 使用第二个数字 10,000/10 = 1000
  • 示例 2:你有 20 GB 的数据,预配 RU/s 的最高值为 100,000。 最小值为 Max (400, 100,000/10, 20x40) = 10,000。 使用第二个数字 100,000/10 =10,000
  • 示例 3:你有 80 GB 的数据,预配的最高 RU/秒为 300,000。 最小值为 Max (400, 300,000/10, 80x40) = 30,000。 使用第二个数字 300,000/10 = 30,000

如果它是有效数字且不超过 100,000RU/s,则可以通过门户调整最大值TmaxRU/s值。 可以创建支持工单以请求大于 100,000 的 Tmax 值。

注释

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

计算层面的自动缩放

以下是为 FHIR 服务计算级别定义的自动缩放策略。

  • 缩放触发器

缩放触发器描述何时执行服务缩放。 定期检查触发条件中定义的条件,以判断是否需要对服务进行缩放。 当前支持的触发器包括:平均 CPU、最大工作线程数、平均 LogWrite、平均数据 IO。

  • 扩展机制

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

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

FAQ

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

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

metrics_new_chart的屏幕截图

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

cosmosdb_collection_size的屏幕截图

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

  • 手动缩放:存储空间 (GB) * 40
  • 自动缩放:以 GB 为单位的存储 * 400

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

我已启用自动缩放,如何切换到手动缩放?

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

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

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

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

后续步骤

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

注释

FHIR® 是 HL7 的注册商标,并经 HL7 授权使用。