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

3202                                                       软件学报  2025  年第  36  卷第  7  期


                    由于  Kafka 支持重放数据, 优化前后的应用都在相同的数据集上进行测试. 测试中先对应用进行预热, 以消除
                 文件缓存等的影响, 所有测试结果采用            3  次测量的平均值, 以减小实验误差.
                    本文也基于低电压检测应用及相关电压数据, 对提出的                   3  种优化技术进行单独测试, 关注其分别对于性能提
                 升的影响. 在   KeyBy  算子分发策略中, 本文关注不同策略在不同流式数据分布情况下的负载均衡度, 以及负载不
                 均衡对应用整体吞吐率的影响. 在键级水位线和基于键值的数据交换策略中, 本文关注应用的整体吞吐率.

                 6.3   系统总体性能优化测试与评估
                    本文在   3  个不同数据集应用所提出的         3  种优化技术, 将数据分布和集群配置与各策略适用场景进行结合. 具
                 体来说, 与优化前相比, 使用键级水位线代替子任务级水位线, 初始默认使用                      LeastKey  负载分发策略, 在线监测参
                 数设置为阈值, 数据交换策略选择           Ahead KeyBy, 在桥梁拱顶监测数据集和        Yahoo Streaming Benchmark  中, 为了
                 保持测试一致性, 本文也进行类似的优化.
                    实验结果如图      14 所示, 相较于  Flink, 低电压检测应用每秒吞吐率从单机          42.5  万提升到  560  万, 且由单节点扩
                 展到  8  节点时, 吞吐率提升到     6.56  倍, 达到理想情况下   8  倍吞吐率的   82%. 相比于原来的    1.24  倍, 水平可扩展性得
                 到明显改善, 提升了      4.3  倍. 拱顶监测应用每秒吞吐率从单机         37.8  万提升到  510  万, 且由单节点扩展到     8  节点时,
                 吞吐率提升到     5.4  倍, 达到理想情况下   8  倍吞吐率的   68%. 相比于原来的     2.1  倍, 水平可扩展性得到明显改善, 提升
                 了  1.6  倍. Yahoo Streaming Benchmark  的每秒吞吐率从单机  71.9  万提升到  430.6  万. 且由单节点扩展到  8  节点时,
                 吞吐率提升到     6.4  倍, 达到理想情况下    8  倍吞吐率的   80%. 相比于原来的     2  倍, 水平可扩展性得到明显改善, 提升
                 了  2.2  倍. 相较于  GeoFlink, 3  种应用下的单机吞吐率和水平扩展加速比        Trilink  均体现出显著优势. 需要注意的是,
                 图中横坐标分布并非均匀, 随着节点数量增加吞吐率的增长趋势呈亚线性趋势.


                   160                           500                         4 000
                                                 450
                   140                                                       3 500
                                                 400
                   120                                                       3 000
                                                 350                         2 500
                  吞吐率 (万条/s)  80                吞吐率 (万条/s)  300             吞吐率 (万条/s)  2 000
                   100
                                                 250
                                                 200
                    60
                                                 150                         1 500
                    40                                                       1 000
                                                 100
                    20                                                        500
                                                 50
                    0                             0                             0
                       1 节点  2 节点  4 节点  8 节点       1 节点 2 节点 4 节点 8 节点           1 节点  2 节点  4 节点  8 节点
                               (a) Flink                   (b) GeoFlink                   (c) Trilink
                                  低电压检测吞吐率                Yahoo Bench 吞吐率         拱顶监测吞吐率
                                  低电压检测可扩展性趋势             Yahoo Bench 可扩展性趋势      拱顶监测可扩展性趋势
                                       图 14 Flink, GeoFlink  与  Trilink  吞吐率与可扩展性实验

                    整体而言, Trilink  相比于  Flink  显著提供了流式数据处理性能. 即使在单机情况下, Trilink           的吞吐能力仍然优
                 于原生   Flink. 另一方面, 从水平可扩展性的角度来看, 本文提出的优化设计充分考虑了流式处理通用数据流的                             3
                 个性能瓶颈之处, 所以系统呈现了更优的系统可扩展性.
                    需要注意的是, 采用      Trilink  后, 低电压检测应用的系统的性能可扩展性提升更为显著, 其原因在于, 低电压检
                 测应用中数据源更为庞杂, 原生          Flink  系统水位线机制造成了巨大的额外时序耦合, 从而导致系统吞吐率和可扩展
                 性显著下降. 另一方面, KeyBy     动态负载策略也为这种复杂的数据分布带来了更高效的分发处理能力.

                 6.4   不同优化策略效果的测试与评估
                    该实验基于低电压检测应用及相关电压数据, 对提出的                   3  种优化技术进行单独应用和测试, 以分析和评估每
   276   277   278   279   280   281   282   283   284   285   286