1. 背景介绍
1.1 事件时间的重要性
在流处理领域,事件时间是指事件实际发生的时间,与事件被处理的时间(处理时间)不同。事件时间是理解数据真实顺序和时间关系的关键,特别是在处理延迟到达的数据、乱序数据或需要进行时间旅行分析时尤为重要。
1.2 处理时间 vs. 事件时间
- 处理时间:事件被系统处理的时间,容易受到处理速度、网络延迟等因素影响,无法准确反映事件的真实发生顺序。
- 事件时间:事件实际发生的时间,不受系统处理速度影响,能够准确反映事件的真实发生顺序。
1.3 事件时间带来的挑战
使用事件时间进行流处理带来了以下挑战:
- 乱序数据处理: 事件可能以不同的顺序到达系统,需要进行排序和对齐。
- 延迟数据处理: 事件可能延迟到达,需要设置合理的窗口和水位线来处理延迟数据。
- 时间旅行: 需要支持回溯历史数据进行分析。
2. 核心概念与联系
2.1 水位线(Watermark)
水位线是事件时间处理的核心概念,它表示系统认为已经处理完所有特定时间戳之前事件的逻辑时间。水位线的作用是: