Apache Kafka 的自定义连接器

Posted

技术标签:

【中文标题】Apache Kafka 的自定义连接器【英文标题】:Custom Connector for Apache Kafka 【发布时间】:2022-01-09 08:27:24 【问题描述】:

我希望为 Apache Kafka 编写一个自定义连接器,以连接到 SQL 数据库以获取 CDC 数据。我想编写一个自定义连接器,这样我就可以使用一个连接器连接到多个数据库,因为所有市场连接器只为每个连接器提供一个数据库。

第一个问题:是否可以使用一个自定义连接器连接到多个数据库?另外,在那个自定义连接器中,我可以定义数据应该转到哪些主题吗?

第二个问题:我可以在 .NET 中编写自定义连接器还是必须是 Java?有没有我可以查看 .net 中数据库的 CDC 自定义连接器的示例?

【问题讨论】:

【参考方案1】:

没有 .NET 示例。 Kafka Connect API 仅适用于 Java,并非特定于 Confluent。

来源在这里 - https://github.com/apache/kafka/tree/trunk/connect

这里的依赖 - https://search.maven.org/artifact/org.apache.kafka/connect-api

希望编写一个自定义连接器...连接到 SQL 数据库以获取 CDC 数据

如果你真的想要这个功能,你可以扩展或贡献到 Debezium。

使用一个自定义连接器连接到多个数据库

如果你的意思是数据库服务器,那么不是真的,不是。每个连接器任务的 URL 必须是唯一的,并且没有 API 可以将任务编号映射到配置值。如果您的意思是一台服务器和多个数据库模式,那么我也不认为真的有可能在具有多个任务的单个连接器中正确“分发”(这就是为什么 Debezium 中的 database.names 配置目前仅支持一个名称)。

探索了 debezium,但它对我们不起作用,因为我们有微服务架构,并且我们为许多客户提供 1000 多个数据库,并且 debezium 为每个表创建一个主题,这意味着它将是一个庞大的架构

Kafka 可以很好地处理数千个主题。例如,如果您在 Kubernetes 中运行连接器进程,那么它们可以从那里集中部署、扩展和配置。

但是,我仍然担心您需要所有数据库来捕获 CDC 事件。

之前也有人建议使用Maxwell

【讨论】:

以上是关于Apache Kafka 的自定义连接器的主要内容,如果未能解决你的问题,请参考以下文章

Confluent 云 S3 接收器连接器 - S3 对象的自定义对象名称

使用Kafka Connect导入/导出数据

Datastax Kafka 连接器无法解析 Json 主题

如何开始在开源 Apache Kafka 中运行 kafka 连接器?

kafka jdbc sink连接器抛出org.apache.kafka.connect.errors.DataException(结构模式的字段名称未正确指定)插入PG表

Apache Camel Kafka 连接器:以 Avro 格式写入 GCS