如果您使用 Pub/Sub 指标作为信号来自动扩缩流水线,请参考以下建议。
使用多个信号自动扩缩流水线
请勿仅使用 Pub/Sub 指标来自动扩缩流水线。这可能会导致您的自动扩缩决策出现单点故障。而应使用信号组合来触发自动扩缩。客户端的 CPU 利用率水平就是一个额外信号。此信号可以指示客户端任务是否正在处理工作,以及纵向扩容能否让客户端任务处理更多工作。下面列举了一些其他 Cloud 产品中可用于流水线的信号:
Compute Engine 支持根据 CPU 利用率和 Monitoring 指标等信号自动扩缩。 Compute Engine 还支持多个指标和多个信号,以提高可靠性。
如需详细了解如何使用 Monitoring 指标进行扩缩,请参阅根据 Monitoring 指标进行扩缩。如需详细了解如何根据 CPU 利用率进行扩缩,请参阅根据 CPU 利用率进行扩缩。
Google Kubernetes Engine Pod 横向自动扩缩 (HPA) 支持根据资源使用情况(例如 CPU 和内存用量、自定义 Kubernetes 指标)以及外部指标(例如 Pub/Sub 的 Monitoring 指标)进行自动扩缩。它还支持多个信号。
如需了解详情,请参阅 Pod 横向自动扩缩。
出现指标缺口时如何应对
不要假设缺少指标意味着没有要处理的消息。例如,为了响应缺少的指标,您将处理任务缩减为零,则已经在积压中的消息或在此期间发布的消息可能不会使用。这会增加端到端延迟时间。为了最大限度地缩短延迟时间,请将最小任务计数设置为大于零,以便您始终准备好处理已发布的消息,即使最近的 Pub/Sub 指标指示空队列也是如此。
Compute Engine 自动扩缩器和 Google Kubernetes Engine HPA 均可在指标不可用时维持当前副本数。在没有任何指标可用时,这样可以提供安全保障。
您还可以实现 Pub/Sub 流控制机制,以防止任务因缺少指标而意外缩减。
使用指标的区域版本
Pub/Sub 为通常用于自动扩缩的每个指标提供两个版本。请务必使用带有 by_region
后缀的版本:
如果您希望自动扩缩能够灵活应对单区域服务中断,请不要使用这些指标的全球版本。这些指标的全球版本需要计算已知有消息的所有区域的积压量,这意味着单个区域中的不可用量会导致数据缺口。相比之下,指标的 by_region
版本是按区域计算和报告积压量。如果无法针对单个区域计算积压,则该指标仍会报告其他区域的值。