Apache flink 提高Flink广播性能

Apache flink 提高Flink广播性能,apache-flink,flink-streaming,Apache Flink,Flink Streaming,我有一个管道,我在其中对事件流应用转换规则(从广播状态);当我在没有连接的情况下并行运行广播流和原始流时,流的性能非常好,但当我执行广播时,性能急剧下降。如何才能取得更好的绩效。运算符之间传递的数据以字节[]为单位,数据占用空间也很小 我已附上两种情况的快照: 顶行显示来自Kafka和底行的流消费事件 显示从其他主题使用的规则。有了这个设置,我可以 每个任务管理器处理的吞吐量高达20K msg/sec 4分钟内存储12Gb数据 2.我已经将广播流与数据流连接起来 未来的处理。请注意,仅用于测量

我有一个管道,我在其中对事件流应用转换规则(从广播状态);当我在没有连接的情况下并行运行广播流和原始流时,流的性能非常好,但当我执行广播时,性能急剧下降。如何才能取得更好的绩效。运算符之间传递的数据以字节[]为单位,数据占用空间也很小

我已附上两种情况的快照:

  • 顶行显示来自Kafka和底行的流消费事件 显示从其他主题使用的规则。有了这个设置,我可以 每个任务管理器处理的吞吐量高达20K msg/sec 4分钟内存储12Gb数据
  • 2.我已经将广播流与数据流连接起来 未来的处理。请注意,仅用于测量 广播我已确保数据中没有消耗任何记录 流(顶行)。在广播状态的处理端,我 仅将收到的消息存储到MapState。通过这种设置,我可以 每个任务管理器处理12Gb数据的吞吐量高达1000 msg/s 数据在18分钟内。

    您所做的不仅仅是简单地连接广播和键控流。以前,每个事件只经历一次网络洗牌(再平衡、哈希和广播连接),现在每个事件有四到五次洗牌


    每次洗牌都很昂贵。尽量减少更改并行性或使用keyBy的次数。

    我已更改使所有运营商的并行性相同,并用连接的流代替广播。通过连接流,我能够获得与快照1相似的吞吐量;仅当没有来自主流的输入数据时。一旦数据开始流入,吞吐量就会像快照2一样下降。请澄清一下快照2中是否有接收器。案例(它被裁剪了,所以我看不见)你们广播了多少元素?是的,我有一个接收器,它跟踪广播中有多少元素在原始流中丢失了。在广播流中,我发送了大约2400万条记录。