产品设计理念 ¶
本章节会对蜂鸟物联网平台架构设计、产品设计理念做详细说明,方便用户能尽快了解本产品。
同时,本章节也会拿市面上常见的物联网平台跟本平台做对比,分析相同点与不同点、优势与劣势,帮助用户更好选型。
其他物联网平台设计 ¶
市面上常见物联网平台设计如上图所示,我们简明扼要做一下说明。
不同品类的设备,往往传输协议不同,所以你在上图可以看到使用TCP协议的设备、使用UDP协议的设备、使用MQTT协议的设备......如果设备想要和平台做通讯 ,那么平台就需要提供相应"服务","服务"的作用就是与设备建立连接。一般的物联网平台都有连接认证,毕竟我们不会允许没有授权的设备与平台建立连接,随后消息会经过物 联网平台解码,把数据解析成我们预先定义的数据模型(物模型)。
之后消息会被发送到消息总线中,消息总线一般也称之为消息队列,它负责订阅各服务发送过来的消息(经过认证和解码),并且把消息保存在消息队列中,供下游服务订阅使用。 市面上一般采用MQTT、Redis、Kafka、RabbitMQ等来实现消息队列,往往根据产品性能的要求,采用的方式也不一样。由于消息队列不是本章的重点,我们不做过多讨论。
投送到消息队列里面的消息可以被各个下游服务订阅使用,如业务服务、规则引擎服务、数据存储服务等等。
至此,市面上常见的物联网平台的架构设计我们就讲完了,读者请注意一点,这些TCP、UDP、MQTT、Websocket等等服务是包含在物联网平台内的,他们随着物联网平的启动而启动, 物联网平台的停止而停止(有些平台也可以支持按需启动)。
蜂鸟物联网平台设计 ¶
在了解本平台前,我们先理解一个概念,什么是驱动?只用深刻的理解驱动这个概念,才能正确理解平台设计理念。
所谓驱动,就是用户采用官方sdk编写的一段代码,它可以被打包成docker镜像。他的作用是主动获取(被动接收)设备数据,并且把数据上报给物联网平台,同时它还可以接收物联网平台下发的指令,从而控制设备。
如果所示,蜂鸟物联网平台与其他物联网平台设计上最大的不同在于,我们把这些供设备连接所提供"服务"从物联网平台中抽离了出来,它并不包含在物联网平台内,我们把它下发到了用户侧,由用户自己实现。 也就是说用户需要编写代码完成设备的连接认证,消息的编解码等等。平台不关心驱动是怎么获取到设备的数据,无论是TPC还是UDP,平台也不关心消息的编解码是如果实现的,平台只对驱动提供一套标准SDK接口,供驱动调用。 如属性的上报、事件的上报,同时驱动也可以接收到物联网平台的控制指令,从而控制设备。
这种设计模式可以叫做插拔设计,驱动可以理解为一个插件,即插即用,与平台深度解耦。这样设计的好处在于:
- 1、驱动(插件)可以按需启动,更节省系统资源。
- 2、服务的启动,消息编解码,功能实现完全下方到用户手中,自由度更高。
- 3、可以以驱动(插件)为一个模块单独管理某一品类的设备,方便管理以及运维。
当然这样的设计模式也有一定的缺点,由于驱动需要和平台的服务运行在同一台虚拟机内,想要接入更多设备只能纵向伸缩服务资源。