這份文件將協助您根據業務需求,選擇合適的 Pub/Sub 訂閱類型。
Pub/Sub 提供下列類型的訂閱項目:
提取訂閱項目會使用訂閱端用戶端,向 Pub/Sub 伺服器要求訊息。
推送訂閱會使用 Pub/Sub 伺服器,向訂閱者應用程式發出要求來傳送訊息。
匯出訂閱項目:直接將訊息匯出至 Google Cloud資源。這些訂閱項目包括:
BigQuery 訂閱項目會將資料匯出至 BigQuery 資料表。
Cloud Storage 訂閱項目會將資料匯出至 Cloud Storage bucket。
Pub/Sub 訂閱項目比較表
下表提供一些指引,協助您為應用程式選擇合適的傳送機制:
| Pub/Sub 訂閱項目支援的功能 | ||
|---|---|---|
| 用途 | 提取訂閱項目 |
|
| 推送訂閱 |
|
|
| 匯出訂閱項目 |
|
|
| 端點 | 提取訂閱項目 | 網路上任何具備授權憑證的裝置,都可以呼叫 Pub/Sub API。 |
| 推送訂閱 |
可透過公開網路存取的 HTTPS 伺服器,且具備非自行簽署的憑證。 接收端點可能會與 Pub/Sub 訂閱項目分離,因此來自多個訂閱項目的訊息會傳送至單一端點。 |
|
| 匯出訂閱項目 | 訂閱項目會寫入 Google Cloud 資源,例如 BigQuery 資料表或 Cloud Storage 儲存空間。 | |
| 負載平衡 | 提取訂閱項目 | 多個訂閱者可以對同一項訂閱項目發出提取呼叫。 每位訂閱者都會收到部分訊息。 |
| 推送訂閱 |
推送端點可以是負載平衡器。 |
|
| 匯出訂閱項目 |
Pub/Sub 服務會自動平衡負載。 |
|
| 設定 | 提取訂閱項目 |
不需要設定。 |
| 推送訂閱 |
|
|
| 匯出訂閱項目 | 訂閱項目匯出的 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 串流訊息」。
後續步驟
瞭解各訂閱類型的流程: