【发布时间】:2019-03-19 19:32:40
【问题描述】:
这个问题与 KSQL 或流处理技术的聚合视图有关。当我们接收到事件时,我们会应用 group by 子句来聚合它们。现在发生了一个事件,它是对某个先前事件的更正。这将使我的聚合视图处于不一致的状态。这不是乱序事件到达案例。例如。我有一个事件 (e),它由实体 id (t)、类别 (c) 和数量 (q) 属性组成。 关注事件
1) e1 —> t1, c1, q1
2) e2 -> t2, c2, q2
3) e3 -> t3, c1, q3
4) e4 -> t1, c1, q4 correction to e1
5) e5 -> t5, c2, q5
我的聚合视图将按类别汇总数量组
c1 -> q1 + q3 + q4
c2 -> q2 + q5.
c1 现在处于不一致状态。 c1 应该只是 q3 + q4。
有没有办法解决这些问题。我知道我可以将所有事件保存在某个缓存中,然后创建一个聚合视图,但这是实时数据,因此我的所有视图每次都需要刷新。
【问题讨论】:
-
那么,您如何区分 q4 是对 q1 还是 q3 的修正?有没有你比较的特定属性?
-
e1 和 e4 的底层实体 id 相同。所以 e4 是该实体 id 的最新且更正的更新
标签: stream streaming apache-kafka-streams ksqldb