在 Azure 平台上开发物联网方案的最佳实践

  • Jonathan Allen
  • 邵思华

2015 年 5 月 3 日

话题:Azure架构

如果你问物联网是什么,那么不同的人会给你不同的答案。有人说它是一种全新的、革命性的技术,也有人说它只是我们这几十年来努力成果的自然发展。实际上它处于这两种答案之间。从很早之前,我们就已经拥有物联网风格的设备了,但这些设备或者极为简单,例如恒温器;或者非常复杂,例如飞行器上的遥控自动驾驶装置。不同的地方在于,我们不需要投入像航天学工程那么大的成本,就能够交付复杂的设备了。

考虑到这一点,来自微软的 Kevin Miller 为使用者启动物联网方案的开发提供了这些基本指导方针。

模式:大处着眼,小处着手

开发物联网设备比起纯软件开发要困难得多。因此在开始一个新的项目时要紧记这个咒语,“大处着眼,小处着手”。原型的设计变得极为重要,因为你不能等到已经卖出了 100 万台设备之后再来决定如何发布固件更新。反之,如果你创建的架构只能够支持 100 台设备,那么当你准备开始配送之前必须将它完全重写。因此虽然设备的功能要从小处着手,但必须保证它的可伸缩性。

对于不同的物联网设备来说,保修期的变化非常之大。虽然多数面向消费者的硬件是设计为支持今后数年,乃至十年的期限,但它们很容易被替换。而一旦你开始考虑从物理上就构建到整个结构中的设备,那么保修期可能会延长到几十年。

模式:遥感优先

要预先预测哪些数据有价值是一件非常困难的事,因此要首先处理这一点。尽可能获取商业数据与诊断数据,并将它们保存在大容量的系统中。如果你使用 Azure,那么就要使用到Event Hub,它能够每秒钟处理几百万条消息。

当你从遥感方面入手时,安全性方面的问题会相对容易处理。虽然你仍然要考虑违背隐私与安全条例方面的问题,但相比起你将命令与控制方面的特性暴露给使用者可能招致的损害,这种方式可能面临的破坏性是非常有限的。举例来说,一个制造业公司宁可让它每小时能够生产的配件数量泄露出去,也不愿意将生产线上的机器人的控制权交给他人。

当你的遥感与安全方案证实了其可行性之后,你就能够满怀信心地添加命令与控制方式的特性了。

产品专注:流分析

流分析(Stream Analytics)是微软所推荐的一种工具,可用于大量基于消息的数据。它结合使用了 JavaScript 和一种类似于 SQL 的查询语法来处理来自于 Event Hub 的数据。

流分析中的 SQL 功能提供了在一般的数据库中不具备的功能,其中之一是能够根据某个滑动窗口对数据进行分组。滑动窗口之间可以是非重叠的,这与你使用 SQL Server 所创建的功能非常类似。作为一种替代方案,你可以使用一个持续的滑动窗口。比方说,如果你有一个 15 秒的滑动窗口,那么你就可以看到任意 15 秒期间的内容,而不是只能看到第 0、15、30 和第 45 秒的数据。

流分析工具包含了一个 REST 风格的接口,允许你与任何应用或数据源进行整合。在这个示例中,他们演示了如何使用遥感数据与滑动窗口找到那些在 15 秒的窗口期间内出现多次故障的设备。如果对此进一步扩展的话,可以让某种监控工具使用该 REST 端点定期地向流分析工具进行轮询,以找到故障设备,并向相关人士发出警告。

模式:不要干扰快速通道

要千万注意避免在高容量组件之间进行放入任何东西。举例来说,不要尝试改动 Event Hub 与 Stream Insight 之间的数据。如果需要对数据进行清理,就在它进入“粗管道”之间完成,或是在数据从另一端返回之后再进行。

模式:深度防御

安全是一种共同承担的责任。系统中的每个部分,从设备到云端服务器都需要保证其安全性。实现这一点需要每一方的参与:你不可能像购买其它服务那样购买安全性。如果无法做到涵盖每一方面的安全性就会造成极大的麻烦,新闻中将出现被攻破的汽车与医学设备的相关报道。

一种经常被忽略的场景是设备的回收。如果你的电话配备了某种智能无钥匙启动系统,然后你又卖掉了这个电话,那么它还能够解开你家里或汽车的锁吗?也许这个电话甚至能够解开你的银行帐户呢?

因此使用多个安全层是非常重要的。除了常见的实践之外,你还要注意违反模式的地方,例如某个设备出现在错误的地方,或是发送的数据与平时的情况不一致。

要了解交付物联网方案的更多信息,请观看 Channel 9 上的演讲视频《在 Azure 平台上创建物联网方案的最佳实践》。

查看英文原文:Best Practices for IoT on Azure

Azure架构