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 种优化技术进行单独应用和测试, 以分析和评估每

