将 Pub/Sub 指标用作伸缩信号的最佳实践

如果您使用 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 流控制机制,以防止任务因缺少指标而意外缩减而导致任务过载。