知识卡片

窗口的四种类型:滚动、跳动、滑动、会话

结构图卡

内容

流分析里用于聚合的时间窗口有四种常见类型,区别在于长度是否固定、是否重叠、边界如何界定。滚动窗口长度固定、彼此不重叠,每个事件只属于一个窗口(如按分钟把事件时间戳四舍五入即可实现1分钟滚动窗口)。跳动窗口长度也固定,但允许窗口重叠以提供数据平滑效果(比如5分钟窗口、1分钟步长滑动前进,可以通过先算1分钟滚动窗口、再对相邻若干个窗口聚合来实现)。滑动窗口不按固定边界切分,而是包含彼此间距在特定时长内的所有事件(比如5分钟滑动窗口会捕捉到10:03:39和10:08:12这两个相距不到5分钟的事件——而滚动/跳动窗口用固定边界反而可能把它们分到不同窗口),实现方式是维护一个按时间排序的缓冲区并不断移除过期事件。会话窗口没有固定时长,而是把同一用户在活跃期间彼此接近的所有事件分为一组,一旦用户静默超过某个阈值(如30分钟无事件)窗口就结束——这正是批处理里”会话化”分析(整理特定用户会话的全部活动事件)在流处理场景下的实时版本。

结构图

flowchart TD
    A[窗口类型] --> B[滚动窗口: 固定长度,不重叠,每事件属一个窗口]
    A --> C[跳动窗口: 固定长度,允许重叠,平滑数据]
    A --> D[滑动窗口: 按事件间距动态界定,无固定边界]
    A --> E[会话窗口: 无固定时长,按用户静默阈值切分]

参考来源

- 位置:《数据密集型应用系统设计》第十一章《流处理》"窗口的类型"(源文件:_epub-src/ch11_split_002.html) - 结论依据:原文逐一定义滚动窗口、跳动窗口、滑动窗口、会话窗口的边界规则及各自的实现方式(四舍五入取整/滚动窗口叠加/有序缓冲区剔除过期事件/用户静默阈值),直接支撑本卡片的分类结构图。 - 原始内容:滚动窗口有着固定的长度,每个事件都仅能属于一个窗口……跳动窗口也有着固定的长度,但允许窗口重叠以提供一些平滑……滑动窗口包含了彼此间距在特定时长内的所有事件……会话窗口……当用户一段时间没有活动时窗口结束。