Apache kafka 使用卡夫卡连接转换卡夫卡消息有意义吗?

Apache kafka 使用卡夫卡连接转换卡夫卡消息有意义吗?,apache-kafka,apache-kafka-streams,apache-kafka-connect,confluent-platform,Apache Kafka,Apache Kafka Streams,Apache Kafka Connect,Confluent Platform,我们的基础设施中有汇流平台。在核心部分,我们使用kafka代理分发事件。数十台设备产生卡夫卡主题事件(每种类型的事件都有一个卡夫卡主题),事件在谷歌的protobuf中序列化。我们有confluent的模式注册表来跟踪protobuf模式 我们需要的是,对于一些事件,我们需要应用一些转换,然后将转换输出发布到其他一些卡夫卡主题。当然,卡夫卡流是实现这一点的一种方法。但是,我们不希望每次转换都有一个java应用程序(这会增加项目和开发/部署工作的复杂性),而且将所有流放在一个应用程序中感觉不正确(

我们的基础设施中有汇流平台。在核心部分,我们使用kafka代理分发事件。数十台设备产生卡夫卡主题事件(每种类型的事件都有一个卡夫卡主题),事件在谷歌的protobuf中序列化。我们有confluent的模式注册表来跟踪protobuf模式

我们需要的是,对于一些事件,我们需要应用一些转换,然后将转换输出发布到其他一些卡夫卡主题。当然,卡夫卡流是实现这一点的一种方法。但是,我们不希望每次转换都有一个java应用程序(这会增加项目和开发/部署工作的复杂性),而且将所有流放在一个应用程序中感觉不正确(修改一个应用程序需要停止所有流并重新启动)

在这一点上,我们认为Confluent的卡夫卡连接可能是更好的方法。我们可以有几个worker,我们可以将它们部署到一个kafka connect实例/或集群中。问题是,

使用卡夫卡连接从一个卡夫卡主题获取消息并将其发送到另一个卡夫卡主题有意义吗?因为所有用例和示例的目的都是从外部(数据库、文件等)获取数据到kafka,从kafka获取数据到外部。

为了澄清,kafka Connect不是“合流的”,它是Apache kafka的一部分

虽然您可以将MirrorMaker2/Confluent Replicator与转换一起使用,但老实说,这与将转换逻辑提取到共享库中,然后捆绑一个可部署的Kafka Streams应用程序(该应用程序接受输入和输出主题的配置参数)并在两者之间进行转换没有多大区别

关于单点管理,你说得很好,但那也是单点失败。。。如果使用Connect,更改转换插件还需要停止并重新启动Connect服务器,如果所有主题都是同一个连接器的一部分,则任何任务失败都会停止某些百分比的主题转换

无论如何,Kafka流(或KSQL)是集群间转换的首选


对于更复杂的事件管理和路由,您还可以查看类似Apache Nifi的解决方案

,感谢您的澄清和详细回答。我们将决定尝试kafka connect。好吧,不过,正如我所说的,通常不建议在单个集群中“镜像”数据,而且kafka Streams DSL或KSQL查询更易于编程定义