【问题标题】:Data processing architecture in AzureAzure 中的数据处理架构
【发布时间】: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 作为参考数据。

【问题讨论】:

    标签: azure-functions azure-cosmosdb iot azure-eventhub azure-stream-analytics


    【解决方案1】:

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

    【讨论】:

    • 我正在按设备 ID 对值进行分组,仅获取最新值。我试图将逻辑整合到流分析中。但是,当新数据到达的每一秒,我都需要保存在 cosmosdb 中的先前状态。因此,每次新数据到达时,我都需要从 cosmosdb 中读取数据。我不确定如何在流分析中做到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 2019-04-24
    • 2011-02-07
    • 2017-10-22
    • 1970-01-01
    相关资源
    最近更新 更多