流负载均衡

时间:2016-06-08 23:53:51

标签: apache-flink

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

事件流非常庞大,使用5个字段进行分区。这给了我很好的分配。 DB流不那么笨拙,并且使用两个字段进行分区。我目前正在使用两个公共字段连接两个流,并使用flapMap来丰富第一个流。 flatMap运算符使用ValueState来维护状态,该状态由两个公共字段自动键入。

我发现事件流中的负载在两个公共字段方面倾向于倾斜。这会导致在flapMap实例中的负载均衡不均匀,并且一些实例的负载大约是其他实例的10倍。

我在想更好的方法是在所有flatMap实例中广播数据库更新流,然后根据现有的分区方案转发事件流。但问题是因为没有为connect运算符指定键,我不能使用ValueState。

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

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

1 个答案:

答案 0 :(得分:0)

您可以使用"{ "coordinates": [[[ [-91.0759333619999,40.15440933399983], [-91.066378752,40.154309680999823], [-91.066282352,40.157927062999832], [-91.0751007809999,40.157994385999814], [-91.0758658189999,40.157997289999805], [-91.075866624,40.157608482999827], [-91.0758737049999,40.157300970999813], [-91.0759333619999,40.15440933399983] ]]] ,"type":"MultiPolygon"}" 实现Checkpointed接口,以检查广播的数据库更新,而不是使用键值状态接口。