1. 实验数据批流一体处理工程导论
实验数据批流一体处理工程,研究的不是“把批处理和流处理两个框架装在同一台机器上”,而是让同一批实验数据在采集、传输、计算、存储和查询的整条链路上,既能按历史全量做可重算的批量分析,又能按事件到达做低延迟的增量计算,并且两条路径共享同一份数据语义与同一套结果口径。理解这一点,是后续所有工程决策的起点。
一、实验数据从哪里来
实验数据通常来自三类源头。第一类是仪器直采数据,例如示波器、数据采集卡、传感器网关,它们以固定采样率持续输出带时间戳的测量值,特点是速率稳定、字段固定、时间精度高。第二类是实验过程记录,例如实验批次号、样品编号、环境温湿度、操作人员、设备参数,这类数据往往在实验开始或结束时一次性写入,属于低频但强关联的元数据。第三类是人工录入与外部导入数据,例如离线检测报告、标定曲线、历史归档文件,它们以文件或表格形式批量到达。
这三类数据在时间特征上差异明显:仪器数据是持续流,过程记录是稀疏事件,导入数据是批量块。批流一体工程要做的第一件事,就是为它们建立统一的时间语义——以事件发生时间(event time)为准,而不是以处理时间(processing time)为准。否则,当网络抖动或补传发生时,同一批实验数据在批路径和流路径中会落到不同的时间窗口,结果无法对齐。
二、批流一体的核心概念
批处理把数据看作有界集合,强调全量、可重算、结果确定;流处理把数据看作无界序列,强调增量、低延迟、持续更新。批流一体并不是取消两者的差异,而是用同一套编程抽象和同一份存储,让有界与无界数据共享计算逻辑。其关键支撑有三点:
- 统一数据模型:所有数据都表示为带时间戳的事件记录,批只是流的一个有界切片。
- 统一计算语义:窗口、聚合、连接等算子对批和流给出一致定义,避免两套代码两套口径。
- 统一状态与存储:流计算的中间状态可持久化,批计算可直接读取同一份结果表,实现“流写批读”或“批写流读”。
需要特别区分的是“Lambda 架构”与“批流一体”。Lambda 架构用批层保证准确性、用流层保证低延迟,但维护两套代码和两套结果,一致性靠人工对齐。批流一体则追求一套逻辑、一份存储、一个结果口径,代价是对状态管理和时间语义的要求更高。
三、工程目标与典型指标
本课程的工程目标可以归纳为四条:数据不丢不重、时间口径一致、结果可重算可追溯、延迟与吞吐可调。对应的可观察指标包括:端到端延迟(从事件产生到结果可见)、吞吐量(每秒处理事件数)、状态规模(流计算中间状态占用)、结果一致性(批路径与流路径在同一时间点的差异)。
以一个实验监测场景为例:假设 8 个传感器通道,每通道 100 Hz 采样,则原始事件速率约为 800 条/秒;若每条记录约 120 字节,则原始数据速率约 96 KB/s。流路径要求秒级窗口聚合结果在 2 秒内可见;批路径每天凌晨对全天数据重算一次,用于生成正式报告。此时,流路径负责实时告警与看板,批路径负责最终归档与复核,两者必须能对同一时间段给出可解释的差异。
四、技术选型全景
技术选型不应从“哪个框架最流行”出发,而应从数据特征和结果要求出发。下图给出实验数据批流一体处理的典型分层结构与数据流向,可作为选型讨论的参照。
选型时可按以下顺序判断:先确定时间语义与一致性要求,再选择消息缓冲与存储,最后选择计算引擎。若实验数据需要严格按事件时间对齐且允许秒级延迟,流路径应支持水位线与允许迟到;若每天需要全量重算并生成正式报告,批路径应能直接读取同一份原始归档。两者共享的 Schema、时间戳字段和窗口定义,应作为工程契约固定下来,而不是各自实现。
五、课程项目说明
本课程以一个“多通道实验监测数据批流一体处理”项目贯穿始终。项目设定为:8 个传感器通道,每通道 100 Hz 采样,事件带毫秒级时间戳;流路径做 1 秒滚动窗口的均值与超限判断,批路径每天对全天数据重算并生成日报。项目将逐步完成数据接入、时间语义定义、窗口聚合、状态管理、批流结果对齐、异常处理与性能观察。
需要强调的是,本课程中的参数、速率和结果均为教学示例或合理假设,用于说明工程方法,不代表任何真实实验的实测值。真正重要的是掌握从数据特征出发推导处理方案的能力,以及在批流两条路径之间建立可验证的一致性关系。