選擇訂閱項目類型

本文將協助您選擇適合業務需求的 Pub/Sub 訂閱類型。

事前準備

Pub/Sub 訂閱項目比較表

下表提供一些指引,協助您為應用程式選擇合適的提交機制:

Pub/Sub 訂閱項目支援的功能
用途 提取訂閱項目
  • 大量訊息 (每秒 GB)。
  • 訊息處理的效率和總處理量至關重要。
  • 無法設定含非自行簽署 SSL 憑證的公開 HTTPS 端點環境。
推送訂閱
  • 必須由相同 Webhook 處理的多個主題。
  • App Engine 標準和 Cloud Run 功能訂閱者。
  • 無法設定依附元件 (例如憑證和用戶端程式庫) 的環境。 Google Cloud
匯出訂閱項目
  • 大量訊息,每秒可達數百萬則。
  • 訊息會直接傳送至 Google Cloud 資源,不需任何額外處理。
端點 提取訂閱項目

只要是具備授權憑證的網際網路裝置,就能呼叫 Pub/Sub API。

推送訂閱
  • 在公開網站上可存取的 HTTPS 伺服器,其中含有非自行簽署的憑證。
  • 接收端點可能會與 Pub/Sub 訂閱分離,因此來自多個訂閱的訊息會傳送至單一端點。
匯出訂閱項目
  • BigQuery 訂閱項目的 BigQuery 資料集和資料表。
  • Cloud Storage 訂閱項目的 Cloud Storage 值區。
負載平衡 提取訂閱項目
  • 多個訂閱者可以對同一個「共用」訂閱項目發出拉取呼叫。
  • 每位訂閱者都會收到部分訊息。
推送訂閱

推送端點可以是負載平衡器。

匯出訂閱項目

Pub/Sub 服務會自動平衡負載。

設定 提取訂閱項目

不需要設定。

推送訂閱
  • 與訂閱者位於相同專案的 App Engine 應用程式不需要設定。
  • 您不需要在 Google Cloud 控制台中驗證推送端點。
  • 端點必須可透過 DNS 名稱存取,且已安裝 SSL 憑證。
匯出訂閱項目
  • BigQuery 訂閱項目必須具備 BigQuery 資料集和資料表,並設定適當的權限。
  • Cloud Storage 訂閱項目必須有 Cloud Storage 值區,並設有適當的權限。
流量控制 提取訂閱項目

訂閱者用戶端會控制傳送速率。訂閱者可以動態修改確認期限,讓訊息處理時間可任意延長。

推送訂閱

Pub/Sub 伺服器會自動實作流量控制。您不需要在用戶端處理訊息流程。不過,您可以透過傳回 HTTP 錯誤,表示用戶端無法處理目前的訊息負載。

匯出訂閱項目

Pub/Sub 伺服器會自動實作流程控管,以便最佳化訊息寫入 Google Cloud 資源的作業。

效率與總處理量 提取訂閱項目

允許批次提交、確認,以及大量並行使用,在 CPU 和頻寬較低的情況下達到高處理量。如果使用積極輪詢來縮短訊息傳送時間,可能會造成效率不彰的情況。

推送訂閱

每個要求傳送一個訊息,並限制尚未解決訊息的數目上限。

匯出訂閱項目

可由 Pub/Sub 伺服器動態處理可擴充性。

使用匯出訂閱項目的時機

如果沒有匯出訂閱項目,您就需要使用拉取或推送訂閱項目,以及訂閱者 (例如 Dataflow) 來讀取訊息,並將訊息寫入 Google Cloud 資源。如果訊息在儲存前不需要進行其他處理,就不需要執行 Dataflow 工作。

匯出訂閱項目有以下優點:

  • 部署簡單。您可以透過控制台、 Google Cloud CLI、用戶端程式庫或 Pub/Sub API 中的單一工作流程,設定匯出訂閱。

  • 成本低廉。降低包含 Dataflow 工作類似的 Pub/Sub 管道的額外成本和延遲時間。這項成本最佳化功能適用於不需要在儲存前進行額外處理的訊息系統。

  • 最少監控。匯出訂閱是多租戶 Pub/Sub 服務的一部分,您不必另外執行監控工作。

  • 彈性:BigQuery 訂閱項目可以使用所連結主題的結構定義,這在使用基本 Dataflow 範本從 Pub/Sub 寫入 BigQuery 時無法使用。同樣地,Cloud Storage 訂閱會根據檔案大小和經過的時間,提供可設定的檔案批次處理選項,但基本資料流範本無法設定這些選項,因此無法從 Pub/Sub 寫入 Cloud Storage。

不過,如果 Pub/Sub 系統需要先對資料進行轉換,才能將資料儲存在Google Cloud 資源 (例如 BigQuery 資料表或 Cloud Storage 值區),我們仍建議使用 Dataflow 管道。

如要瞭解如何使用 Dataflow 將資料從 Pub/Sub 串流至 BigQuery 並進行轉換,請參閱「從 Pub/Sub 串流至 BigQuery」一文。

如要瞭解如何使用 Dataflow 將資料從 Pub/Sub 串流至 Cloud Storage 並進行轉換,請參閱「使用 Dataflow 從 Pub/Sub 串流訊息」。

後續步驟

瞭解各項訂閱類型的工作流程: