我有一个Kafka Streams拓扑,其中通过DSL聚合创建了一个会话存储。 (这里的所有主题都是共同分区的。)
稍后,我在另一个主题(transformValues
)上从orders
使用此存储,查询该存储以生成包含一个订单及其会话的类似连接的输出。
但是,存储量在某些高峰时会产生计算滞后,而orders
主题则不会。因此,即使事件按顺序到达系统,order
也不会在其中找到其sessions
。
因此,当订单到达时,有时商店中还没有填充以前尚未处理的数据,因此在商店中查找时,找不到任何条目。
我可以看到将order
的{{1}}与会话存储的KStream
版本一起加入的解决方案,以便能够在{{1 }}和KStream
,生成新版本。
但是这增加了复杂性,而且IIRC联接还会创建一个额外的窗口主题(我已经在其他地方使用了该会话存储,所以我仍然必须拥有它)。
还有其他解决方案,需要权衡吗?