卡夫卡流与卡夫卡消费者如何决定使用啥
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 中做同样的事情)
【讨论】:
以上是关于卡夫卡流与卡夫卡消费者如何决定使用啥的主要内容,如果未能解决你的问题,请参考以下文章