镜像Kafka主题的现有方法的主要区别是什么?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了镜像Kafka主题的现有方法的主要区别是什么?相关的知识,希望对你有一定的参考价值。
Kafka MirrorMaker
是从源头到目标经纪人镜像Kafka主题的基本方法。不幸的是,它不能满足我的要求,可以配置得足够多。
我的要求非常简单:
- 解决方案应该是JVM应用程序
- 如果目标主题不存在,则创建它
- 解决方案应该能够为目标主题名称添加前缀/后缀
- 如果它们被更改,它应该动态地重新加载和应用配置
根据this answer的说法,有几种替代方案可以做到这一点:
- MirrorTool-for-Kafka-Connect
- Salesforce Mirus(基于Kafka Connect API)
- Confluent's Replicator
- 构建我自己的应用程序(基于Kafka Streams功能)
此外,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进程,因为大多数配置只在启动时加载。唯一的例外是whitelist
或topics.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主题的现有方法的主要区别是什么?的主要内容,如果未能解决你的问题,请参考以下文章
将 Lambda 连接到 AWS MSK 中的 kafka 主题的最经济有效的方法是啥?