对基于时间的事件使用Kafka,对Kafka流中的事件使用窗口分组(会话)。
我们应该如何处理来自不同来源(由旧数据组成)的一组数据的到达?
比如说,你正在为一个客户做网络分析。
在事件主题中从客户端接收事件数据,在该主题中接收所有事件类型。
由于某些原因,您没有从客户机收到订单(购买)数据,您只收到了用于生成会话的页面视图数据。
一段时间后,您会收到一批基于时间的订单,例如去年的订单,因此您可以将它们与会话匹配(关联哪些会话与哪个订单相关)。
此过程的输出被发送到“订单”、“页面视图”、“会话”等主题。
但是,如果只是将它们添加到主题的(末尾),它们将是“无序的”,因此即使重新计算数据,结果也不会正确。
这有点像流媒体
无序事件
问题,但允许更长的时间(例如一年)
一种可能是“删除并重写”:在压缩主题上,从该客户端删除所有数据,然后按顺序重新发送,然后为该客户端启动重新计算。
但那很麻烦。
有没有更好的方法来处理这个问题?