最近研究了一些物联网平台技术资料,以做选型参考。脑子里积累大量信息,便想写出来做一些普及。作为科普文章,力争通俗易懂,不确保概念严谨性。我会给考据癖者提供相关英文链接,以便深入研究。
—— 冯立超 HiwebFrank
4. 平 台
由于物联网的地域分布广、设备数量众多的特点,物联网解决方案必须借助公有云平台来实现。
物联网解决方案须具备如下功能:
- 从设备收集数据
- 分析运行中的数据流
- 存储和查询大型数据集
- 实时和历史数据可视化
- 与后端业务系统集成
- 管理设备
我们用一个简单的图示来说明物联网解决方案构架,下图是微软给出的一个与厂商无关的物联网解决方案通用示意构架:
该简化构架包括设备连接、数据处理与分析、信息呈现三个层面。
该构架中,物联网设备收集数据并与云网关交互;云网关使其它后端服务可以处理这些数据,从云网关,数据提交给其它业务应用程序或仪表板操作人员及其它展示设备。
设备连接
如何让设备安全可靠地连接到解决方案后端,是物联网解决方案所面临的巨大挑战,相比于其它系统,物联网设备有如下一些特点:
- 通常是无人操作的嵌入式系统甚至是没有操作系统的设备
- 可能部署到物理访问成本高昂的远程位置等各种部署场景
- 可能无法通过其他方式来与设备交互,而只能通过解决方案后端来访问
- 供电及运算资源可能都有限
- 网络连接可能不稳定、缓慢或高成本
- 可能需要使用专属、自定义或行业特定的应用层协议
- 可以使用大量常见的硬件和软件平台来创建
除上述特点之外,物联网解决方案还必须考虑可扩展性、安全性和可靠性。传统的技术如Web容器或消息传送代理等不足以支撑这样的需求。
为此,物联网平台厂商都提出自己的解决方法,如微软的 Azure IoT Hub 及 Azure IoT SDK 等。关于 Azure IoT Hub 请参见上一讲相关内容。
有关设备连接的多种情况,微软给出的概念构架图如下:
数据处理与分析
在物联网解决方案中,数据处理与分析主要交由在公有云上的后端服务进行,包括设备数据筛选、汇总、路由到其他服务等等。后端服务主要负责如下工作:
- 接收来自设备的大规模数据,并确定如何处理和存储这些数据
- 必要时可以从云端向设备发送数据或指令
- 设备注册、预配置及安全连接控制
- 跟踪设备状态并监控设备活动
- 存储和分析设备历史数据,从而实现设备预见性维护
- 与设备进行交互,实现反馈控制等
当然,并不是所有的业务都必须交由云端处理,例如一些必须及时响应的操作比如紧急刹车,这些处理及操作都必须在设备端直接进行;另外,设备也可以进行一些预处理,从而提高效率、降低数据传输量。
为此,设备本身应该具备一些处理能力。
微软的 Windows 10 IoT Core,提供了强大的设备端计算能力;
而亚马逊的 Greengrass,则使物联网设备可以运行 AWS Lambda 函数、同步设备数据以及与其他设备安全通信,甚至无需连接互联网。Greengrass 可确保物联网设备快速响应本地事件、运行时采用间歇性连接,并最大程度地降低将物联网数据传输到云的成本。
华为的 LiteOS,则强调轻量级、低功耗(一个纽扣电池用好几年)、快速启动(毫秒级)及响应(纳秒级)、多种连接协议(广域/局域)等特性。
另外,一些物联网设备,也可以通过完全自主研发的芯片,实现相关数据采集与处理。
比如图像火灾监测设备,可以将图像火灾分析算法集成在设备芯片中,由设备芯片中的算法进行判断,仅将是否发生火灾的判定结果传输到云端。
而对于较复杂的图像、或者误判图像,则将图像数据及其设备端判定结果传到云端,通过机器学习,逐步改进算法,提高图像处理能力,并通过物联网对设备进行升级操作。
信息呈现和业务连接
信息呈现和业务连接层 用于展示和操控从设备收集的数据。它可让用户查看和分析从其设备收集的数据。 这些视图可以采用仪表板或 BI 报表的格式,以显示历史数据和/或接近实时的数据。
此层还可实现物联网解决方案与现有业务应用程序的集成,以连接企业业务流程或工作流。 例如,图像火灾监测系统,在发现监测设备故障信息后,通过与维护服务商现有的运维计划系统集成,可以预约工程师到现场进行检查。
下图是微软提供的一个物联网工厂的应用界面样例。
在该界面中,仪表板左侧展示了生产线细节信息。如仪表板左侧第一条,提示机械臂严重警告,而在仪表板中部的模拟界面中,同样用红色标出机械臂警告位置。在右侧的报警栏,列出不同时间点的警告信息,如机械臂温度警告等。而在仪表板下方,则展示该条生产线的整体效率信息。
微软物联网解决方案构架
下图是微软物联网解决方案的较详细的构架图:
微软的物联网解决方案平台,通过微软的公有云 Azure 实现,即 微软物联网套件 Azure IoT Suite。设备通过 Azure IoT Hub 注册和接入,然后可以使用微软公有云 Azure 的各种强大的数据处理、存储、分析、机器学习能力,构建所需的各类物联网业务。
微软物联网解决方案通常至少会使用到如下服务:
-Azure IoT Hub: 该服务提供设备到云和云到设备的消息传送功能,并充当云和其他主要 IoT 套件服务的网关。 该服务使得可以从大量设备接收消息,并将命令发送给设备。 使用该服务,还能够管理设备,例如,可以配置、重启连接到 Azure IoT Hub 的设备,或对其执行恢复出厂设置操作。
-Azure Stream Anzlytics: 流分析提供运行数据分析。 该服务处理传入遥测数据、执行聚合以及检测事件。 以及处理包含元数据或来自设备的命令响应的信息消息。 解决方案使用流分析来处理设备消息,并将这些消息传送给其他服务。
-Azure Storage和 Azure DocumentDB: Azure 存储和 Azure DocumentDB 提供数据存储功能。 解决方案使用 Blob Storage 来存储设备遥测数据并使其可用于分析;使用 DocumentDB 来存储设备元数据,以及启用解决方案的设备管理功能。
-Azure Web App和 Microsoft Power BI: 提供数据可视化功能。 借助 Power BI 的灵活性,可以快速生成针对具体业务要求的交互式仪表板。
微软还给出了一些预配置解决方案和相关演示案例,有兴趣的读者可以点击如下链接,通过实际操作了解上面截图中的工厂物联网使用场景:/demos/connectedfactory。
亚马逊物联网解决方案构架
而亚马逊给出的构架如下图所示:
亚马逊物联网解决方案当然强调其公有云平台 AWS,而最受其推崇的,自然是当下正热的 Serverless 构架的 AWS Lambda。
亚马逊物联网解决方案至少用到如下 AWS 服务:
-Amazon Simple Storage Service:亚马逊简单存储服务,简称 Amazon S3,提供可扩展的存储服务。
-Amazon DynamoDB:提供受管理的 NoSQL 数据库服务。
-Amazon Kinesis:提供大规模流数据实时处理能力。
-AWS Lambda:在亚马逊公有云平台发布运行自定义代码。
ZStack创始人张鑫的文章《Serverless,后端小程序的未来》 比较透彻地讲解了 AWS Lambda 及 Serverless 的原理、构架、应用场景、优势和不足,并讲述了Serverless与PaaS的区别、与容器技术的区别及联系等,推荐一读。
-Amazon Simple Notification Service:亚马逊简单通知服务,简称 Amazon SNS,负责处理通知发送与接收。
-Amazon Simple Queue Service:亚马逊简单队列服务,简称 Amazon SQS,将数据存储到队列,由应用程序获取。
(看看人家,做那么大的生意,本星球/本星系第一啊,啥都谦称为 Simple 简单啥啥啥,另外,包括现在 IT 运维领域最重要的 SNMP 简单网络管理协议、电子邮件的 SMTP 简单邮件传输协议......;看看我们,动辄 ×××、擎天、至尊,汗颜啊!惭愧啊!)
IBM 物联网解决方案构架
IBM 的物联网解决方案名为 Watson IoT Platform,(永远的沃森)。其构架图如下所示:
IBM 物联网解决方案基于 IBM 公有云平台 Bluemix,涉及到的服务至少包括:
-IBM Cloudant NoSQL DB:用于存储和访问设备数据。
-IBM Message Hub:为实时数据提供低延迟、可扩展的、高吞吐量的消息总线。
-IBM Blockchain 集成:对于特定领域,可以集成 IBM 区块链服务,以符合特定的商业规则要求。
-仪表板:利用 Bulemix 提供的数据可视化仪表板,可以可视化展示设备状态数据,提供 BI 功能。
IBM给出了一个简单教程,可以快速搭建物联网测试环境,可以参见https://console./docs/services/IoT/getting_started/quickstart/index.html#quickstart
本讲是本系列文档的核心,用了比较多的篇幅讲了业界领先的厂商的物联网平台。下一讲,我们探讨安全。