Docs 菜单
Docs 主页
/ /

流处理器 Windows

Atlas Stream Processing 窗口是 聚合管道阶段,可捕获数据流的时间限制子集,让您可以对流数据执行需要有限输入的操作。

此处描述的 示例流处理器为例。$match 阶段可直接对 $source 输入的数据流进行处理,在数据流处理器输入每份文档时,根据匹配标准对其进行检查。

相比之下,$group 阶段及其中包含的各种统计计算无法对无界数据进行操作,因为如果不首先对要考虑的值集进行边界限定,就无法确定最小值、最大值、平均值或中位数值。许多非数学操作符(如 $push$top )也需要有界数据。

流处理器通过窗口为这些边界提供边界。此时将打开一个窗口,流处理器摄取的所有文档都会累积在这个窗口状态中,直到达到一个预先设定的时间间隔,窗口关闭为止。该窗口会对在该时间段内捕获的所有文档进行批处理,并通过内部管道传递文档集。在此管道中,批处理文档与静态数据无法区分。

Atlas Stream Processing 支持翻滚窗口跳跃窗口会话窗口

翻滚Windows是完全由其捕获的时间间隔定义的Windows 。 这些时间间隔不重叠。

例子

您可以定义间隔为 3 秒的滚动窗口。 当您启动流处理器时:

  • 窗口会打开 3 秒钟。

  • 第一个窗口捕获流在这 3 秒内生成的所有文档。

  • 3 秒后,窗口关闭并将聚合逻辑应用于该窗口中的所有文档。

    如果您配置 allowedLateness,Atlas Stream Processing在窗口关闭后将迟到的消息写入死信队列

  • 第一个窗口关闭后会立即打开一个新窗口,并在接下来的 3 秒内捕获数据流中的文档。

滚动窗口可确保全面捕获数据流,而无需重复处理单个文档。

跳跃Windows是通过捕获的时间间隔和打开每个窗口之间的间隔(称为跳跃)来定义的Windows。由于持续时间与频率分离,因此您可以配置跳跃Windows,将其重叠或间隔开。

要定义重叠的跳跃窗口,请设置小于间隔的跳跃。

例子

您可以定义间隔为 20 秒、跳跃为 5 秒的跳跃窗口。 当您启动流处理器时:

  • 窗口会打开 20 秒。

  • 第一个窗口捕获流在这 20 秒内生成的所有文档。

  • 5 秒后,另一个窗口将打开并捕获接下来 20 秒内的所有文档。 由于第一个窗口仍处于打开状态,因此流在接下来的 15 秒内生成的所有文档都会被两个窗口捕获。

  • 第一个窗口打开 20 秒后关闭,并将聚合逻辑应用于该窗口中的所有文档。

  • 5 秒后,第二个窗口将关闭,并将聚合逻辑应用于该窗口中的所有文档,包括在第一个窗口中已受聚合逻辑约束的文档。

如果您配置 allowedLateness,Atlas Stream Processing在窗口关闭后将迟到的消息写入死信队列

要定义带间距的跳跃窗口,请设置大于间隔的跳跃。

例子

您可以定义一个间隔为 3 秒、跳跃为 5 秒的跳跃窗口。 启动流处理器时:

  • 窗口会打开 3 秒钟。

  • 第一个窗口捕获接下来 3 秒的所有文档。

  • 3 秒后,窗口关闭并将聚合逻辑应用于该窗口中的所有文档。

  • 再过 2 秒后,下一个窗口将打开。

  • Atlas Stream Processing 不会处理该流在这两秒内生成的任何文档。

会话窗口是允许您在输入流中的每个“会话”活动上运行管道的窗口。如果两个文档具有相同的分区,并且它们的时间戳差异小于会话间隔,则它们位于同一会话中。

当一个窗口关闭时,其结果将传递到下一个阶段。

例子

您定义了 $userId 的分区,间隔为 5 分钟,允许的延迟为 5 秒。当您启动流处理器时:

  • 当第一个文档到达 $sessionWindow 时,会打开一个窗口。

  • 在最新匹配文档到达处理器后的五分零五秒内到达该阶段的任何包含相同 userId 值(包括缺少此字段)的文档都将添加到同一会话窗口中。

  • 窗口将保持打开状态,直到在五分钟的间隔加上五秒钟的允许延迟时间内,没有任何文档添加到该窗口为止。

后退

架构

在此页面上