卡夫卡流与卡夫卡消费者如何决定使用啥

Posted

技术标签:

【中文标题】卡夫卡流与卡夫卡消费者如何决定使用啥【英文标题】:Kafka stream vs kafka consumer how to make decision on what to use卡夫卡流与卡夫卡消费者如何决定使用什么 【发布时间】:2020-03-29 08:45:50 【问题描述】:

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

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

提前感谢您的回答。

【问题讨论】:

看看这个***.com/questions/44014975/… ***.com/questions/44014975/… 的副本。 这能回答你的问题吗? Kafka: Consumer API vs Streams API 【参考方案1】:

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

内置状态处理,以及 exactly-once 处理语义。

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

窗口和 连接(流-流、流-表、表-表)

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

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

【讨论】:

【参考方案2】:

用不同的方法来做同样的事情,具有不同的抽象和功能级别。

这是在 Kafka 和 Kafka Streams 中做同样的事情(将字符串分成两个单独的字段)的并排比较(为了更好地衡量,它也显示在 ksqlDB 中做同样的事情)

【讨论】:

以上是关于卡夫卡流与卡夫卡消费者如何决定使用啥的主要内容,如果未能解决你的问题,请参考以下文章

消费者。如何指定要读取的分区? [卡夫卡]

卡夫卡消费者配置

卡夫卡长轮询

卡夫卡消费者不阅读消息

卡夫卡消费者不返回任何事件

卡夫卡消费者名单