镜像卡夫卡主题的现有方法的主要区别是什么



Kafka MirrorMaker是将Kafka主题从源代理镜像到目标代理的基本方法。不幸的是,它不符合我的配置要求。

我的要求很简单:

  • 解决方案应该是JVM应用程序
  • 如果目标主题不存在,则创建它
  • 解决方案应该能够为目标主题名称添加前缀/后缀
  • 如果更改了配置,它应该立即重新加载和应用这些配置

根据这个答案,有几种替代解决方案可以做到这一点:

  • 用于Kafka Connect的MirrorTool
  • Salesforce Mirus(基于Kafka Connect API)
  • Confluent的复制程序
  • 构建我自己的应用程序(基于Kafka Streams功能)

此外,KIP-382的创建是为了使Mirror Maker更加灵活和可配置。

因此,我的问题是,这些解决方案的致命功能是什么(与其他解决方案相比),最后,根据提供的需求,什么是更好的解决方案。

我看到你指的是我在那里的评论。。。

至于你的子弹

解决方案应该是JVM应用程序

所有列出的都是基于Java的

如果目标主题不存在,则创建

这取决于支持AdminClientAPI的Kafka代理版本。否则,正如MirrorMaker文档所说,您应该在镜像之前创建目标主题,否则您要么(1)因为禁用了自动主题创建而被拒绝生成;(2)因为创建了默认配置的主题而导致无法查看"一致"数据。

也就是说,默认情况下,MirrorMaker不会单独"推荐"主题配置。当我看的时候,MirrorTool同样没有。我没有仔细查看Mirus,但似乎只有分区数量保留了

Confluent Replicator确实复制配置、分区,并且将使用AdminClient。

Replicator、MirrorTool和Mirus都基于Kafka Connect API。KIP-382也将是

构建我自己的应用程序(基于Kafka Streams功能

Kafka Streams只能通过单个集群来通信from()to()

您最好只使用MirrorMaker,因为它已经是生产者/消费者的包装器,并且支持一个集群到另一个集群。如果您需要自定义功能,那就是MessageHandler接口的用途。

在更高的层次上,Connect API也是相当可配置的,而且我发现MirrorTool源代码非常容易理解。

解决方案应该能够为目标主题名称添加前缀/后缀

每个人都可以这样做,但MirrorMaker需要额外的/自定义代码。参见@gwenshap 的示例

如果更改,则立即重新加载和应用配置

这是一个棘手的问题。。。通常,您只需重新启动Java进程,因为大多数配置只在启动时加载。例外是whitelisttopics.regex,用于查找要消费的新主题。

KIP-382

很难说这会被接受。虽然它写得很好,而且我个人认为它的范围是合理的,但它在某种程度上违背了拥有Replicator for Confluent的目的。大部分Kafka的承诺和支持都发生在Confluent之外,这是一场利益冲突

使用Replicator后,它有一些额外的功能,可以在数据中心出现故障时进行消费者故障切换,因此在有人对Kafka API调用的其他解决方案进行逆向工程之前,它仍然很有价值

MirrorTool也有一个KIP,但它似乎在邮件列表上被拒绝了,并解释说"Kafka Connect是一个可插拔的生态系统,任何人都可以继续安装这个镜像扩展,但它不应该是核心Kafka连接项目的一部分",或者至少我是这么读的。


什么是"更好"是一个意见问题,还有其他选择(脑海中浮现的是Apache Nifi或Streamset)。即使使用kafkacatnetcat,也可以破解集群同步。

如果您要为企业许可证付费,主要是为了获得支持,那么您还不如使用Replicator。

在我发现的MirrorMaker中,有一点可能很重要,那就是如果您正在镜像一个不使用DefaultPartitioner的主题,那么如果您不将目标Kafka生产者配置为使用与源Kafka制作者相同的分区值或分区器类,则数据将被重新整理到目标集群上的DefaultPartitioner中。

相关内容

  • 没有找到相关文章

最新更新