Apache kafka 什么';这是现存的反映卡夫卡主题的方法的主要区别
Apache kafka 什么';这是现存的反映卡夫卡主题的方法的主要区别,apache-kafka,apache-kafka-connect,Apache Kafka,Apache Kafka Connect,Kafka MirrorMaker是将Kafka主题从源代理镜像到目标代理的基本方法。不幸的是,它不符合我的要求,无法进行足够的配置 我的要求很简单: 解决方案应该是JVM应用程序 如果目标主题不存在,则创建它 解决方案应该能够向目标主题名称添加前缀/后缀 如果配置发生更改,它应该动态地重新加载和应用配置 据英国《每日电讯报》报道,有几种替代方案可以实现这一目标: (基于Kafka Connect API) 构建我自己的应用程序(基于Kafka Streams功能) 此外,它的创建是
Kafka MirrorMaker
是将Kafka主题从源代理镜像到目标代理的基本方法。不幸的是,它不符合我的要求,无法进行足够的配置
我的要求很简单:
- 解决方案应该是JVM应用程序
- 如果目标主题不存在,则创建它
- 解决方案应该能够向目标主题名称添加前缀/后缀
- 如果配置发生更改,它应该动态地重新加载和应用配置
- (基于Kafka Connect API)
- 构建我自己的应用程序(基于Kafka Streams功能)
因此,我的问题是这些解决方案(与其他解决方案相比)的杀手级功能是什么?最后,根据提供的需求,更好的解决方案是什么 我知道你指的是 至于你的子弹 解决方案应该是JVM应用程序 所有列出的都是基于Java的 如果目标主题不存在,则创建它 这取决于支持
AdminClient
API的Kafka代理版本。否则,正如MirrorMaker文档所述,您应该在镜像之前创建目标主题,否则(1)由于禁用自动主题创建而拒绝生成(2)由于创建了默认配置的主题而无法查看“一致”数据
也就是说,默认情况下,MirrorMaker不会自行“传播”主题配置。当我看的时候,镜子工具同样没有。我并没有仔细研究过沼泽地,但似乎只保留了分区数量
Confluent Replicator复制配置和分区,并使用AdminClient
Replicator、MirrorTool和Mirus都基于Kafka Connect API。也会是这样
构建我自己的应用程序(基于Kafka Streams功能
Kafka Streams只能从()和到()
单个集群进行通信
您也可以使用MirrorMaker,因为它已经是生产者/消费者的包装器,并且支持从一个集群到另一个集群。如果您需要自定义功能,这就是MessageHandler
接口的用途
在更高的层次上,connectapi也是相当可配置的,我发现MirrorTool源代码非常容易理解
解决方案应该能够向目标主题名称添加前缀/后缀
每个人都可以这样做,但MirrorMaker需要额外的/自定义代码
如果配置发生更改,请动态重新加载和应用配置
这是一个棘手的问题…通常,您只是跳出Java进程,因为大多数配置只在启动时加载。例外情况是whitelist
或topics.regex
用于查找要使用的新主题
KIP-382
很难说这会被接受。虽然它写得很周密,而且我个人认为它的范围也很合理,但它在某种程度上违背了将Replicator用于Confluent的目的。卡夫卡的大部分承诺和支持都发生在Confluent之外,这是一种利益冲突
在使用了Replicator之后,它有一些额外的功能,允许在数据中心发生故障时进行消费者故障切换,因此,在有人将这些Kafka API调用反向工程到其他解决方案中之前,它仍然很有价值
MirrorTool也有一个KIP,但它似乎在邮件列表中被拒绝,并解释为“Kafka Connect是一个可插拔的生态系统,任何人都可以继续安装这个镜像扩展,但它不应该是核心Kafka Connect项目的一部分”,或者至少我是这样理解的
什么是“更好”是一个意见问题,还有其他选择(我想到的是ApacheNIFI或Streamset) 如果您为企业许可证付费,主要是为了支持,那么您最好使用Replicator
我发现MirrorMaker有一点可能很重要,那就是如果镜像的主题没有使用
DefaultPartitioner
,那么如果您没有将目标Kafka制作者配置为使用相同的pa,那么数据将被重新排列到目标集群上的DefaultPartitioner
作为源Kafka生产者的分区值或分区器类。Replicator是一个选项吗?它支持自定义名称,可以与源和接收器中的不同代理进行对话,甚至可以应用so转换。Kafka connect还可以帮助进行配置更新等。您认为如何?@RenatoMefi感谢您的回答,但是Replicator不是开源解决方案,因此它不是me@yevtsy你还有什么要我说的吗?@cricket_007谢谢你的详细描述,很抱歉我迟迟没有回复。是的,我还有几个问题。答案中对我最有价值的是理解解决方案中的关键区别。你应该提到了DefaultPartitioner
iImplementation并在单个集群中工作。这是我寻找的smth。您知道基于Kafka Connect API
和Kafka Streams
的此任务解决方案的其他区别吗?正如前面指出的,Kafka Streams不是镜像解决方案。Connect API或原始生产者/Consumer,比如MirrorMaker包装是解决此问题的唯一构造块。成功交付(和订购)和偏移翻译(如果您愿意)的实现细节是额外的