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