流处理系统可视化实验室
通过 8 个交互式 SVG 模块,直观拆解流处理系统的核心机制:事件时间与处理时间的偏差、窗口语义、精确一次语义、状态管理、反压流控、Kafka 内部机制、流式聚合与 Watermark 时间语义。纯单文件、零依赖,所有动画基于 requestAnimationFrame 与 transform。
事件时间 vs 处理时间
事件时间是数据实际产生的时间,处理时间是系统处理它的时间。二者因网络延迟与乱序而存在偏差。Watermark 作为事件时间进度指标,用于判定迟到事件。
窗口语义
将无界流切分为有界片段以进行聚合。Tumbling 窗口不重叠、不间隔;Sliding 窗口可重叠;Session 窗口由活动间隙划分,长度可变。
精确一次
通过 Checkpoint Barrier 对齐、状态快照与可重放源实现精确一次语义。对比至少一次(可能重复)与至多一次(可能丢失)的差异。
状态管理
Keyed State 按 key 维护:ValueState 单值、ListState 列表、MapState 映射、ReducingState 增量聚合。后端可选内存或 RocksDB,并通过 Checkpoint/Savepoint 持久化。
反压与流控
当下游处理慢于上游生产时,缓冲区堆积并向上游传播反压。可启用反压(阻塞上游)或关闭反压(丢弃超额数据),权衡延迟与丢数据。
Kafka 内部机制
主题分为多个分区,每分区有 1 个 Leader 与若干 Follower 副本(ISR)。生产者写 Leader,消费者按消费组订阅并在成员变化时触发再均衡。
流式聚合
增量维护聚合状态:每来一个事件即更新 sum/count/min/max,无需重算。窗口关闭时输出最终结果,avg = sum / count。
时间语义与 Watermark
Watermark 是事件时间进度的标记,决定窗口何时触发。对比三种生成策略:有界乱序、周期性、标点式。事件时间早于水位的事件为迟到事件。