本文档就以下方面为开发者、架构师和决策者提供建议:将外部 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 集群连接到其他系统,以用于迁移、备份、灾难恢复、高可用性和数据集成等使用情形。对于 Managed Service for Apache Kafka 的大多数常见数据集成任务,我们建议使用 Kafka Connect。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 流水线中使用以下组件:
适用于关系型数据库(例如 Cloud SQL、MySQL、Postgres 和 SQL Server)的 DebeziumIO。
适用于 Spanner 的 Spanner 变更数据流
适用于 Bigtable 的 Bigtable 变更数据流
Dataflow 提供了多种资源,可用于将 Kafka 与 Dataflow 流水线搭配使用:
在 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 流水线,并包含用于集群生命周期管理的工具。例如,如果您有一个 Spark 应用,用于处理来自 Kafka 的流式数据,并且您想将此应用迁移到 Google Cloud,那么 Dataproc 将是合适的选择。
对于 Spark Streaming 和 Kafka,Apache Spark 提供了一份集成指南。为了帮助部署常见的 Kafka 工作流,Dataproc 提供了许多开源模板。