数据流中的微批处理是一种处理技术,它将数据分组为小批量并按固定时间间隔处理,从而平衡了实时流处理和传统批处理之间的权衡。微批处理不是像纯流处理那样单独处理每个到达的记录,也不是等待一次性处理大型数据集(批处理),而是将数据流分成微小的批次,通常以秒为单位。 这种方法通过在多个记录上分摊处理成本来降低开销,同时保持接近实时的延迟。例如,一个系统可能会收集 1-5 秒的数据,处理该批次,然后重复,确保数据得到快速处理而不会使资源不堪重负。
微批处理的一个常见例子是 Apache Spark Streaming。 Spark 以固定时间间隔(例如,2 秒批次)处理数据,使其能够重用批处理逻辑,同时获得低延迟结果。 这对于聚合指标(例如,计算每分钟的用户点击次数)或在存储之前转换数据等场景非常有用。微批处理还简化了容错:如果一个批次失败,系统可以重新处理该批次,而不是整个数据流。 Apache Flink 等工具也在底层使用微批处理来进行窗口操作,例如计算移动平均值,在这种情况下,将数据分组到小窗口中自然与批处理边界对齐。
微批处理的主要权衡是延迟与吞吐量。较小的批次会降低延迟,但由于频繁的批次提交而增加开销,而较大的批次会提高吞吐量,但会降低响应速度。例如,欺诈检测系统可能会使用 1 秒的批次来平衡及时警报和高效的资源使用。开发人员应该考虑他们的延迟要求:纯流处理(例如,Apache Kafka Streams)更适合亚秒级需求,而微批处理则适用于可以接受轻微延迟(例如,5-10 秒)以便于扩展和错误处理的应用程序。对于不需要即时结果的 ETL 管道或仪表板更新等用例来说,这是一个实用的中间方案。