镜像Kafka主题的现有方法的主要区别是什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了镜像Kafka主题的现有方法的主要区别是什么?相关的知识,希望对你有一定的参考价值。

Kafka MirrorMaker是从源头到目标经纪人镜像Kafka主题的基本方法。不幸的是,它不能满足我的要求,可以配置得足够多。

我的要求非常简单:

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

根据this answer的说法,有几种替代方案可以做到这一点:

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

所以,我的问题是这些解决方案的杀手级功能(与其他解决方案相比)是什么,最后根据提供的要求,哪种解决方案更好。

答案

我看到你指的是my comment there...

至于你的子弹

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

所有列出的都是基于Java的

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

这取决于支持AdminClient API的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,因为它已经是Producer / Consumer的包装器,并支持一个集群到另一个集群。如果您需要自定义功能,那就是MessageHandler界面的用途。

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

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

每个人都可以这样做,但MirrorMaker需要额外/自定义代码。 See example by @gwenshap

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

这是棘手的...通常,你只是反弹Java进程,因为大多数配置只在启动时加载。唯一的例外是whitelisttopics.regex,用于寻找新的主题。

KIP 382

很难说会被接受。虽然它虽然写得很好,而且我个人认为它的范围合理,但它有点挫败了Replicator for Confluent的目的。由于大部分Kafka承诺和支持发生在Confluent之外,这是一个利益冲突

使用Replicator之后,它具有一些额外的功能,可以在数据中心发生故障时进行消费者故障转移,因此在将Kafka API调用工程转换为其他解决方案之前,它仍然很有用。

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


什么是“更好”是一个意见问题,还有其他选择(Apache Nifi或Streamsets浮现在脑海中)。 Even using kafkacat and netcat你可以一起破解集群同步。

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

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

以上是关于镜像Kafka主题的现有方法的主要区别是什么?的主要内容,如果未能解决你的问题,请参考以下文章

kafka总结

Kafka中主题的分区和可用分区之间有什么区别?

将 Lambda 连接到 AWS MSK 中的 kafka 主题的最经济有效的方法是啥?

如何告诉 debezuim Mysql 源连接器停止重新拍摄 kafka 主题中现有表的快照?

kafka 镜像操作

想转行当程序员的必看!kafka和redis区别