Kafka 从多个独立代理处下沉

Kafka sink from multiple independent brokers

我想将多个数据库的更改聚合到一个数据库中,所以我想在每个数据库旁边 运行 Debezium 连接器和 Kafka server/broker,并使用 Kafka 接收器连接器来使用所有数据库那些 Kafkas 写入一个数据库。

问题是,我可以使用单个 Kafka 接收器连接器实例同时从多个独立的 Kafka 代理(不是集群)消费。

您可以将 Connect 属性 文件指向您想要的任何 bootstrap.servers

属性 本身必须是单个“集群”的一部分(即使是单个代理),这将由代理决定 zookeeper.connect 属性

运行在每个数据库旁边安装一个 Kafka broker 听起来很复杂。据我所知,似乎不支持连接到不同 Kafka broker 集群的单个 Kafka connect worker。

如果你走这条路,使用类似 Kafka MirrorMaker 的东西可能更有意义将你的本地主题复制到单个主 Kafka 集群,然后使用 Kafka Connect Sink 读取所有从一名工作人员复制主题并写入中央数据库。

最终,运行 每个源数据库旁边的 Broker 非常复杂。根据您的描述,听起来您的不同数据库之间有一些连接,但它是有限的并且可能容易断开连接。您是否考虑过替代设计:

  • 数据库复制:使用数据库供应商的本机异步复制将数据复制到单个目标数据库。远程区域始终是只读的,复制不应减慢您的源数据库(当然取决于数据库)。并且异步数据库复制通常可以处理一些网络断开和延迟。
  • 本地 Debezium:运行 每个数据库旁边都有 Debezium 的进程,并将所有事件保存到文件中。将文件复制到某个中央服务器或 S3 等云存储服务。最后,将这些文件导入中央数据库。这基本上会完全跳过 Kafka。