Kafka Stream:先输出到主题还是直接持久化?

Kafka Stream: output to a topic first or persist directly?

相当多的文章描述了如何使用 Kafka Streams 输出到新的 Kafka 主题,而不是保存到某种分布式数据库。

这只是一个常见的用例吗,假设嵌入式数据库+交互式查询就足够了,或者是否有一些架构原因为什么人们想要在再次使用它之前输出一个主题来持久化它,而不是直接坚持?

我不确定它是否有所不同,但我正在查看的示例的上下文是用于翻滚时间窗聚合。

如果您只想从 kafka 中取出数据并将其存储在数据库中,那么 Kafka Connect 是最自然的方式。

另一方面,如果您的主要用例是进行聚合,那么 Kafka Streams 确实是一种简单而优雅的方法。如果您的首选数据库已经存在 Kafka Connect 接收器,那么最直接的方法是让 Kafka Streams 将输出写入主题,然后让 Kafka Connect 接收器将其拾取并存储在您的数据库中。如果不存在开箱即用的接收器并且您必须编写它并且您认为它的可重用性不够,那么您可能会选择将其编写为自定义 Kafka Streams 处理器并且没有输出 Kafka 主题.

如您所见,根据您的用例和偏好,可以采用多种方式。没有唯一正确的方法,所以请权衡取舍。