如果您使用 Pub/Sub 指标作为信号来自动扩缩流水线,请参考以下建议。
使用多个信号自动扩缩流水线
请勿仅使用 Pub/Sub 指标来自动扩缩流水线。这可能会导致您的自动扩缩决策出现单点故障的情况。而是应使用信号组合来触发自动扩缩。额外信号的一个示例是客户端的 CPU 利用率。此信号可以指明客户端任务是否正在处理工作,以及扩容是否可以让客户端任务处理更多工作。以下是可用于流水线的其他 Cloud 产品信号示例:
Compute Engine (GCE) 支持根据 CPU 利用率和 Monitoring 指标等信号进行自动扩缩。Compute Engine 还支持多个指标和多个信号,以提高可靠性。
如需详细了解如何根据 Monitoring 指标进行伸缩,请参阅根据 Monitoring 指标进行伸缩。如需详细了解如何根据 CPU 利用率进行伸缩,请参阅根据 CPU 利用率进行伸缩。
Google Kubernetes Engine (GKE) Pod 横向自动扩缩 (HPA) 支持根据资源用量(例如 CPU 和内存用量)、自定义 Kubernetes 指标以及外部指标(例如 Pub/Sub 的 Monitoring 指标)进行自动扩缩。它还支持多个信号。
如需了解详情,请参阅 Pod 横向自动扩缩。
如何处理出现的指标缺口
请勿假定没有指标就表示没有要处理的消息。例如,如果您为了应对缺失指标,将处理任务缩减为零,那么在此期间已经存在的待处理消息或发布的消息可能不会被使用。这会增加端到端延迟时间。为了最大限度地缩短延迟时间,请将任务数量下限设置为大于零,以便您始终准备好处理已发布的消息,即使近期的 Pub/Sub 指标显示队列为空也是如此。
GCE 自动扩缩器和 GKE HPA 均旨在在指标不可用时保持当前副本数量。这在没有指标可用时提供了一项保障。
您还可以实现 Pub/Sub 流控制机制,以防止任务因缺少指标而意外缩减而导致任务过载。