Activator 中的延迟
Fabric Activator 针对实时数据运行规则。 虽然结果接近即时,但也存在可能导致延迟的因素。 在大多数情况下,这种延迟是无法察觉的,但在其他情况下,延迟最长可以达到 10 分钟。 创建和接收规则时,接收准确及时的信息是一个重要考虑因素。 本文回顾了用于确定包含事件与规则结构之间的平衡,以及 Activator 的发送速度的过程和设置。 例如,Activator 是否应允许更多数据到达并包含,或者 Activator 是否应确保收件人在设定时间接收警报? 另外,规则的结构如何影响向收件人发送激活的速度?
有三个重要因素会影响规则激活延迟:
- 延迟到达容错的用户设置。
- Activator 的后端处理可能会引入最多一分钟的延迟。
- 规则聚合。
延迟到达容错
延迟到达容错是在 Activator 规则“定义”屏幕中设置的,并应用于事件到达时间。 若要了解如何设置延迟到达容错,请参阅延迟到达容错设置。
后端处理延迟
规则在激活前可能需要处理。 例如,如果规则是与上一组事件进行比较,则它需要后端处理来检索以前的数据,进行比较,然后计算结果。 另一个示例是,如果针对 1000 万行数据运行规则,该数据的后端处理会引入延迟。
聚合延迟
如果在规则定义中使用聚合,则规则仅在完成指定时间窗口时激活。 例如,假设生成一个规则来对四个小时的数据求平均值。 如果满足规则条件的事件在中午 12 点引入,则规则会在下午 4 点触发。 延迟是聚合设置的结果。 即使规则包含简单的聚合(例如平均值),Activator 在传入事件数据中运行聚合之前无法发送激活。
后台时间概念
为了更好地展开讨论,我们来定义一些背景概念。
- 事件时间:原始事件发生的时间。 它是事件负载的一部分。 例如,当一辆在高速公路上行驶的汽车接近收费亭并被传感器注意到时。
- 处理时间:事件到达处理系统时且被观察到的时间。 例如,收费站传感器看到汽车时,计算机系统需要一些时间来处理数据。
- 到达时间(水印或引入时间):指示事件数据到达 Activator 时的标记。 流的性质决定了传入事件数据永远不会停止,因此到达时间指示的是 Activator 在某个时点在流中所取得的进度。 此时,Activator 可以生成不需要收回的完整、正确和可重复的结果。 而且,此时 Activator 可以开始处理数据。 该处理过程能够以可预测和可重复的方式完成。 例如,如果需要对某些错误处理条件进行重新计数,则到达时间是安全的起点和终点。
当规则具有时间参数且事件时间位于该时间参数内,但到达时间超出该参数时,将发生延迟到达。 如果我们再看收费亭示例,就会发现收费亭传感器会识别汽车,并且事件时间在时间参数内。 Activator 发现规则具有聚合,并对数据执行该聚合。 执行该聚合所需的时间会使到达时间超出时间参数。 现在可以将这事件认为是迟到事件。 如果希望包含延迟到达,请为“延迟到达容错”设置一个值。
有关此主题的更多资源,请参阅 Tyler Akidau 的博客文章流式处理 101 和流式处理 102。
“延迟到达容错”设置
延迟到达容错是一个用户设置。 延迟到达容错是指 Activator 等待事件到达并得到确认和处理的时间。 默认值为 2 分钟。 延迟到达容错会导致延迟。 使用延迟到达容错创建的规则会产生延迟,且延迟时间至少是设定的延迟到达容错的时间量。 创建规则时,需要决定是使用默认容错还是更改它。 容错可确保迟到事件和无序到达的事件有机会包含在规则评估中。 如果某个事件超出延迟到达容错范围,则 Activator 不会考虑该事件。 到达时间落后于该容错的任何事件都不加以考虑。
总的来说,需要考虑的是以下事项是否更为重要:
- 等待迟到数据点,或
- 对可能不完整的数据运行规则,以便规则更快地激活。
在此示例中,数据点以 15 分钟的间隔进行测量。 前三个点(蓝色)在时间窗口内。 第四个点(橙色)不在时间窗口内。 事件时间在 15 分钟间隔内,但 Activator 未在 15 分钟间隔内引入该事件。 Activator 仅对达到时间在 15 分钟时间窗口内的数据评估规则。 除非用户指示他们希望允许延迟到达容错,等待查看其他数据点是否到达。
Activator 不会考虑用户数据的延迟。 例如,用户的 IoT 传感器可能会脱机 1 小时。 这些传感器重新联机后,Activator 会立即接收数据,但该数据因 Activator 之外的脱机状态延迟了 1 小时。
再提供一个示例。
用户创建了一个规则,以分钟间隔计算平均温度。 延迟到达容差设置为“默认值”。 “默认值”为 2 分钟。 包含温度值 20 和 30,平均温度为 25。 但是,在发生下一个规则激活之前,不包含 40 度温度的延迟到达事件。
事件时间 | 到达时间 | 温度 |
---|---|---|
09:00 | 09:02 | 20 |
09:01 | 03:09 | 30 |
09:02 | 09:07 | 40 |
重要
当前无法替代默认延迟到达容错。 此设置也不适用于 Power BI 规则。
基于 Power BI 视觉对象构建的规则
内置延迟因服务而异。 事件流的延迟不同于 Power BI 视觉对象的延迟。 以下两个部分构成基于 Power BI 视觉对象构建的规则的延迟:查询系统内置 Power BI 视觉对象的频率,以及 Activator 的后端可能会引入的延迟。
每当新数据到达 Activator 时,都会评估 Power BI 规则。 Activator 每小时从 Power BI 引入一次新数据。 这意味着满足规则条件的事件在事件发生后最多一小时触发激活。 有关详细信息,请参阅从 Power BI 为 Activator 获取数据。