IOT平台的通用模块和差异化

最近在做IOT相关业务的测试,苦于没有这方面知识的积累,一直在摸着石头过河。无意中发现该系列方面的外文,抱着学习的态度对原文进行翻译,不当之处敬请指教。建议看原文系列https://blog.persistent.com/index.php/2014/12/09/part-1-iot-platforms-common-building-blocks-key-differentiators/ 。众多IOT平台的架构在技术实现和功能模块等方面看起来非常相似。那么这些物联网平台的常见模块是什么?有哪些关键的差异化特性可以使物联网平台脱颖而出?

1

Generic Architecture of an IoT Platform

物联网平台的基本功能可以简单的概括为收集(Gather)、分析(Analyze)和执行(Act)。Gather是指从多个产品和设备中收集或接收数据,Analyze是指分析收集到的数据以得出有意义的、可以执行的输出结果,Act是指根据相应的分析结果,执行相应的动作,例如发出相应的告警、通知或让设备执行相应措施。图1是IOT平台的通用架构,大体拥有Device Interface、Admin Interface、Messaging Broker、Storage等几个模块;Device Interface主要实现了收集数据的功能,Message Broker和Storage实现了数据的传递和存储,Streaming Analytics和Batch Analytics用来数据的分析,APIs和Reporting Service用来实现Act相关的功能,发出告警和通知,Admin Interface用于设备设置、相应策略规则的设置。

2

common building blocks

Device Interface and Administrator

平台为用户和设备提供相应的接口,用户使用REST/HTTP接口来配置相应的设备,设备需要多种不同的协议与平台进行交互。用户可以管理产品、设备、位置和用户等,此外它还允许创建分析设备发送的有效负载的规则和策略。该层使用REST/Web服务引擎来实现,并且可以通过适配器或网关转换为其他协议。规则将产品(设备系列或组)、设备位置、数据属性和匹配条件进行处理,绑定到相应的设备。

Messaging Broker

设备将消息传递给message broker,该层通常使用RabbitMQ、ActiveMQ、ZeroMQ和Apache Kafka,从而实现服务的可伸缩性。

Storage Layer

消息可以进行转换存储到数据库中,MongoDB、Cassandra和HBase都非常符合这一要求,该服务均具备支持不同消息格式所需的灵活性,并且可以支持规模化的部署。

Analytics Layer

数据处理存在两种方式,流式分析会在收到消息后立即检查匹配规则,并在满足规则条件时将其移交给适当的操作处理程序。这里的选择可以是Apache Spark和Apache Storm等分析工具。规则可以静态定义,也可以使用基于历史数据或训练数据的机器学习算法动态定义。另外一种是按需或批量处理,该数据处理方式在存储数据上进行,目标是生成数据的汇总或聚合视图,以便报告层可以使用, 这里可以选择Apache Spark和Hadoop技术。

Data Consumer APIs & Reporting

Consumer 通过REST/HTTP的方式消费存储的数据,如果使用MongoDB对数据进行了存储,那么这里的API就是对MongoDB CRUD API的封装。此外某些实现还可以使用类似ElasticSearch的搜索基础结构。Reporting可以让用户定制多种类型的报告,均可以使用开源lib库完成。

3

Key Differentiators

Architecture

平台架构在每层都能够支持multi-tenancy ,此外还可以进行水平扩展并且能够支持分布式计算。

Supported IoT Protocols

平台中需要支持重要的物联网协议,如MQTT、AMQP、STOMP和CoAP等。

Ease of Device On-boarding

平台应公开设备管理的API,其中包括设备注册和激活。API应允许管理员批量管理自行注册的设备,已激活的设备需要通过API来检索相应的证书密钥。

Security

在设备安全层面,平台应支持基于设备激活密钥和其他附加参数(如IP地址,位置等)的安全性。在平台层面采用基于角色的访问控制,用于管理策略/规则以及有关每个位置和设备系列的角色和权限。

Rule Engine Customizability

在规则定义层面,平台应公开用于创建规则的API,规则应该采用产品系列、位置、有效负载属性等输入进行匹配,匹配条件满足时要采取的操作。平台可以定义用于定义规则查询和相应操作的DSL(sql或jsonpath语法)。对于动态规则,平台应该允许连接到机器学习或神经网络。在支持的操作方面, 平台应提供在满足规则时要采取动作的实现。

Other Goodies include

直观、易于使用、完备的API,完备的请求响应和错误条件示例;

提供沙盒环境和开发人员套件,可以快速构建物联网管道的概念验证;

基于Web的门户,用于配置设备,规则管理,用户管理和仪表板/报告的管理;

完善的搜索界面,用于根据过滤器,搜索相应的设备和数据。

4

总结

通过以上分析可以看出,一个相对完善的IOT平台包括哪些通用模块,每个模块实现了哪些基本功能,为了实现该功能可以选择那些技术来实现。此外为了让平台具有不同的特点,可以从哪些方面去考虑。以上便是笔者翻译的文章,敬请拍砖。

Qtest是360旗下的专业测试团队!

是WEB平台部测试技术平台化、效率化的先锋力量!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180912B1OQST00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券