[转载]国外物联网平台初探(二):微软Azure IoT
原文链接:http://www.cnblogs.com/ibrahim/p/microsoft-azure-iot.html
平台定位
连接设备、其它 M2M 资产和人员,以便在业务和操作中更好地利用数据。
连接 IoT 设备
将所有设备连接到云,从这些设备接收大规模数据,以及管理这些设备的授权和限制。
在将设备连接到云和处理设备的聚合事件流时,互联设备的快速增长以及平台和协议的不一致会引起巨大挑战。平台预配容量以处理来自数百万设备的事件,同时支持 AMQP 和 HTTP 协议,保护每台设备的事件顺序。
实时监视
将设备连接到云并接收事件数据时,监视此数据流,以获得对业务的见解、促进效率提升及精简业务流程。
每秒分析数百万事件,以及快速开发和部署实时监视解决方案,从基础结构中的设备和传感器发送的数据获得可操作的建议。
Azure IoT架构
Azure IoT服务
Azure IoT 中心(IoT Hub)
-
Azure IoT 中心是一项完全托管的服务,可在数百万个 IoT 设备和一个解决方案后端之间实现安全可靠的双向通信。
- 提供可靠的设备到云和云到设备的大规模消息传送。
- 使用每个设备的安全凭据和访问控制来实现安全通信。
- 可广泛监视设备连接性和设备标识管理事件。
- 包含最流行语言和平台的设备库。
- 设备级别的身份验证:每个设备设置独有的安全密钥,IoT 中心标识注册表会存储设备标识和密钥,后端可将个别设备加入允许列表或方块列表,以便完全控制设备访问权限。
- 设备连接操作监控:设备标识管理操作与设备连接事件存在详细的操作日志,便于识别连接问题,例如,尝试使用错误凭据进行连接的设备、消息发送太频繁,或拒绝所有云到设备的消息。
- 丰富的设备库:Azure IoT 设备 SDK 也支持C、C#、Java 和 JavaScript 等托管语言,支持许多 Linux 分发版、Windows 和实时操作系统。
-
可扩展的IoT 协议。IoT 中心存在一个公共协议,它使设备可以通过本机方式使用 MQTT v3.1.1、HTTP 1.1 或 AMQP 1.0 协议。还可以通过以下方式扩展 IoT 中心,以便为自定义协议提供支持:
- 现场网关:使用 Azure IoT 网关 SDK创建现场网关,该 SDK 可将自定义协议转换为 IoT 中心所理解的三个协议之一。
- 云网关:自定义 Azure IoT 协议网关(在云中运行的一个开放源代码组件)。
- 可扩展高并发的事件处理:Azure IoT 中心可扩展为数百万个同时连接的设备,以及每秒数百万个事件。
- 基于事件的设备数据处理:事件处理器引擎在热路径上可以处理设备事件,也可以将它们存储在冷路径上以供分析。IoT 中心可保留最多 7 天的事件数据,以保证可靠的处理并消减负载峰值。
- 可靠的云到设备消息传送:后端使用 IoT 中心将消息发送到单个设备(含至少一次的传递保证)。每条消息都有单独的生存时间设置,且后端可以请求传递和过期回执。这可确保完全了解云到设备消息的生命周期。
- 存储和分析文件和缓存的传感器数据:设备使用 SAS URI 将 IoT 中心托管的文件上载到 Azure 存储空间。当文件到达云时,IoT 中心可以生成通知,使后端处理这些文件。
事件中心 Event Hubs
- 事件中心是一种事件处理服务,用于向云提供大规模的事件与遥测数据入口,并且具有较低的延迟和较高的可靠性。事件中心充当事件管道"前门",位于事件生成者与事件使用者之间的组件或服务,可以将事件流的生成与这些事件的使用分离开来。
- 事件中心每秒可以引入数百万的事件,从而能够处理和分析连接设备和应用程序生成的海量数据。
- 事件中心收集到数据后,可以使用任何实时分析提供程序或批处理/存储适配器来转换和存储这些数据。
- 事件中心可将事件流的生成与这些事件的使用分离开来,事件使用者可以根据自己的计划访问事件。
-
每秒将数百万事件流式传输到多个应用程序中
- 事件中心是一个高度可伸缩的发布-订阅采集器,每秒可获取数百万个事件,能够处理和分析互连设备与应用程序生成的海量数据。将数据采集到事件中心后,使用任何实时分析提供程序或者批处理/存储适配器来转换和存储数据。
-
允许应用程序处理负载分布可变的事件
- 大数据是当今互连世界的直接体现。大数据有很多来源,例如每隔数分钟就会生成遥测数据的互连式汽车和恒温器、每隔一秒就会生成事件的应用程序性能计数器,或者在用户每执行一个操作时就会捕获遥测数据的移动应用程序。具有弹性的托管采集器服务能够应对不断变化的负载分布,以及间断性连接造成的负载高峰。
-
跨平台连接数百万台设备
- 互连设备的快速涌现使 IT 行业面临更严峻的挑战,因为必须应对各种平台和协议。在连接这些不同数据源的同时处理大规模的聚合流已成为一个很大的难题。事件中心可让用户轻松置备容量以从数百万台设备采集事件,同时还能基于每台设备保留事件顺序。支持 AMQP 和 HTTP,让很多平台可与事件中心一起使用,本机客户端库也可用于各种流行平台。
流分析(Stream Analytics)
云中的事件实时流式处理引擎,可实时快速开发,对现有数据属性进行深入了解。
- 为物联网解决方案执行实时分析
- 每秒对数百万事件进行流式处理
- 获得关键任务的可靠性和性能预测结果
- 利用设备和应用程序的数据,创建实时仪表板和警报
- 跨多个数据流进行关联
- 使用常见的基于 SQL 的语言,以实现快速开发
-
实时获取分析结果
- 实现快速开发和部署低成本分析解决方案,从设备、传感器、基础结构和应用程序实时获取深入分析结果。
-
实现快速开发
- 减少为扩展的分布式系统开发分析功能时的困难并降低复杂程度。只需使用基于 SQL 的语法描述所需的转换,系统将自动分配以实现扩展、性能和恢复能力,完全不需要管理复杂的基础结构和软件。
-
执行实时分析
- 与事件中心的现成集成,每秒可接收数百万事件。比较多个实时流或将实时流与历史值和模型一起进行比较。这样可以实现异常检测和传入数据转换,并能够在流中出现特定错误或情况时触发警报,以及为实时仪表板提供支持。
-
实现任务可靠性和扩展能力
- 扩展以适应任何数据量需求,同时仍能实现高吞吐量、低延迟和有保证的恢复能力,不需要任何硬件或其它前期成本,也不需要耗费时间进行安装或设置。在数分钟内启动并运行。流分析可在高吞吐量的条件下处理数据,结果可预测且无数据丢失。
通知中心(Notification Hubs)
可缩放的大规模移动推送通知引擎,可快速将数百万条消息推送至多种平台(iOS, Android, WP等)
-
在几分钟内广播至数百万设备
- 快速将数百万条消息推送至 iOS、Android (Baidu Push)、Windows,或 Kindle 设备。
-
支持任何后端系统
- 可插入内部环境或 Azure 云端运行的任何后端系统:.NET、PHP、Java、Node。
-
通过动态标签推送至不同用户群
- 利用标签功能,根据活动、兴趣、位置,或首选项划分用户群,在正确的时间将正确的信息推送给正确的人员。
-
使用模板轻松实现本地化
- 使用模板功能推送本地化通知信息,让用户获得与自己所用语言一致的信息。模板功能无需为每个客户存储本地化设置。
-
针对大规模环境设计
- 无需重构或切分(Sharding),即可快速扩展至数百万设备,发送数十亿条推送通知。通知中心可自动对基础结构进行必要调整,用非常低的延迟将信息推送至每台活跃设备。
机器学习( Machine Learning )
提供开发简单、功能强大、可灵活扩展、基于托管云服务的预测分析方案
现属于Cortana智能套件
-
主要功能
- 数据探索、描述性分析、预测性分析
- 监管学习、无人值守学习
- 模型训练和评估
机器学习步骤
- 导入数据至平台
- 探索和可视化数据
- 生成和选择特性
- 创建和训练机器学习模型
- 部署和使用模型
开发工具界面 – 创建IoT中心
IoT中心创建结果
共享访问策略
开发工具界面 – 创建设备标识
开发工具界面 - 创建流分析作业监视器
开发工具界面 – 通知中心
开发工具界面 – 机器学习模型
Machine Learning Studio: 创建预测模型