Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 什么';这是现存的反映卡夫卡主题的方法的主要区别_Apache Kafka_Apache Kafka Connect - Fatal编程技术网

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功能)
此外,它的创建是为了使Mirror Maker更加灵活和可配置


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

我知道你指的是

至于你的子弹

解决方案应该是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包装是解决此问题的唯一构造块。成功交付(和订购)和偏移翻译(如果您愿意)的实现细节是额外的