Kafka Stream 与 Kafka Consumer 如何决定使用什么

sur*_*nde 6 apache-kafka kafka-consumer-api apache-kafka-streams

我曾开发过一些 Kafka 流应用程序和 Kafka 消费者应用程序。最后,Kafka流只不过是消费者,它消费来自Kafka的实时事件。因此,我无法弄清楚何时使用 Kafka 流,或者为什么我们应该使用 Kafka 流,因为我们可以在消费者端执行所有转换。

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

预先感谢您的答复。

Mat*_*Sax 6

这是一个关于“易用性”(或简单性)和“灵活性”的问题。与普通消费者/生产者相比,Kafka Streams 的两个“杀手级功能”是:

  • 内置状态处理,以及
  • 一次性处理语义。

构建一个有状态、容错的应用程序或与普通消费者/生产者一起使用 Kafka 事务是相当困难的。此外,更高级别的 DSL 提供了许多难以从头开始构建的内置运算符,特别是:

  • 开窗和
  • 连接(流-流、流-表、表-表)

另一个不错的功能是标点符号

但是,即使您构建一个简单的无状态应用程序,使用 Kafka Streams 也可以帮助您显着减少代码库(即避免样板代码)。因此,建议尽可能使用 Kafka Streams,并且仅在 Kafka Streams 对于您的用例来说不够灵活时才回退到消费者/生产者。


Rob*_*att 4

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

这是在KafkaKafka Streams中执行相同操作(将字符串拆分为两个单独的字段)的并排比较(为了更好地衡量,它也显示在ksqlDB中执行此操作)