卡夫卡可以流处理有效连接流?

问题描述 投票:0回答:1

我是新来的卡夫卡,我想知道如果有什么我计划是可行的和合理实施。

假设我们有两个来源,s1s2分别发出一些消息的主题t1t2。现在,我想有监听到两个主题水槽和我想它来处理消息<m1, m2>的元组,其中m1.key == m2.key

如果m1.key从未在s2的一些消息中找到,那么,信宿完全忽略m1.key(永远不会处理它)。

综上所述,水槽会在该s1按键只有工作,工作s2上。

一些传统的,也许天真的解决办法是有某种缓存或存储,并就项目工作,只有当两个消息都是在缓存中。

我想知道,如果卡夫卡提供了一个解决这个问题。

apache-kafka distributed-system stream-processing
1个回答
1
投票

大多数现代的流处理引擎,如Apache FlinkKafka StreamsSpark Streaming可以解决这个问题你。所有这三个都上阵测试卡夫卡消费者使用的情况下,像这样建。

即使在这些框架,有多种不同的方式来实现流加入像上面。在弗林克例如,可以使用具有类似于SQL的语法Table API

我已经在过去使用看起来有点像在this SO answer的例子(你可以用卡夫卡源更换fromElements)。

有一件事与流工作时,要记住的是,从两个卡夫卡主题t1t2消费数据时,你没有任何排序保证。您的代码需要考虑到以任意顺序到达的消息。

编辑 - 刚刚意识到您的问题大概是你如何实现用卡夫卡流,而不是从卡夫卡数据流的连接。在这种情况下,你可能会发现相关信息here

© www.soinside.com 2019 - 2024. All rights reserved.