我有一个用例,我必须根据有效负载值中的参数来计算事件数量
流中的数据类似于 键 -> 字符串(不同且可以很好地扩展且唯一) Value -> json(有很多字段,其中一个字段是日期,这对于大块来说是相同的)
现在我必须根据公共日期字段计算记录
问题是
当我根据新键(日期字段)重新分区流时,通过使用groupby或map或selectkey操作,然后进行聚合。
我最终将流中的所有消息都倾斜到重新分区主题中的一个分区上
这在某种程度上阻碍了性能
随着相同日期的流数据数量的增加,影响呈指数级增长
这个用例有更好的替代方案吗?
#Kafkastream
当我根据新键(日期字段)重新分区流时,通过使用groupby或map或selectkey操作,然后进行聚合。
在KAFKA中,很明显,基于一个key进行分组,并且所有具有相同key的后续事件都落入同一个分区(默认情况下),因此只有一个consumer实例会读取所有事件,并且性能问题正如预期的那样。
我不认为日期字段是您分组的理想选择,因为您可能在同一天有许多事件,而您可以使用任何其他唯一字段。
额外的好处是,您可以参考 KAFKA 的遗留单词直方图演示示例并相应地更改您的要求。