Page 269 - 《软件学报》2025年第7期
P. 269
3190 软件学报 2025 年第 36 卷第 7 期
并将水位线顺序流动, 使用数据源连接器根据消息队列的不同分区并行读入数据, 通过 KeyBy 算子聚合同键数据,
使用有状态处理函数进行统计分析, 这 3 个应用的对比分析如表 2 典型流式分析应用对比分析所示.
Kafka 连接器 反序列化 过滤 投影
水位线
DataSource Reader Deserialize Filter Project
赋予
水位线
DataSource Reader Deserialize Filter Project
赋予
水位线
DataSource Reader Deserialize Filter Project
赋予
流数据预处理
数据交换 实时处理
水位线
窗口化时 流动
序保证 KeyBy ProcessFunc
数据库
窗口化时
序保证 KeyBy ProcessFunc
窗口化时 KeyBy ProcessFunc 实时输出
序保证
图 2 Yahoo Streaming Benchmarking 数据流图
Kafka 连接器 过滤 数据交换 实时处理
水位线
水位线 窗口化时 流动
DataSource Reader Filter KeyBy ProcessFunc
赋予 序保证
水位线 窗口化时
DataSource Reader Filter KeyBy ProcessFunc 实时输出
赋予 序保证
水位线 窗口化时
DataSource Reader Filter KeyBy ProcessFunc
赋予 序保证
图 3 疲劳驾驶提醒数据流图
表 2 典型流式分析应用对比分析
核心特征 低电压检测 Yahoo Streaming Benchmark Long Ride Alert
数据源 Kafka Kafka Kafka或数据生成器
涉及算子 KeyBy FlatMap、Filter、Project、KeyBy KeyBy、Filter
使用KeyBy 根据传感器ID 根据广告ID 根据运营ID
处理函数 使用有状态处理函数 使用有状态处理函数 使用有状态处理函数
时间语义 事件时间 事件时间 事件时间
依赖水位线 是 是 是
基于上述典型流式分析应用的分析比较, 本工作对数据流图进行总结抽象, 如图 4 典型流式分析应用数据流
图所示. 在此架构中, 数据源生成的实时数据首先通过 Kafka 流入流式处理系统, 系统中引入水位线机制以保障数
据的时序化处理; 随后, 通过数据分发算子, 数据被分发至各个处理节点, 以执行具体的实时处理和计算任务, 并最
终输出结果. 算子之间顺序链接, 形成流水线式实时处理架构.
另一方面, 流式处理系统往往通过并行化计算任务水平扩展系统性能, 但是水平扩展瓶颈问题确实存在, 并导
致系统吞吐率不能随着硬件资源的增加而有效提升. 如图 5 所示, Yahoo Streaming Benchmark 从 1 节点拓展到 4
节点时, 吞吐率仅提升 1 倍, 从 4 节点扩展到 8 节点时, 吞吐率甚至没有任何提升; 对低电压检测应用的水平可扩
展性的测试结果也类似, 当增加到 4 倍硬件资源时, 系统吞吐率仅增加 24.2%.
对典型流式处理分析应用数据流进行观察分析, 结合集群扩展加速比随节点数增加而逐渐下降这一现象, 本

