了解事件处理

已完成

Azure 流分析是一种用于复杂事件处理和流数据分析的服务。 流分析用于:

  • 从输入(如 Azure 事件中心、Azure IoT 中心或 Azure 存储 blob 容器)引入数据
  • 通过使用查询选择、投影和聚合数据值来处理数据
  • 将结果写入到输出,例如 Azure Data Lake Gen 2、Azure SQL 数据库、Azure Synapse Analytics、Azure Functions、Azure 事件中心、Microsoft Power BI 或其他输出

显示流分析作业与输入、查询和输出的图表

启动后,流分析查询将永久运行,并在新数据到达输入时处理新数据,并将结果存储在输出中。

流分析 保证恰好一次 事件处理和 至少一次 事件传递,因此事件永远不会丢失。 如果事件传送失败,它具有内置恢复功能。 此外,流分析还提供内置检查点来维护作业的状态并生成可重复的结果。 由于 Azure 流分析是一种平台即服务(PaaS)解决方案,因此它完全托管且高度可靠。 它内置了与各种数据源和目的地的集成功能,并提供灵活的可编程模型。 流分析引擎支持内存中计算,因此可提供高性能。

Azure 流分析作业和群集

使用 Azure 流分析的最简单方法是在 Azure 订阅中创建流分析作业,配置其输入和输出,并定义该作业将用于处理数据的查询。 查询使用结构化查询语言 (SQL) 语法来表示,并且可以合并来自多个数据源的静态参考数据,以提供可与从输入中引入的流数据结合的查找值。

如果流进程要求复杂或资源密集型,则可以创建一个流分析群集,该 群集使用与流分析作业相同的基础处理引擎,但在专用租户中(因此处理不受其他客户影响),并且具有可配置的可伸缩性,可用于定义特定方案的吞吐量和成本的正确平衡。

输入

Azure 流分析可以从以下类型的输入引入数据:

  • Azure 事件中心
  • Azure IoT 中心
  • Azure Blob 存储服务
  • Azure Data Lake Storage Gen2

输入通常用于引用流式处理数据源,该数据源在添加新事件记录时进行处理。 此外,还可以定义用于引入静态数据的 引用 输入,以增强实时事件流数据。 例如,可以引入包含每个气象站的唯一 ID 的实时天气观测数据流,并使用与气象站 ID 匹配的静态引用输入来扩充该数据,使其名称更有意义。

输出

输出是将流处理结果发送到的目标。 Azure 流分析支持各种输出,可用于:

  • 保留流处理结果以供进一步分析;例如,将它们加载到 Data Lake 或数据仓库中。
  • 显示数据流的实时可视化效果;例如,将数据追加到 Microsoft Power BI 中的数据集。
  • 为下游处理生成筛选或汇总的事件;例如,将流处理的结果写入事件中心。

查询

流处理逻辑封装在查询中。 查询是使用从一个或多个输入中选择数据字段的 SQL 语句定义的,筛选或聚合数据,并将结果写入输出。 例如,以下查询从 天气事件 输入中过滤出事件,仅包含 温度 值小于 0 的数据,并将结果写入 cold-temps 输出。

SELECT observation_time, weather_station, temperature
INTO cold-temps
FROM weather-events TIMESTAMP BY observation_time
WHERE temperature < 0

会自动创建名为 EventProcessedUtcTime 的字段,以定义 Azure 流分析查询处理事件的时间。 可以使用此字段来确定事件的时间戳,也可以使用 TIMESTAMP BY 子句显式指定另一个 DateTime 字段,如以下示例所示。 根据从中读取流数据的输入,可以自动创建一个或多个潜在的时间戳字段:例如,使用 事件中心 输入时,将生成名为 EventQueuedUtcTime 的字段,以记录事件中心队列中收到事件的时间。

在通过时态窗口聚合数据时,用作时间戳的字段非常重要,接下来将对此进行讨论。