Apache kafka 卡夫卡流与卡夫卡消费者如何决定使用什么

Apache kafka 卡夫卡流与卡夫卡消费者如何决定使用什么,apache-kafka,kafka-consumer-api,apache-kafka-streams,Apache Kafka,Kafka Consumer Api,Apache Kafka Streams,我曾参与过一些Kafka流应用程序和Kafka消费者应用程序。最终,Kafka流只不过是消费者,它消费来自Kafka的实时事件。所以我不知道什么时候使用卡夫卡流,或者为什么我们应该使用卡夫卡流,因为我们可以在消费端执行所有转换 我想了解Kafka stream和Kafka consumer在实现方面的主要区别,以及如何决定在不同的用例中应该使用什么 提前感谢您的回答。做同一件事有不同的方式,有不同的抽象和功能级别 这里是在vs in中做相同事情(将字符串拆分为两个单独的字段)的并列比较(为了更好

我曾参与过一些Kafka流应用程序和Kafka消费者应用程序。最终,Kafka流只不过是消费者,它消费来自Kafka的实时事件。所以我不知道什么时候使用卡夫卡流,或者为什么我们应该使用卡夫卡流,因为我们可以在消费端执行所有转换

我想了解Kafka stream和Kafka consumer在实现方面的主要区别,以及如何决定在不同的用例中应该使用什么


提前感谢您的回答。

做同一件事有不同的方式,有不同的抽象和功能级别

这里是在vs in中做相同事情(将字符串拆分为两个单独的字段)的并列比较(为了更好地衡量,它也显示了在中做同样的事情)

这是一个关于“易用性”(或简单性)和“灵活性”的问题。与普通消费者/制作人相比,卡夫卡流的两个“杀手特性”是:

  • 内置状态处理,以及
  • 一次处理语义
构建一个有状态的、容错的应用程序或使用Kafka事务与普通消费者/生产者进行通信是非常困难的。此外,更高级别的DSL提供了许多难以从头构建的内置运营商,特别是:

  • 开窗和
  • 联接(流、流表、表)
另一个很好的特性是标点符号


然而,即使您构建了一个简单的无状态应用程序,使用Kafka Streams也可以帮助您显著减少代码库(即,避免使用样板代码)。因此,建议在可能的情况下使用Kafka Streams,并且只有在Kafka Streams对于您的用例不够灵活的情况下才求助于消费者/制作人。

检查此副本。这是否回答了您的问题?