Page 282 - 《软件学报》2025年第7期
P. 282

秦政 等: 面向  Apache Flink  流式分析应用的高吞吐优化技术                                          3203


                 个优化策略对于系统性能提升的效果. 相较于               Yahoo Benchmark, 低电压检测应用的数据流更通用基础, 且来源于
                 真实应用, 在所有流式处理应用中均能找到与其流程相符的部分, 因而, 用这一数据作为测试负载更具备通用性.
                 在  KeyBy  算子分发策略中, 本文关注不同策略在不同流式数据分布情况下的负载均衡度, 以及负载不均衡对应用
                 整体吞吐率的影响. 在键级水位线和基于键值的数据交换策略中, 本文关注应用的整体吞吐率.

                 6.4.1    KeyBy 负载分配策略测试与评估
                    基于在线监测功能, 本文对         4  个主要的  KeyBy  算子分配策略进行负载均衡度测试. 主要测试             4  种流式数据分
                 布场景, 包括   Key  均匀分布且每个     Key  的数据量也均匀分布       (下称数据均匀分布)、Key       非均匀分布但数据均匀
                 分布、Key   均匀分布但数据非均匀分布、Key          非均匀分布且数据非均匀分布.
                    本实验沿用第      3  节中提出的负载均衡度指标. 实验结果如图            15 所示, Flink  原有的基于  Hash  的方式在  4  种场
                 景下均表现不佳, 最低的负载均衡度仅有             0.26, 这导致  70%  的额外计算时间. Modulo  策略在   Key  均匀分布时负载
                 均衡度接近    1, 但在后  3  个场景降低至    0.66、0.41  和  0.24. LeastKey  策略在  Key  非均匀分布时仍具有接近  1  的负
                 载均衡度, 但不适用数据非均匀分布场景. LeastCount 策略在缺少历史分布信息的情况下, 与                      LeastKey  没有显著
                 差异, 在有历史信息支撑的情况下, 在          3  种场景至少都有    0.97  的负载均衡度.


                                1.0
                                0.8
                               负载均衡度  0.6

                                0.4
                                0.2

                                 0
                                      Hash       Modulo    LeastKey   LeastCount  LeastCount-
                                                                                 withHistory
                               Key 和数据均匀分布      Key 非均匀分布      数据非均匀分布       Key 和数据非均匀分布
                                           图 15 KeyBy  负载分发策略与负载均衡测试

                    虽然  Least 策略表现总比    Hash  或者  Modulo  策略优秀, 但存在需要跟中心分配服务通信的开销, 因此在冷启
                 动时会对性能有影响. 当       Hash  或者  Modulo  满足使用者要求时, 不需要使用       Least 策略. LeastCount 需要历史信息
                 的支持, 在系统冷启动时与        LeastKey  没有显著差异, 因此对于数据均匀分布场景选择             LeastKey  即可.
                    进一步地, 本文测试了       Hash  和  4  种算子分发策略下, 流式处理系统吞吐率. 结果如图           16  所示, 在  Key  和数据
                 非均匀分布场景下, 由于负载分配均衡, LeastCountwithHistory       吞吐率提升到基准性能的          3  倍以上. 在其余  3  个场
                 景下, 相较于   Hash  策略, 4  种策略均体现出了显著性能优势.

                                4.0
                                       Hash   Modulo   LeastKey  LeastCount  LeastCountwithHistory
                                3.5
                                3.0
                               吞吐率提升  2.0
                                2.5
                                1.5
                                1.0
                                0.5
                                 0
                                   Key 和数据均匀分布    Key 非均匀分布      数据非均匀分布 Key 和数据非均匀分布
                                             图 16 负载分发策略吞吐率提升示意图
   277   278   279   280   281   282   283   284   285   286   287