首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从蔚蓝函数处理当前和以前的IoT集线器事件?

如何从蔚蓝函数处理当前和以前的IoT集线器事件?
EN

Stack Overflow用户
提问于 2022-01-18 11:48:56
回答 2查看 168关注 0票数 0

我有一个简单的场景,在这个场景中,我希望获取参数的当前值与来自IoT集线器遥测消息的以前值之间的差异,并将此结果附加到时间序列洞察环境(如果需要的话通过事件集线器发送)。

我怎样才能做到这一点?我正在研究Azure函数,但不知道如何准确地实现它。

消息之间的最小时间戳差为1秒,只有边缘设备(最大可能为3)才会发送遥测数据。每个边缘设备可能正在从大约500个设备中收集数据。

我正在寻找关于所涉及的逻辑步骤和一些Python代码关键部分的指导。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-18 15:10:21

这些是遥测信息还是财产变化?还有,规模(设备的数量)是多少?要有效地做到这一点,您需要确保既有当前的值,也有以前的值,这意味着在外部存储上一次报告的值和时间戳,因为这可能需要很长的时间间隔。事件集线器不能保证拥有所有过去的消息(默认是24小时),所以如果消息之间有很长的延迟,那么它就不是需要依赖的存储库。

持久实体可以用来存储状态(使用类似于Actor模型的东西)。这些在Azure存储中是持久化的,因此在极高的吞吐量下,只有内存的计算选项对于延迟持久性可能是有意义的,但是您可以在函数中构建一个内存缓存层,以便在需要时提供帮助。这很可能是你想要做的最好的选择。

对于大多数人来说,进入Azure存储和返回的性能影响是最小的,持久的实体将是最简单的前进之路。

票数 1
EN

Stack Overflow用户

发布于 2022-01-20 11:26:23

如果您是在一个近乎实时的流中这样做的,最好的解决方案是使用使用延迟运算符的。ASA有许多您需要的有用特性,例如分区BY和事件排序策略。请注意,ASA的运行成本很高,使用起来也很困难,但是对于商业解决方案来说,它是一项很好的服务。

如果您不需要接近实时,查询(blob)持久化数据的普通‘option脚本是一个很好的选择,如果运行时间不长,可以将其封装在Azure函数中。

Azure函数不建议用于有状态消息处理。您对运行的函数实例的数量、批处理的大小等没有足够的控制。因此,不可能始终如一地、自信地知道“以前”的timeseries值是什么。使用Azure函数,您必须假设并发性永远不会成为问题,这是流IoT数据所不能做到的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70755132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档