使用 Pub/Sub 指標做為調整信號的最佳做法

如果您使用 Pub/Sub 指標做為信號,以便自動調度管道,請參考以下建議。

使用多個信號自動調整管道

請勿只使用 Pub/Sub 指標來自動調整管道資源配置。這可能會導致單一故障點,導致您無法做出適當的自動調整大小決策。請改用信號組合來觸發自動調整大小功能。額外信號的範例是用戶端的 CPU 使用率。這個信號可指出用戶端工作是否正在處理工作,以及是否可透過擴大規模讓用戶端工作處理更多工作。以下列舉幾種信號範例,這些信號來自其他 Cloud 產品,可用於管道:

  • Compute Engine 支援依據 CPU 使用率和監控指標等信號自動調度資源。Compute Engine 也支援多個指標和多個信號,可提高可靠性。

    如要進一步瞭解如何使用 Monitoring 指標進行資源調度,請參閱「根據 Monitoring 指標調度資源」。如要進一步瞭解如何根據 CPU 使用率調整規模,請參閱「根據 CPU 使用率執行資源調度」一文。

  • Google Kubernetes Engine 水平 Pod 自動調度資源 (HPA) 支援根據資源使用量 (例如 CPU 和記憶體使用量)、自訂 Kubernetes 指標和外部指標 (例如 Pub/Sub 的監控指標) 自動調度資源。也支援多個信號。

    詳情請參閱「水平 Pod 自動調度資源」。

如何處理指標缺口

請勿假設沒有指標就代表沒有要處理的郵件。舉例來說,如果您為了因應缺少指標而將處理工作縮減至零,則在這個期間內已在待處理工作中或已發布的訊息可能不會被使用。這會增加端對端延遲時間。為盡量減少延遲時間,請將最小工作數量設為大於零,這樣即使近期的 Pub/Sub 指標顯示佇列為空,您也能隨時處理已發布的訊息。

Compute Engine 自動調度資源和 Google Kubernetes Engine HPA 都是為了在無法取得指標時,維持目前的複本數量。在沒有可用指標的情況下,這項功能可提供安全防護網。

您也可以實作 Pub/Sub 流量控制機制,避免任務因缺少指標而意外縮減。

使用指標的地區版本

Pub/Sub 提供每個指標的兩個版本,通常用於自動調整大小。請務必使用附有 by_region 字尾的版本:

如果您希望自動調度資源功能能夠在單一地區停機時保持彈性,請勿使用這些指標的全域版本。這些指標的全域版本需要計算所有已知有訊息的區域的積壓量,也就是說,如果單一區域無法使用,就會導致資料缺口。相反地,by_region 版本的指標會依地區計算並回報積壓工作。如果無法為單一區域計算積壓工作,指標仍會回報其他區域的值。