Pub/Sub 是可擴充的非同步訊息服務,會分離產生訊息的服務與處理訊息的服務。
Pub/Sub 可讓服務以非同步方式通訊,延遲時間通常在 100 毫秒左右。
Pub/Sub 用於串流分析和資料整合管道,可載入及發布資料。這項服務可做為訊息導向中介軟體,用於整合服務,或做為佇列,用於平行處理工作,兩者效果同樣出色。
Pub/Sub 可讓您建立事件產生者和消費者的系統,稱為「發布者」和「訂閱者」。發布者會透過廣播事件,與訂閱者進行非同步通訊,而非透過同步遠端程序呼叫 (RPC)。
發布端會將事件傳送至 Pub/Sub 服務,而不考慮處理這些事件的方式或時間。接著,Pub/Sub 會將事件傳送至所有會對事件做出反應的服務。在透過 RPC 通訊的系統中,發布者必須等待訂閱者接收資料。不過,Pub/Sub 的非同步整合功能可提高整體系統的彈性和穩定性。
如要開始使用 Pub/Sub,請參閱快速入門導覽課程:使用 Google Cloud 控制台。如需更全面的介紹,請參閱「建構 Pub/Sub 訊息系統」。
常見用途
- 擷取使用者互動和伺服器事件。如要使用使用者應用程式的使用者互動事件,或系統的伺服器事件,可以將這些事件轉送至 Pub/Sub。接著,您可以使用 Dataflow 等串流處理工具,將事件傳送至資料庫。這類資料庫包括 BigQuery、Bigtable 和 Cloud Storage。Pub/Sub 可讓您同時從多個用戶端收集事件。
- 即時事件分布。無論是原始或經過處理的事件,都可提供給團隊和組織中的多個應用程式,以便即時處理。Pub/Sub 支援「企業事件匯流排」和事件導向應用程式設計模式。Pub/Sub 可與許多將事件匯出至 Pub/Sub 的系統整合。
- 在資料庫之間複製資料。Pub/Sub 通常用於發布資料庫的變更事件。這些事件可用於在 BigQuery 和其他資料儲存系統中,建構資料庫狀態和狀態記錄的檢視畫面。
- 平行處理和工作流程。您可以使用 Pub/Sub 訊息與 worker 溝通,有效率地將多項工作分配給多個 worker。這類工作的例子包括壓縮文字檔案、傳送電子郵件通知、評估 AI 模型,以及重新設定圖片格式。
- 企業事件匯流排。您可以建立企業級的即時資料共用匯流排,在整個組織中發布業務事件、資料庫更新和數據分析事件。
- 從應用程式、服務或 IoT 裝置串流資料。 舉例來說,SaaS 應用程式可以發布即時事件動態饋給。或者,住宅感應器可以將資料串流至 Pub/Sub,以便透過資料處理管道在其他 Google Cloud 產品中使用。
- 重新整理分散式快取。舉例來說,應用程式可以發布撤銷事件,更新已變更物件的 ID。
- 透過負載平衡確保可靠性。舉例來說,服務的執行個體可能部署在多個可用區的 Compute Engine 上,但訂閱同一個主題。當服務在任何可用區中失敗時,其他可用區會自動接管負載。
比較 Pub/Sub 與其他訊息技術
Pub/Sub 結合 Apache Kafka 和 Pulsar 的水平擴充能力,以及 Apache ActiveMQ 和 RabbitMQ 等訊息中介軟體的功能。這類功能包括無效信件佇列和篩選。
Pub/Sub 從訊息中介軟體採用的另一項功能是每則訊息平行處理,而非分區型訊息傳遞。Pub/Sub 會將個別訊息「租賃」給訂閱端用戶端,然後追蹤特定訊息是否已成功處理。
相較之下,其他可水平擴充的訊息系統則使用分區進行水平擴充。這會強制訂閱者依序處理每個分區中的訊息,並將並行用戶端數量限制為分區數量。逐一處理訊息可最大程度地提高訂閱者應用程式的平行處理能力,並有助於確保發布者和訂閱者的獨立性。
比較服務對服務和服務對用戶端通訊
Pub/Sub 適用於服務對服務通訊,而非與使用者或 IoT 用戶端通訊。其他模式則由其他產品提供更完善的支援:
- 用戶端-伺服器:如要在行動/網頁應用程式和服務之間傳送訊息,請使用 Firebase 即時資料庫和 Firebase 雲端通訊等產品。
- 非同步服務呼叫。使用 Cloud Tasks。
您可以結合這些服務,建構「用戶端 -> 服務 -> 資料庫」模式。例如,請參閱「透過 WebSocket 串流 Pub/Sub 訊息」教學課程。
整合
Pub/Sub 與其他 Google Cloud 產品有多項整合,可建立功能完整的訊息系統:
- 串流處理和資料整合。Dataflow 支援,包括 Dataflow 範本和 SQL,可處理資料並將資料整合至 BigQuery 和 Cloud Storage 上的資料湖泊。您可以在Google Cloud 控制台的 Pub/Sub 和 Dataflow UI 中,找到將資料從 Pub/Sub 移至 Cloud Storage、BigQuery 和其他產品的 Dataflow 範本。您也可以與 Apache Spark 整合,尤其是透過 Managed Service for Apache Spark 管理時。您可以使用 Data Fusion,以視覺化方式組合在 Spark + Managed Service for Apache Spark 上執行的整合和處理管道。
- 監控、快訊與記錄功能Monitoring 和 Logging 產品支援。
- 驗證與 IAM。Pub/Sub 採用其他 Google Cloud 產品使用的標準 OAuth 驗證,並支援精細的 IAM,可控管個別資源的存取權。
- API。Pub/Sub 採用標準 gRPC 和 REST 服務 API 技術,並提供多種語言的用戶端程式庫。
- 觸發條件、通知和 Webhook。Pub/Sub 提供推送式訊息傳遞功能,可將訊息以 HTTP POST 要求的形式傳送至 Webhook。您可以使用 Cloud Functions 或其他無伺服器產品,實作工作流程自動化。
- 自動化調度管理。Pub/Sub 可透過宣告方式整合至多步驟無伺服器工作流程。大數據和數據分析自動化調度管理通常透過 Managed Airflow 完成,該服務支援 Pub/Sub 觸發條件。您也可以將 Pub/Sub 與 Application Integration 整合,這是一項整合平台即服務 (iPaaS) 解決方案。Application Integration 提供 Pub/Sub 觸發條件,可觸發或啟動整合。
- Integration Connectors。這些連接器可讓您連結至各種資料來源。透過連接器,Google Cloud 服務和第三方業務應用程式都能透過透明的標準介面,公開給整合項目使用。如果是 Pub/Sub,您可以建立 Pub/Sub 連接器,用於整合作業。
後續步驟
- 請參閱 Pub/Sub 快速入門導覽課程。
- 閱讀 Pub/Sub 服務的基本概念。
- 瞭解如何建構 Pub/Sub 訊息系統。
- 瞭解 Pub/Sub 定價。
- 瞭解 Pub/Sub 的配額和限制。
- 閱讀 Pub/Sub 版本資訊。
- 在 Qwiklabs 探索 Google Cloud 服務的資料工程。