对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

Atlas Stream Processing 垂直自动扩展

垂直自动扩缩会根据流处理器的资源使用情况自动调整其 层级。当您启用自动扩展时,Atlas Stream Processing 会在您定义的层级范围内扩展或缩减处理器。您无需要手动停止并重启处理器以更改其层级。

自动伸缩可帮助您处理波动的工作负载,吸收意外的流量峰值,并避免在处理器耗尽其层级资源时发生的故障。由于Atlas Stream Processing在内部管理扩展决策,因此您无需自行监控使用情况和调整处理器大小。

请考虑在以下情况下启用垂直自动伸缩:

  • 不确定的初始大小:如果无法准确估计处理器所需的层级,请从较小的层级开始,并允许自动扩展来调整层级以匹配实际负载。

  • 流量波动或增长:如果工作负载出现自然增长或周期性峰值,自动扩展功能会在高需求期间增加资源,并在低需求期间减少资源。

  • 操作韧性:如果容量过小的处理器在高峰事件期间出现故障,自动伸缩功能会自动提升层级,保持处理器运行。

当您为流处理器启用自动伸缩时, Atlas Stream Processing会监控处理器的 CPU 和内存使用情况,并将其与内部托管的阈值进行比较。 Atlas Stream Processing控制这些阈值以平衡响应能力和稳定性,并且您无法配置它们。

要更改处理器的层级,Atlas Stream Processing 会执行以下操作:

1

Atlas Stream Processing会停止当前层级的处理器。

2

Atlas Stream Processing 将处理器移动到层级层次结构中的下一个层级:SP2、SP5、SP10、SP30、SP50。

3

Atlas Stream Processing在新层级上重新启动处理器,并从最后提交的检查点恢复操作,因此不会丢失数据。

当处理器的资源使用量持续超过以下纵向扩展阈值之一时, Atlas Stream Processing会将处理器扩展到下一个更高层级:

  • CPU 使用率已持续 60 分钟超过 90%

  • 内存使用率高于 80% 持续 60 分钟,或高于 90% 持续 30 秒

Atlas Stream Processing 还会在处理器内存不足时对处理器进行扩展。启用自动扩展时,出现内存不足的情况会将处理器扩展到下一个更高的层级,而不是导致处理器失败。

向上扩展可快速响应持续的资源压力,从而保护处理器可用性。

仅当下一个更层级小于或等于配置的 maxTier 时, Atlas Stream Processing才会向上扩展处理器。

Atlas Stream Processing 将处理器向下扩展到下一个更低层级,当处理器的 CPU 和内存使用率超过两天保持低于降级阈值时。缩小阈值是下一个更低层级的扩展阈值,减去 10% 的缓冲,这样可以防止处理器立即扩展回来。这两天的稳定期使得缩小扩展故意变慢,以防止层级之间频繁扩展。

仅当下一个较低层级大于或等于配置的 minTier 时, Atlas Stream Processing才会缩减处理器。

Atlas Stream Processing管理扩展阈值时,您可以通过以下两个设置控制处理器可扩展的层级范围:

设置
说明

minTier

处理器可以扩展到的最低层级。保证资源基线水平并设置费用下限。

maxTier

处理器可以扩展到的最高层级。限制资源消耗和费用,并防止异常峰值将处理器扩展到不必要的昂贵层级。

如果在启用自动伸缩时未指定 或 , AtlasminTiermaxTier Stream Processing将默认使用流处理工作区配置:

  • 如果您不指定 minTier, Atlas Stream Processing将使用流处理工作区默认层级和启动处理器的层级中较低者。当默认层级于起始层级时,使用较低的值可防止无效配置。

  • 如果您不指定 maxTier, Atlas Stream Processing将使用流处理工作区的最大层级大小。如果流处理工作区没有最大层级大小,处理器将返回错误并且不会启动。

某些管道功能需要层级。示例,使用故障转移处理器的处理器需要的层级为 SP10。将minTier 至少设置为处理器管道所需的层级。

下表显示了 minTier 和 maxTier 如何绑定扩展操作:

层级配置
当前层级
扩展操作
结果层

minTier: SP5, maxTier: SP30

SP10

扩大规模

SP30

minTier: SP5, maxTier: SP30

SP30

扩大规模

仍为 SP30(已达到最大值)

minTier: SP5, maxTier: SP30

SP10

缩减

SP5

minTier: SP5, maxTier: SP30

SP5

缩减

剩余 SP5 (已达到最小值)

您可以使用 sp.processor.start() 上的 autoscaling 选项或 mongosh 中的sp.processor.modify() 方法启用、修改和禁用流处理器的自动伸缩。 Atlas Stream Processing会保留自动伸缩配置,因此,如果在不进行更改的情况下停止并重新启动处理器,处理器会重复使用其之前的配置。

要以 Stream Processing 工作区域的默认层级和最大层级为界限启用自动扩展,请使用以下语法:

sp.processor.start({autoscaling: {enabled: true}})

要启用具有显式层级边界的自动伸缩,请指定 minTier 和 maxTier:

sp.processor.start(
{autoscaling: {enabled: true, minTier: "SP2", maxTier: "SP50"}}
)

要设立处理器启动的层级,同时允许处理器在不同范围内扩展,请指定 tier 和 autoscaling 选项:

sp.processor.start(
{tier: "SP10", autoscaling: {enabled: true, minTier: "SP5", maxTier: "SP30"}}
)

要更改现有处理器的层级范围,请停止处理器,然后使用新值修改层级。必须停止处理器,然后再修改它。Atlas Stream Processing 仅更改您提供的值:

sp.processor.modify(
{autoscaling: {enabled: true, minTier: "SP2", maxTier: "SP30"}}
)

要禁用自动扩展,请停止处理器并将 enabled设立为 false:

sp.processor.modify({autoscaling: {enabled: false}})

当您禁用自动扩展时, Atlas Stream Processing会将处理器的 validTier 固定到其 tier 基线。

启用自动扩展后, Atlas Stream Processing会跟踪处理器的两个层级值:

  • tier: 您设置的基线层级。Atlas Stream Processing 不会通过自动缩放来改变此值。它仅在您设置新基线时改变,该基线将在您下一个启动处理器时生效。

  • effectiveTier:只读值,显示处理器实际运行的层级。启用自动伸缩后, Atlas Stream Processing会在 minTier 和 maxTier设立的范围内调整 effectiveTier。禁用自动扩展时,effectiveTier 匹配 tier。

如果您在自动伸缩更改处理器的 effectiveTier 后停止该处理器,Atlas Stream Processing会在其最后一个 effectiveTier 上重新启动该处理器,而不是最初启动该处理器时所在的 tier 上。此行为可让处理器恢复之前的工作负载,而无需等待再次自动伸缩。

要查看处理器的自动伸缩配置和当前层级,请使用 sp.processor.stats() 方法。输出包括 tier 基线、只读 effectiveTier 以及带有 minTier 和 maxTier 的 autoscaling对象:

sp.processor.stats()
{
ok: 1,
name: 'sampleProc',
state: 'STARTED',
tier: 'SP10',
effectiveTier: 'SP10',
autoscaling: { minTier: 'SP2', maxTier: 'SP50' },
stats: {
...
},
...
}

如果使用超出配置的自动伸缩范围(低于 minTier 或高于 maxTier)的 tier 值启动处理器,则处理器将返回错误并且不会启动。

如果处理器在配置的 maxTier 耗尽其资源,则Atlas Stream Processing 的行为如下:

  • 内存耗尽:处理器出现内存不足错误。

  • CPU 耗尽:处理器继续运行。

如果处理器达到 maxTier 并且无法跟上其工作负载,请考虑优化您的管道逻辑或增加 maxTier。

Atlas Stream Processing 记录每个向上扩展和向下扩展事件。每条记录都会识别处理器和 Stream Processing 工作区、事件是扩展还是扩展缩减、处理器移入和移出的层级以及触发事件的指标。要了解如何查看扩展事件和配置警报,请参阅 监控 Stream Processors。

要学习;了解如何创建和管理启用自动伸缩的流处理器,请参阅开发流处理器。

要为您的工作负载选择适当的层级范围,请参阅层级选择指南。