流负载平衡



我有两个流。一个是事件流,另一个是数据库更新流。我想用从DB更新流构建的信息来丰富事件流。

事件流非常庞大,并且使用5个字段进行分区。这给了我很好的分配。DB流的chattier要少得多,并且使用两个字段进行分区。我目前正在使用两个公共字段连接这两个流,并使用flapMap来丰富第一个流。flatMap操作符使用ValueState来维护状态,该状态由两个公共字段自动设置关键帧。

我发现事件流中的负载在两个公共字段方面往往是倾斜的。这导致flapMap实例之间的负载平衡不均衡,少数实例的负载大约是其他实例的10倍。

我认为更好的方法是在所有flatMap实例中广播DB更新流,并简单地基于其现有的分区方案转发事件流。然而,问题是,由于没有为连接运算符指定密钥,我无法使用ValueState。

除了实现自定义逻辑手动提取密钥并更新维护状态之外,我还能做什么吗?

我缺少一种更简单的方法吗?

您可以使用CoFlatMapFunction实现Checkpointed接口,以检查广播的DB更新,而不是使用键值状态接口。

相关内容

  • 没有找到相关文章

最新更新