選擇訂閱項目類型

這份文件將協助您根據業務需求,選擇合適的 Pub/Sub 訂閱類型。

Pub/Sub 提供下列類型的訂閱項目:

  • 提取訂閱項目會使用訂閱端用戶端,向 Pub/Sub 伺服器要求訊息。

  • 推送訂閱會使用 Pub/Sub 伺服器,向訂閱者應用程式發出要求來傳送訊息。

  • 匯出訂閱項目:直接將訊息匯出至 Google Cloud資源。這些訂閱項目包括:

    • BigQuery 訂閱項目會將資料匯出至 BigQuery 資料表。

    • Cloud Storage 訂閱項目會將資料匯出至 Cloud Storage bucket。

Pub/Sub 訂閱項目比較表

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

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

可透過公開網路存取的 HTTPS 伺服器,且具備非自行簽署的憑證。

接收端點可能會與 Pub/Sub 訂閱項目分離,因此來自多個訂閱項目的訊息會傳送至單一端點。

匯出訂閱項目 訂閱項目會寫入 Google Cloud 資源,例如 BigQuery 資料表或 Cloud Storage 儲存空間。
負載平衡 提取訂閱項目 多個訂閱者可以對同一項訂閱項目發出提取呼叫。 每位訂閱者都會收到部分訊息。
推送訂閱

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

匯出訂閱項目

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

設定 提取訂閱項目

不需要設定。

推送訂閱
  • 如果 App Engine 應用程式與訂閱者位於相同專案,則不需要任何設定。
  • 在控制台中,不需要驗證推送端點。 Google Cloud
  • 端點必須可透過 DNS 名稱連線,且已安裝 SSL 憑證。
匯出訂閱項目 訂閱項目匯出的 Google Cloud 資源必須存在,且已設定適當權限。
流量控制 提取訂閱項目 訂閱者用戶端會控管傳送率。訂閱者可以動態修改確認期限,允許訊息處理時間任意延長。
推送訂閱 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 訂閱項目可以使用所連結主題的結構定義,但從 Pub/Sub 寫入 BigQuery 的基本 Dataflow 範本無法使用這項功能。同樣地,Cloud Storage 訂閱項目提供可設定的檔案批次處理選項,這些選項會根據檔案大小和經過的時間而定,但無法在從 Pub/Sub 寫入 Cloud Storage 的基本 Dataflow 範本中設定。

不過,如果 Pub/Sub 系統需要在資料儲存至Google Cloud 資源 (例如 BigQuery 資料表或 Cloud Storage 值區) 之前轉換資料,建議您還是使用 Dataflow 管道。

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

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

後續步驟

瞭解各訂閱類型的流程: