選擇 Cloud Managed Service for Apache Kafka 或 Pub/Sub

本文將引導您選擇 Pub/Sub 和 Google Cloud Managed Service for Apache Kafka。Pub/Sub 和 Managed Service for Apache Kafka 都是可水平擴充的代管式訊息服務,可處理大量工作負載。

本文適用於開發人員、架構師或決策者,他們正在尋找代管服務來處理串流資料和訊息傳輸工作負載。

執行 Apache Kafka 的選項有很多,包括合作夥伴服務和自行管理的開放原始碼軟體。本文不會介紹這些選項。

如需 Pub/Sub 概念的總覽,請參閱「Pub/Sub 服務簡介」。

如要瞭解 Managed Service for Apache Kafka 概念,請參閱「Managed Service for Apache Kafka 總覽」。

操作便利性與可攜性

選擇 Pub/Sub 或 Managed Service for Apache Kafka 時,您需要在操作簡便性可攜性之間取捨。

Pub/Sub 的作業簡便性

Pub/Sub 是全代管的無伺服器服務,採用 Google Cloud 基礎架構,這項服務會自動調度資源來處理工作負載,因此您不必費心管理基礎架構。Pub/Sub 會動態調整個別主題和訂閱項目的容量。發布者和訂閱者可以獨立擴充,不僅適用於不同主題和訂閱項目,也適用於相同主題和訂閱項目。

Pub/Sub 也會順暢地在多個區域之間移動資料。也就是說,發布者和訂閱者可以連線至最接近的區域,其餘作業則由服務處理。

Managed Service for Apache Kafka 也能處理大量資料。 不過,您必須根據主題的調度需求管理叢集大小,並設定其他數個屬性。最重要的是,您必須考量要指派給主題的分區數量。過多分割區可能會浪費資源。分區數量過少可能會導致 Kafka 叢集中的代理過載。 此外,您也必須根據延遲和消費者扇出需求,考量每個分割區必須設定的副本數量。

由於 Kafka 部署作業與特定區域相關聯,因此如果您要跨區域移動資料,必須在服務外部進行。確保資料移動作業持續正常運作,並滿足 Kafka 叢集主題的需求,會增加您的營運工作。

Managed Service for Apache Kafka 的可攜性

Pub/Sub 的自動調度資源和全球資料發布功能可簡化作業,但 Apache Kafka API 的採用範圍更廣。

如果您打算在不同的地端或雲端供應商環境中使用獨立的訊息系統,Managed Service for Apache Kafka 可為您的應用程式提供更一致的體驗。這是因為您可以採用標準化的 Kafka,並使用相同的 API 與各環境中的 Kafka 服務通訊。

您當然可以在所有環境中使用 Pub/Sub 做為中央訊息系統,但請務必記得,Pub/Sub 是獨立服務,有自己的 API。如需與特定環境的訊息系統互動,使用 Managed Service for Apache Kafka 可能會提供更統一的開發體驗。

哪項服務最適合你

如果要在各種環境中提供一致的體驗,請選擇 Managed Service for Apache Kafka。如果您著重於盡量減少設定,以利擴充工作負載或跨區域移動資料,Pub/Sub 就能提供極具吸引力的優勢。

如果您的需求符合下列因素,請選擇 Pub/Sub:

  • 您優先考量 Google Cloud內的作業簡化。

  • 您需要可擴縮的無伺服器解決方案,且管理負擔越少越好。

  • 工作負載大小無法預測或會變動。工作負載輸送量穩定時,Pub/Sub 也能發揮極佳效果。

  • 您需要追蹤每則訊息的處理作業,盡量減少單一無效訊息對管道造成的影響。Pub/Sub 內建無效信件佇列 (DLQ),並支援處理順序錯亂的訊息,因此即使遇到有問題的訊息,系統也能繼續運作。

  • 您需要跨區域資料匯總。

  • 您需要獨立的發布者和訂閱者調度。

如果您的需求符合下列因素,請選擇 Managed Service for Apache Kafka:

  • 在多個雲端服務供應商或地端部署環境之間的可攜性至關重要。

  • 您有現有的 Kafka 工作負載,想要遷移至Google Cloud。詳情請參閱「根據現有 Kafka 設定選擇」。

  • 流量穩定,沒有太大變化。

  • 您願意處理容量管理事宜。

  • 您需要高總處理量,且每個鍵的訊息順序都必須正確。

  • 您想使用事件溯源模式,並以事件記錄做為可靠資料來源。

根據現有的 Kafka 設定選擇

如果您已使用 Kafka,並想在 Google Cloud上尋找代管、安全且可靠的解決方案,建議選擇 Managed Service for Apache Kafka。

如果您已執行 Kafka,並願意重寫應用程式,以享有高度可擴充、自動調度資源的全域服務優勢,建議使用 Pub/Sub。如要從 Kafka 遷移至 Pub/Sub,請參閱「從 Kafka 遷移至 Pub/Sub」。

如果是新工作負載或初次在 Google Cloud上使用串流功能,建議使用 Pub/Sub,因為操作簡單。如果您想將現有 Kafka 工作負載遷移至雲端,同時盡可能避免變更程式碼,Managed Service for Apache Kafka 就是理想選擇。

與 Cloud 產品整合

Google Managed Service for Apache Kafka 和 Pub/Sub 都能與 Dataflow、BigQuery、Cloud Storage 等各種 Google Cloud 服務整合。

如果您需要多雲端策略,並優先考量不同雲端服務供應商之間的可攜性,Managed Service for Apache Kafka 可提供更高的彈性。這是因為 Kafka 可與 Google Cloud 以外的更多系統整合,Pub/Sub 則否。

功能比較

如果先前章節中的高層級決策條件無法提供協助,您可以根據特定功能支援做出選擇。如需這兩項產品的詳細比較,請參閱下表。

功能 Pub/Sub Managed Service for Apache Kafka
易用性 設定和維護較簡單 需要更多作業工作
費用模式 按用量付費 運算資源的按容量計費

網路和儲存空間的用量付費。

僅需處理一次 支援單一同步傳送和強大的確認語意。 從一個主題讀取資料並寫入另一個主題時,支援「剛好一次」的副作用。
資源調度 可根據主題,從每秒 KB 順暢地自動調度資源至每秒 GB,即使工作負載無法預測也能正常運作。 需要手動設定
已訂購的傳送作業

提供金鑰內的排序。

每個細微排序鍵的處理量為 1 MBps

提供分區內的排序。

每個分區的排序上限為分區的總處理容量。
資料保留 31 天 無限期保留
端對端延遲時間 端對端延遲時間通常為 100 毫秒 對於行為良好的訂閱者,通常約為 10 毫秒。
開放原始碼 Kafka 相容性,可進行升級與轉移
身分與存取權管理和安全性
自動設定網路
多雲端:各雲端環境完全相同
運作時間服務水準協議
資料層服務水準協議 目前不會
記錄和監控
在代理程式之間重新平衡分區 不適用
自動容量 Pub/Sub 會根據傳入的訊息速率和訂閱端需求,動態調整容量。 這項服務會管理 VM 和儲存空間等基礎架構。您可以控管分區數量和複寫因數等層面。
自動管理儲存空間
自動升級軟體
客戶服務
Kafka Connect 服務 不適用 搭配使用者提供的 Connect 服務
結構定義支援 使用使用者提供的結構定義登錄
與 ks qIDB、KSQL 相容
支援 OSS 連接器 是,適用於 Kafka 和 Flink 連接器
與資料湖泊和資料倉儲整合