本文為開發人員、架構師和決策者提供建議,說明如何將外部 Kafka 資料遷移至 Google Cloud、進行災難復原 (DR)、整合 BigQuery,以及從資料庫擷取變更資料 (CDC)。
在 Google Cloud中,您可以將 Kafka 資料移至 Google Cloud Managed Service for Apache Kafka 叢集,或是其他 Google 產品,例如 BigQuery 資料表或 Cloud Storage 位置。如需摘要,請參閱下表。
| 用途 | 資料來源 | 資料目標 | 建議解決方案 |
|---|---|---|---|
| 複製資料 | 自行管理的 Apache Kafka 叢集 | Managed Service for Apache Kafka 叢集 | 在 Connect 叢集中建立 MirrorMaker 2.0 來源連接器。 |
| 分析資料倉儲中的資料 | Managed Service for Apache Kafka 叢集 | BigQuery | 在 Connect 叢集中建立 BigQuery 接收器連接器。 |
| 透過同步功能遷移資料 | 自行管理的 Kafka 叢集 | Managed Service for Apache Kafka 叢集 | 在 Connect 叢集中建立 MirrorMaker 2.0 來源連接器。 |
| 跨區域複製叢集 | Managed Service for Apache Kafka (區域 A) | Managed Service for Apache Kafka 叢集 (區域 B) | 在 Connect 叢集中建立 MirrorMaker 2.0 來源連接器。 |
| 備份資料 | Managed Service for Apache Kafka | Cloud Storage | 在 Connect 叢集中建立 Cloud Storage 接收器連接器。 |
| 擷取資料庫變更 | 關聯式資料庫、Spanner 或 Bigtable | Managed Service for Apache Kafka | 在 Dataflow 上執行 Apache Beam 管道。 |
| 使用 Apache Spark 處理資料 | Managed Service for Apache Kafka | Apache Spark | 在 Compute Engine 上執行 Dataproc。 |
建議的解決方案,可協助您遷移 Kafka 資料
Google Cloud 提供多種整合 Kafka 資料的解決方案。每項服務都有獨特的優勢,可滿足您的需求和現有基礎架構。最適合您的整合方法取決於現有系統、目前技能組合,以及管理基礎架構的能力。
使用 Kafka Connect
Google Cloud Managed Service for Apache Kafka 可讓您佈建執行 Kafka Connect 的叢集。Kafka Connect 的主要目標是將 Managed Service for Apache Kafka 叢集連線至其他系統,以用於遷移、備份、災害復原、高可用性和資料整合等用途。我們建議使用 Kafka Connect,執行 Managed Service for Apache Kafka 最常見的資料整合工作。Kafka Connect 的優點如下:
使用內建連接器,將外部 Kafka 叢集連線至各種 Google Cloud 資料來源 和接收器。外部 Kafka 叢集包括 Managed Service for Apache Kafka、地端 Kafka 叢集和自訂雲端部署作業。支援的連接器包括:
MirrorMaker 2.0 連接器
BigQuery 接收器
Cloud Storage 接收器
Pub/Sub 來源
Pub/Sub 接收器
Google Cloud基礎架構具備擴充性和可靠性,可確保資料管道能處理不斷增加的資料量,並維持高可用性。
將管理 Kafka Connect 基礎架構的作業負擔轉移給Google Cloud。
使用 Google Cloud的監控和記錄工具,監控及管理 Kafka Connect 叢集。
如要進一步瞭解 Kafka Connect,請參閱 Kafka Connect 總覽。
使用 Dataflow
Google Cloud的無伺服器資料處理服務提供無伺服器串流和批次資料整合功能。您可以使用 Dataflow 將 Kafka 資料移至不同的接收器,例如 BigQuery 資料集或 Cloud Storage 值區。您可以透過 Dataflow 範本或部署 Apache Beam 管道,部署 Dataflow 管道。請根據下列因素選擇 Dataflow 部署作業:
如要簡化及加快部署作業,特別是常見的資料整合工作,請選擇可直接從控制台部署的預先建構 Dataflow 範本。
如要獲得最大的彈性和控制權,並處理需要自訂邏輯的複雜用途,請選擇 Apache Beam 管道。
內建範本
內建 Dataflow 範本是預先定義的 Apache Beam 管道,您可以使用簡單易用的工作精靈部署這些管道,完全不需要編寫程式碼。Dataflow 提供多個 Dataflow 範本,可將 Kafka 資料匯出至 Google Cloud。
自訂 Apache Beam 管道
上一節討論的 Dataflow 範本可能無法滿足所有需求。舉例來說,您可能需要將 Kafka 資料與這些範本不支援的來源或接收器整合。您可能也必須對記錄執行轉換、正規化或突變作業。
在這些情況下,您可以使用 Apache Beam SDK 撰寫可在 Dataflow 上執行的管道。
如要瞭解 Apache Beam 程式設計模型,包括管道、PCollection、轉換和執行器等重要概念,請參閱「Apache Beam 的程式設計模型」。
如需 Apache Beam 程式設計入門資源,包括安裝 SDK、程式設計指南和互動式環境,請參閱「使用 Apache Beam 建構管道」。這份文件也提供管道設計、建立和測試的連結,以及串流管道範例。
如要將變更串流 (變更資料擷取) 寫入 Kafka,建議在 Dataflow 管道中使用下列元件:
DebeziumIO 適用於關聯式資料庫,例如 Cloud SQL、MySQL、Postgres 和 SQL Server。
適用於 Spanner 的 Spanner 變更串流
Bigtable 的 Bigtable 變更串流
Dataflow 提供多項資源,協助您在 Dataflow 管道中使用 Kafka:
選擇 Kafka Connect 或 Dataflow
在 Kafka 叢集之間轉移資料時,尤其是轉移至 Managed Service for Apache Kafka 時,Kafka Connect 通常是首選解決方案。MirrorMaker 2.0 是 Kafka Connect 的一部分,非常適合叢集遷移、備份、災難復原或基本轉換等工作。Kafka Connect 支援一次轉換一筆記錄,進行基本訊息修改。
如果需要複雜的轉換作業,且資料遷移量很大,Dataflow 會是更合適的選擇。Dataflow 的優勢在於能夠執行複雜的串流作業,包括資料清理、擴充和匯總,再將資料傳送至目標 Managed Service for Apache Kafka 叢集。Dataflow 可透過進階視窗化和對齊邏輯,合併多個資料串流,這對於複雜的資料關聯和匯總作業至關重要。這項功能是 Dataflow 與 Kafka Connect 的差異所在,後者僅限於基本訊息修改。
使用 Dataproc 執行 Spark 管道
如果您有現有的 Spark 管道,這項 Apache Spark 和 Hadoop 工作負載全代管服務就很適合您。Apache Spark 使用者可以透過 Dataproc,將現有的 Spark 部署作業連線至 Managed Service for Apache Kafka。Dataproc 是 Google Cloud 的全代管服務,適用於 Spark 管道,並提供叢集生命週期管理工具。舉例來說,如果您有處理來自 Kafka 串流資料的 Spark 應用程式,並想將這個應用程式遷移至 Google Cloud,Dataproc 就是合適的選擇。
對於 Spark Streaming 和 Kafka,Apache Spark 提供整合指南。為協助部署常見的 Kafka 工作流程,Dataproc 提供多個開放原始碼範本。