有相当多的文章描述了如何实现kafka流的使用,它们将输出到一个新的kafka主题,而不是保存到某种分布式数据库中。这只是一个常见的用例,假设嵌入的db+交互式查询就足够了,还是有某种体系结构上的原因让我们想在再次使用主题之前输出一个主题来持久化它,而不是直接持久化它?我不确定这是否有区别,但我所看到的示例的上下文是关于滚动时间窗口聚合的。
gblwokeq1#
如果您只想从kafka中取出数据并将其存储在db中,那么kafka connect是最自然的方式。另一方面,如果您的主要用例是进行聚合,那么kafka流确实是一种简单而优雅的方法。如果您的首选数据库已经存在一个kafka connect接收器,那么让kafka streams将输出写入主题,然后让kafka connect接收器将其拾取并存储在您的数据库中,这将是最简单的方法。如果不存在现成的接收器,而您必须编写它,并且您认为它的可重用性不够,那么您可以选择仅将其作为自定义kafka流处理器编写,而不具有输出kafka主题。正如您所看到的,根据您的用例和您的偏好,有多种方法可以使用。没有一个正确的方法,所以请考虑所涉及的权衡。
1条答案
按热度按时间gblwokeq1#
如果您只想从kafka中取出数据并将其存储在db中,那么kafka connect是最自然的方式。
另一方面,如果您的主要用例是进行聚合,那么kafka流确实是一种简单而优雅的方法。如果您的首选数据库已经存在一个kafka connect接收器,那么让kafka streams将输出写入主题,然后让kafka connect接收器将其拾取并存储在您的数据库中,这将是最简单的方法。如果不存在现成的接收器,而您必须编写它,并且您认为它的可重用性不够,那么您可以选择仅将其作为自定义kafka流处理器编写,而不具有输出kafka主题。
正如您所看到的,根据您的用例和您的偏好,有多种方法可以使用。没有一个正确的方法,所以请考虑所涉及的权衡。