本文將協助您選擇適合業務需求的 Pub/Sub 訂閱類型。
事前準備
- 瞭解訂閱項目。
Pub/Sub 訂閱項目比較表
下表提供一些指引,協助您為應用程式選擇合適的提交機制:
Pub/Sub 訂閱項目支援的功能 | |
---|---|
用途 |
提取訂閱項目
|
推送訂閱
|
|
匯出訂閱項目
|
|
端點 |
提取訂閱項目
只要是具備授權憑證的網際網路裝置,就能呼叫 Pub/Sub API。 |
推送訂閱
|
|
匯出訂閱項目
|
|
負載平衡 |
提取訂閱項目
|
推送訂閱
推送端點可以是負載平衡器。 |
|
匯出訂閱項目
Pub/Sub 服務會自動平衡負載。 |
|
設定 |
提取訂閱項目
不需要設定。 |
推送訂閱
|
|
匯出訂閱項目
|
|
流量控制 |
提取訂閱項目
訂閱者用戶端會控制傳送速率。訂閱者可以動態修改確認期限,讓訊息處理時間可任意延長。 |
推送訂閱
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 串流訊息」。
後續步驟
瞭解各項訂閱類型的工作流程: