物联网云平台消息推送系统的研究与设计

2020-06-28 07:46董梁玉雷晓卫刘继永
机电产品开发与创新 2020年3期
关键词:叉车客户端消息

董梁玉, 雷晓卫, 刘继永

(1.机械科学研究总院, 北京 100089; 2.中机寰宇认证检验有限公司, 北京 100089;3.中机科(北京)车辆检测工程研究院有限公司, 北京 100089)

0 引言

随着时代的不断发展,移动网络与智能终端的普及,我们见证及感受着信息与通信科技对于我们生活方式的改变。 物联网(IOT),是机械、互联网、通信等不同领域融合的产物,万物互联已经成为了必然趋势。与传统互联网相比,物联网下的各种智能终端由于其处理器性能、网络带宽以及连接稳定性等各个方面有着不小的差异, 所以对物联网相关的推送系统有着更高的性能要求。

本文通过对于目前市面上比较流行的物联网信息推送协议优缺点的的比较分析, 提出了一种基于MQTT 协议的物联网推送平台设计方案, 并对平台主要模块进行了实现。第一部分是多种推送协议的对比分析。第二部分介绍了MQTT 协议的报文格式、协议特点与通讯流程。 第三部分是物联网云平台推送系统的总体架构。 第四部分对信息推送系统的主要组件进行设计与实现。 第五部分是所设计的推送系统在叉车可靠性强化试验远程监控平台中的使用案例分析。 第六部分对全文做出总结。

1 消息推送技术

目前在物联网领域广泛使用的信息推送协议主要有三类,分别是XMPP 协议、COAP 协议、MQTT 协议,下面进行对比说明。

XMPP(Extensible Messaging and Presence Protocol)协议根据Jeremie Miller 所提出的Jabber 协议改进而来,由IETF 制定,符合RFC2778 和RFC2779 规范。该协议成熟、强大、可靠、安全,可扩展性强;但存在重复转发,网络流量较大的问题,网络通信的过程中数据冗余率非常高,网络流量的70%都消耗在了XMPP 协议层。 对于物联网通信来言,大量智能设备工作环境、网络环境复杂,省电、省流量是直接影响通信质量的关键因素, 从这点来讲,XMPP 并不适合作为物联网通信协议[1]。

COAP(Constrained Application Protocol)协 议 的 设 计目标就是在处理器性能不高, 网络环境不稳定的设备上实现数据传输。COAP 协议是对传统的HTTP 协议进行部分简化所提出的。 并且相对于HTTP 协议而言,COAP 协议也做了一定程度的优化:

(1)基于UDP 通信。 与其它基于TCP 的协议相比,省去了建立TCP 连接的性能开销。

(2)为适应低网速的环境,COAP 协议采用了将数据包头部使用二进制压缩的方式。

(3)数据的发布和接收都是是异步进行,这样可以提高响应速度。

MQTT 协议是一种由IBM 开发的轻量级物联网传输协议。 之所以轻量级在于MQTT 协议为了用于物联网数据传输而专门对其自身的报文格式以及信息处理机制做了一定的优化, 能够有效的降低物联网信息传输的无用带宽损耗。

COAP 协议已经针对于传统的HTTP 协议进行了改进,相较于XMPP 协议也具有了数据包小,不过多占据带宽的优点。 但是与MQTT 协议相比而言,有如下缺点:

(1)MQTT 基于TCP 协议的,属于长链接,服务端可以实时推送最新消息。COAP 协议基于UDP 协议,属于无连接。 客户端信息的获取类似于传统的HTTP 协议,只能由客户端请求,无法进行实时推送[2]。

(2)MQTT 协议基于发布/订阅模型可以实现多对多通信,而COAP 协议只能实现点对点通信。

(3)当设备处于网络不稳定环境下,MQTT 协议相比于COQP 协议可以自动进行断线重连。

综上所述, 为了实现安全可靠的物联网环境下的消息推送系统,MQTT 协议是当前比较好的选择。

2 MQTT 协议研究

2.1 MQTT 协议格式

MQTT 协议的控制报文可以用固定报头、可变报头,有效载荷等部分组成。 其中固定头部部分仅仅占了2 个字节,内容格如表1 所示。

表1 MQTT 消息固定报头格式

其中Message Type 表示MQTT 控制报文消息传输的类型。QoS level 有0、1、2 三种级别,代表着三种不同的服务质量,传输时,随着级别的增加,需要的系统开销越大。Remaining Length 表示可变报头与有效载荷部分总的长度,最大长度为256MB。 对于有效载荷部分而言,由于报文传输时,MQTT 协议对该部分不做任何限制,这也导致了在使用MQTT 协议时候能够兼容所有的数据类型,这个特点对于物联网来讲至关重要。

2.2 MQTT 协议通讯流程

客户端通过MQTT 协议相互通讯的流程如图1 所示。 每一个客户端既可以是消息的发布者也可以是消息的订阅者。 消息发布者与消息订阅者之间不直接传输数据,而是首先消息发布者向MQTT 代理发布topic 标识的消息,消息代理进行回复。同时消息代理把接收到的消息推送给带有相同topic 消息标识的订阅者[3]。 本质是一种异步通信的方式, 在最大程度上降低了消息发布者与订阅者之间的时间、空间耦合度即:两者之间不需要互相知道彼此准确的IP 地址与端口号,甚至不用同时在线。 这一特点对于充满未知变化的物联网领域十分贴合。

图1 MQTT 协议通讯的流程图

3 平台总体架构设计

如图2 所示, 物联网推送系统整体框架采用分层设计的方式,整体分为感知层、平台层、应用层三个部分。 感知层是数据的采集终端, 通过不同类型的传感器采集物联网系统所需要的数据,并把数据发送给平台层。平台层可以分为三个部分,分别是:MQTT 消息处理系统、数据持久化系统以及服务于应用层的各种交互信息处理系统。 MQTT 消息处理系统的又可以分为MQTT 消息核心处理模块、身份验证模块以及ACL 权限控制模块。 数据持久化系统用于对物联网推送系统的感知层数据的存储,可以通过Redis 缓存和Mysql 持久化的结合的方式来实现。 应用层可以采用HTML+CSS+JavaScript 架构搭建,通过AJAX 请求以及MQTT 推送的方式在客户端前台页面实现数据的实时显示和实时处理功能。

图2 平台总体架构图

4 平台层核心功能的实现

4.1 身份认证登录模块设计

客户端发起连接请求时,Mosca 服务器首先对用户的账号信息进行格式验证, 格式验证通过后再结合数据库对账号信息的真实性进行验证操作, 以决定是否接受这个连接请求。同时为了增加用户信息的安全性,客户端用户账号密码是以MD5 加密的形式进行存储,这样即使使数据库发生泄漏,用户重要信息也无法被破解。身份验证流程如图3 所示。

图3 身份验证流程图

4.2 话题设计

话题(Topic)是MQTT 消息推送业务的核心,其设计的好坏直接影响着整个推送系统的性能和可扩展性。 一个好的话题分配设计, 不仅能以最简练的话题表示形式实现预期目标, 并且可以以尽量小的改动实现整个系统业务的扩展[4]。MQTT 的话题采用分层方式设计,各层主题之间采用正斜杆(“/”)作为分隔符。话题的分配方式如下:

(1)以rootid/sys/开头作为系统发布的统计状态信息。其中rootid 代表该物联网推送平台的ID。

(2)以rootid/msg/clientid/开头作为客户端发布话题的方式。 msg 表示是可用于其余客户端订阅的状态信息。Clientid 代表发布该消息的客户端ID。

(3)各个客户端订阅话题时,不能订阅rootid/sys/下方的话题。

4.3 ACL 访问权限设计

基于MQTT 协议的订阅/发布模型,使得消息发送方和消息接收方在时间、空间最大程度上实现了解耦。但这同样意味着消息的发布者所传输的信息可能被非法消息接收者进行窃取, 合法消息接收者同样可能接受非法消息发布者所传输的信息, 这对于整个物联网推送系统来讲是必须重视的问题[1]。每当客户端向MQTT 服务器发布或订阅某个话题时, 服务端都需要对当前用户进行ACL权限检查。

Mosca 是一个Node.Js 版本的MQTT 代理, 下面使用Mosca 消息中间件并以订阅话题时候权限检查代码为例进行说明:

4.4 数据存储模块的设计

数据存储模块是物联网推送系统中数据处理的核心模块。 数据存储模块不仅需要数据库具有快速读写的能力,还需要面对未来物联网环境下高并发问题。面对以上问题可以采用分布式缓存与常规数据库结合的方式进行处理。 针对物联网环境下高并发、海量数据存储、复杂的设备关系等使用场景选用Redis 作为缓存数据库试用,选择传统关系型数据库Mysql 作为常规数据库进行设计。 综上所述,本数据存储模块是以Redis 结合Mysql 来存储处理数据,图4 以读取数据为例进行程序流程说明。

图4 数据库读取数据流程图

5 系统实际应用

“叉车可靠性强化试验远程监控平台”是作者目前正在参与开发的工程机械领域物联网实时监控平台。 该平台的整体框架如图5 所示。

图5 平台整体框架图

叉车的车载终端通过传感器采集叉车可靠性强化试验过程中的状态数据, 通过MQTT 网关将数据以话题为载体发送给物联网消息推送平台。 物联网消息推送平台会将接收到的数据推送给订阅了该话题的浏览器端。 可以通过订阅该话题的形式对叉车可靠性强化试验中的数据进行实时显示与处理。 叉车可靠性强化试验远程监控平台的实时监控画面如图6 所示。

图6 实时监控效果图

6 结语

本文理论结合实际,详细阐述了物联网云平台推送系统的整体结构、搭建原理和关键模块的设计方案,并且结合在叉车可靠性强化试验远程监控系统中的使用案例分析,验证了MQTT 作为一种轻量型消息发布/订阅模型给物联网推送领域带来了极大的便利性与可靠性。 同时也为工程机械行业走向物联网智能化、 自动化提出一些可行的参考。

猜你喜欢
叉车客户端消息
永恒力叉车(上海)有限公司
永恒力叉车(上海)有限公
永恒力叉车(上海)有限公司
一张图看5G消息
如何看待传统媒体新闻客户端的“断舍离”?
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
小贴士
消息