【问题标题】:Kafka Stream: output to a topic first or persist directly?Kafka Stream:先输出到主题还是直接持久化?
【发布时间】:2017-06-19 04:10:43
【问题描述】:
相当多的文章描述了实现 Kafka Streams 的使用,它们输出到新的 Kafka 主题,而不是保存到某种分布式数据库。
这只是一个常见的用例,假设嵌入式 db + 交互式查询就足够了,还是有一些架构上的原因,为什么人们想要在再次使用之前输出一个主题来持久化它,而不是直接持久化?
我不确定这是否会有所不同,但我正在查看的示例的上下文是用于翻转时间窗口聚合。
【问题讨论】:
标签:
apache-kafka
persistence
apache-kafka-streams
【解决方案1】:
如果您只想从 kafka 中取出数据并将其存储在数据库中,那么 Kafka Connect 是最自然的方式。
另一方面,如果您的主要用例是进行聚合,那么 Kafka Streams 确实是一种简单而优雅的方式。如果您的首选数据库已经存在 Kafka Connect 接收器,那么让 Kafka Streams 将输出写入主题然后让 Kafka Connect 接收器将其拾取并存储在您的数据库中将是最直接的。如果不存在开箱即用的接收器并且您必须编写它并且您认为它不能足够重用,那么您可能会选择将其编写为自定义 Kafka Streams 处理器并且没有输出 Kafka 主题.
如您所见,根据您的用例和偏好,有多种方法可供选择。没有一种正确的方法,所以请考虑所涉及的权衡。