将 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 的监控指标。 它还支持多个信号。

    如需了解详情,请参阅 Pod 横向自动扩缩

出现指标缺口时如何处理

不要认为缺少指标意味着没有 过程。例如,如果您为了应对缺失指标,将处理任务缩减为零,那么在此期间已经存在的待处理消息或发布的消息可能不会被使用。这会增加端到端延迟时间。 为尽可能缩短延迟时间,请将任务数下限设置为大于零, 始终准备好处理发布的消息 即使最近的 Pub/Sub 指标指示空队列也是如此。

GCE 自动扩缩器和 GKE HPA 均旨在在指标不可用时保持当前副本数量。这提供了一个安全网, 可用指标

您还可以实现 Pub/Sub 流控制机制,以防止任务因缺少指标而意外缩减而导致任务过载。