什麼是 Pub/Sub?

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 模型,以及重新格式化圖片。
  • Enterprise 事件中介。您可以建立企業級即時資料分享總線,在整個機構中分發業務事件、資料庫更新和分析事件。
  • 來自應用程式、服務或 IoT 裝置的資料串流。 舉例來說,SaaS 應用程式可以發布即時事件動態消息。或者,住宅感應器也可以將資料串流傳送至 Pub/Sub,以便透過資料處理管道在其他 Google Cloud 產品中使用。
  • 重新整理分散式快取。舉例來說,應用程式可以發布無效事件,以更新已變更的物件 ID。
  • 負載平衡可提高可靠性。舉例來說,服務的執行個體可能會部署在多個區域的 Compute Engine 上,但訂閱相同的主題。當任何區域的服務發生故障時,其他區域可以自動接手負載。

比較 Pub/Sub 與其他訊息傳遞技術

Pub/Sub 結合了 Apache KafkaPulsar 的水平可擴充性,以及 Apache ActiveMQ 和 RabbitMQ 等訊息中介軟體的功能。這類功能的例子包括死信佇列和篩選。

Pub/Sub 從訊息中介軟體採用的另一項功能是個別訊息並行處理,而非以分區為基礎的訊息傳遞。Pub/Sub 會將個別訊息「出租」給訂閱端用戶端,然後追蹤特定訊息是否已成功處理。

相較之下,其他可水平擴充的訊息傳遞系統會使用分區來進行水平調度。這會強制訂閱者依序處理每個分區中的訊息,並將並行用戶數量限制為分區數量。每則訊息處理作業可將訂閱者應用程式的並行處理作業最大化,並有助於確保發布者和訂閱者的獨立性。

比較服務對服務和服務對用戶端的通訊

Pub/Sub 是用於服務對服務的通訊,而非與使用者或物聯網用戶端的通訊。其他產品支援其他模式:

您可以結合這些服務,建構用戶端 -> 服務 -> 資料庫模式。例如,請參閱「透過 WebSocket 串流傳輸 Pub/Sub 訊息」教學課程。

整合

Pub/Sub 可與許多其他產品整合,以建立功能齊全的訊息傳遞系統: Google Cloud

  • 串流處理和資料整合。Dataflow 支援,包括 Dataflow 範本SQL,可將處理結果和資料整合至 Cloud Storage 中的 BigQuery 和資料湖。您可以在Google Cloud 控制台的 Pub/Sub 和 Dataflow 使用者介面中,找到用於將資料從 Pub/Sub 移至 Cloud Storage、BigQuery 和其他產品的 Dataflow 範本。您也可以整合 Apache Spark,尤其是在使用 Dataproc 進行管理時。您可以使用 Data Fusion 視覺化組合整合和處理管道,這些管道會在 Spark 和 Dataproc 上執行。
  • 監控、快訊與記錄功能。由 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 可透過宣告式方式整合至多步驟無伺服器工作流程。大數據和分析工作調度通常會使用支援 Pub/Sub 觸發事件的 Cloud Composer 執行。您也可以將 Pub/Sub 與應用程式整合 (預先發布版) 整合,這是整合平台即服務 (iPaaS) 解決方案。應用程式整合會提供 Pub/Sub 觸發條件,用於觸發或啟動整合。
  • Integration Connectors(預先發布版) 這些連接器可讓您連結至各種資料來源。透過連接器, Google Cloud 服務和第三方商務應用程式都會透過透明的標準介面公開給整合項目。針對 Pub/Sub,您可以建立 Pub/Sub 連線,用於整合作業。

後續步驟