Azure 中的数据处理架构

Posted

技术标签:

【中文标题】Azure 中的数据处理架构【英文标题】:Data processing architecture in Azure 【发布时间】:2019-12-12 04:55:27 【问题描述】:

将设计一个系统,其中多个传感器将数据传输到事件中心。每个传感器每秒将传输大量数据(最多 15-20(大约 5 KB))。

一个用例是所有这些原始数据都必须以最小/无延迟传输到 cosmosDB,这是我可以通过以下架构实现的。

原始数据 -> 事件中心 -> Azure 流分析 -> CosmosDB

注意:上述用例是确定传感器的连接状态。所以它必须尽可能快。

另一个用例是传感器的指示属性,它取决于传感器的最后一个值(最多前 200 个值)。 现在问题就在这里。我尝试使用以下架构。

原始数据 -> 事件中心 -> Azure 流分析 -> Azure 函数 -> CosmosDB

因此,在这里,流分析的输出转到 azure 函数,它从 cosmosDB 获取前 200 个值进行必要的计算,然后将结果再次存储回 cosmosDB。但是这个过程似乎很慢。

COSMOS DB CONTAINERS
//Sensor Property Container
 
  id: "sensor_id",
  connection:true, //This needs to be updated as soon as raw data is available
  indication:"RED" //This depends on previous 200 values from sensor


//Sensor Raw Value Container
 
  id: "sensor_id",
  rawData: "RAW_VALUE",

您可以查看下面的图片,了解我正在寻找的内容。

Data Flow Image

我还尝试在 azure 流分析中添加用户定义函数以在其中运行算法,但它不支持 cosmosDB 作为参考数据。

【问题讨论】:

【参考方案1】:

您应该尝试将逻辑合并到流分析中。添加更多移动部件总是会导致延迟。您可以按 deviceId 对每分钟收到的值进行计数吗?并在此计数少于预期时生成警报?

【讨论】:

我正在按设备 ID 对值进行分组,仅获取最新值。我试图将逻辑整合到流分析中。但是,当新数据到达的每一秒,我都需要保存在 cosmosdb 中的先前状态。因此,每次新数据到达时,我都需要从 cosmosdb 中读取数据。我不确定如何在流分析中做到这一点。

以上是关于Azure 中的数据处理架构的主要内容,如果未能解决你的问题,请参考以下文章

Azure Databricks 将 JSON 数据写入 Parquet 文件引发错误:TypeError:无法推断类型的架构

Azure技术12-高可用--在Azure上创建典型高可用架构应用

架构比较后 Azure Sql 数据库架构缺少约束

Azure 数据工作室架构图?

使用参数在 Azure 数据工厂中导入架构

如何在 yaml 中处理 Azure DevOps 管道中的错误?