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%.
                    对典型流式处理分析应用数据流进行观察分析, 结合集群扩展加速比随节点数增加而逐渐下降这一现象, 本
   264   265   266   267   268   269   270   271   272   273   274