我有一个简单的kafka 2.0.1流,如https://kafka.apache.org/documentation/streams/
所述想象一下,这是一系列的股票价格。对于每个价格,我都会触发一些CPU和I / O密集型计算。显然,价格达到很高的速度,所以让我们假设以下情况
卡夫卡(Kafka)有什么聪明的方法可以跳过10:01、10:02的价格更新,而直接转到10:03的价格(即股票的最新价格更新)吗?我没有必要在10:01和10:02处理更新吗?
在akka中,我也许可以做一个自定义邮箱。可能这不是一个纯粹的流媒体需求,但这听起来很简单,以至于其他人应该面对这个需求。
答案 0 :(得分:1)
您可以使用KTable存储股票价格的更新状态。它将始终保留最新记录,并用新记录更新以前的值。如果键“ stock1 ”有3条记录,并且下面的记录在给定时间到达流中
<stock1, 10> // at time 10:01
<stock1, 8> // at time 10:02
<stock1, 13> // at time 10:03
KTable将为股票1产生<stock1, 13>
。
Kafka将根据事件时间产生最终结果。我建议使用KTable,并始终从流中选择最新记录。
您可以找到有关KTables的更多信息:https://docs.confluent.io/current/streams/concepts.html#ktable