相当多的文章描述了实现Kafka Streams的使用,它们输出到新的Kafka主题,而不是保存到某种分布式数据库。
这只是一个常见的用例,假设嵌入式db +交互式查询已经足够,或者是否存在一些架构原因,为什么人们想要在再次使用主题之前输出主题以保留它,而不是直接持久化?
我不确定它是否有所作为,但我所看到的示例的背景是翻滚时间窗口聚合。
答案 0 :(得分:7)
如果您只想从kafka中获取数据并将其存储在数据库中,那么Kafka Connect是最自然的方式。
另一方面,如果您的主要用例正在进行聚合,那么Kafka Streams确实是一种简单而优雅的方式。如果您的首选数据库已经存在Kafka Connect接收器,那么让Kafka Streams将输出写入主题然后让Kafka Connect接收器将其拾取并存储在您的数据库中将是最直接的。如果没有开箱即用的接收器并且您必须编写它并且您认为它不足以重复使用,那么您可以选择将其编写为自定义Kafka Streams处理器而不具有输出Kafka主题
正如您所看到的,根据您的用例和偏好,有多种方法可以使用。没有一种正确的方法,所以请考虑所涉及的权衡。