Kafka Streams 智能跳过消息
Kafka Streams Intelligently skip messages
我有一个简单的 kafka 2.0.1 流,如 https://kafka.apache.org/documentation/streams/
中所述
将流想象成一系列股票价格。对于每个价格,我都会触发一些 CPU 和 I/O 密集计算。显然价格到达的速度非常高,所以让我们假设以下情况
- 一只股票的价格在上午 10 点到达,我安排了一系列计算,据说大约需要 3 分钟才能完成。
- 同时有 3 个价格到达 10:01、10:02 和 10:03
Kafka 是否有任何智能方式跳过 10:01、10:02 处的价格更新并直接转到 10:03 处的价格更新(即最新的价格更新股票)?我在 10:01 和 10:02?
处处理更新毫无意义
在 akka 中,我也许可以做一个自定义邮箱。这可能不是纯粹的流式传输要求,但这听起来很简单,其他人应该已经遇到过。
您可以使用 KTable 来存储股票价格的更新状态。它将始终保持最新记录并用新值更新以前的值。如果键“stock1”有 3 条记录且以下记录在给定时间
到达流
<stock1, 10> // at time 10:01
<stock1, 8> // at time 10:02
<stock1, 13> // at time 10:03
KTable 将为 stock1 生成 <stock1, 13>
。
Kafka会根据事件时间产生最终的结果。我建议使用 KTable 并始终从流中选择最新记录。
您可以找到有关 KTables 的更多信息:https://docs.confluent.io/current/streams/concepts.html#ktable
我有一个简单的 kafka 2.0.1 流,如 https://kafka.apache.org/documentation/streams/
中所述将流想象成一系列股票价格。对于每个价格,我都会触发一些 CPU 和 I/O 密集计算。显然价格到达的速度非常高,所以让我们假设以下情况
- 一只股票的价格在上午 10 点到达,我安排了一系列计算,据说大约需要 3 分钟才能完成。
- 同时有 3 个价格到达 10:01、10:02 和 10:03
Kafka 是否有任何智能方式跳过 10:01、10:02 处的价格更新并直接转到 10:03 处的价格更新(即最新的价格更新股票)?我在 10:01 和 10:02?
处处理更新毫无意义在 akka 中,我也许可以做一个自定义邮箱。这可能不是纯粹的流式传输要求,但这听起来很简单,其他人应该已经遇到过。
您可以使用 KTable 来存储股票价格的更新状态。它将始终保持最新记录并用新值更新以前的值。如果键“stock1”有 3 条记录且以下记录在给定时间
到达流<stock1, 10> // at time 10:01
<stock1, 8> // at time 10:02
<stock1, 13> // at time 10:03
KTable 将为 stock1 生成 <stock1, 13>
。
Kafka会根据事件时间产生最终的结果。我建议使用 KTable 并始终从流中选择最新记录。
您可以找到有关 KTables 的更多信息:https://docs.confluent.io/current/streams/concepts.html#ktable