卡夫卡——两个特定事件之间的窗口



我想对两个具体事件之间发生的不同事件执行操作(例如聚合(。例如,一个用户点击按钮"A",然后点击按钮"B"一段时间后,我想统计在这段时间内(来自其他主题的(到达了多少个事件。

我在应用程序中面临的一般概念是,我的事件有持续时间,它们不是在给定时间独立发生的单个事件。在该示例中,单击按钮"A"将是事件的开始,而单击按钮"B"将是结束。

我的问题是kafka提供的窗口化过程(翻滚、跳跃、滑动、会话(不适合我的场景。在Kafka Streams中实现这一点还有其他选择吗?像Flink或Spark这样的其他框架可以处理它吗?

我不确定其他框架,但KStreams的通用窗口化解决方案可能不适用于您的情况。

然而,有一些方法可以让它为你工作。我不知道你的密钥是如何设置的,所以我将假设在密钥中你可以确定用户;"开始";或";停止";事件

如果你愿意制造一个新的处理器,你可以很容易地对开始事件做出反应,收集事件直到停止事件,然后将该批作为单个记录发送。这基本上是一个窗口。您可以使用过程将其与DLS代码相结合,从而简化拓扑结构的构建。

可能有一种方法可以通过分组流并以某种方式聚合来实现这一点,但这可能需要更改密钥的构造方式。

相关内容

  • 没有找到相关文章

最新更新