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

本文件將引導您選擇 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 用於所有環境的集中式訊息系統,但請務必記住,這是一項獨立的服務,有其專屬的 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 就是理想的選擇。

與 Google Cloud 產品整合

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

如果您需要多雲端策略,並將不同雲端服務供應商之間的移植性列為優先考量,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 相容
支援開放原始碼連接器 Kafka 和 Flink 連接器:是
與資料湖泊和資料倉儲整合