APP下载

基于MQTT协议的物联网服务器设计与架构分析

2020-06-21万洪莉李雨晨

软件工程 2020年6期
关键词:服务器

万洪莉 李雨晨

摘  要:基于MQTT协议,进行物联网工程项目服务器端的架构和开发,并针对服务器应用架构进行性能分析。采用MVC设计模式进行服务器端架构设计,采用JSP技术进行开发。服务器和硬件、移动端的通信协议采用MQTT协议,搭建Apollo服务器实现对该协议的支持。经分析,可提高物联网服务器与感知层、应用层的通信性能。

关键词:物联网通信协议;服务器;MQTT

Abstract: Based on MQTT (Message Queuing Telemetry Transport) protocol, the study conducts architecture construction and development of the Internet of Things (IoT) project server, and carries out performance analysis of the server application architecture. Model-View-Controller (MVC) mode is used to design the server architecture, and JSP technology is used to develop the server. MQTT is adopted as the communication protocol among the server, hardware and mobile terminal, and Apollo server is built to support the protocol. The analysis proves that the proposed method effectively improves the IoT server communication performance at perception layer and application layer.

Keywords: IoT communication protocol; server; MQTT

1   引言(Introduction)

1.1   现有物联网项目架构

HTTP是Web服务器开发中广泛使用的协议。但当研究物联网服务器的系统架构时,响应时间,吞吐量,更低的电池和带宽使用率成为衡量系统的主要性能指标,MQTT协议在这类问题的解决中更具优势[1-3]。在文献[4]中,基于物联网体系架构,以智能超市为业务背景,建设了物联网实训教学体系。服务器架构基于HTTP协议,采用硬件感知端、服务器端、移动端和数据流、控制流的“三端两流”架构。如图1所示。

在图1所示的架构中,数据流由硬件感知端起始。硬件感知端将采集的数据发送至服务器端,移动端通过轮询从服务器端获得数据流,刷新UI界面进行远程监测。架构的控制指令流由移动端起始。移动端发起控制指令,服务器端修改指令的相应数据库字段。硬件感知端发起轮询操作,查询服务器端控制指令的相应状态,根据控制指令控制执行部件的动作。

物联网的感知层研究与设计也依赖于项目所采用的物联网应用系统的典型模型。面向软件测试的物联网节点模拟单元开发[5]所做工作主要集中在节点单元的开发和测试,物联网服务器端与感知层、应用层的通信协议也采用HTTP协议。

在项目架构的应用中,存在请求响应较慢、电池消耗高的情况。采用传统的基于HTTP的服务器作为物联网项目的服务平台的应用场景越来越少。

1.2   实际应用领域的物联网服务器

目前在实际应用中已普遍采用物联网服务平台进行实际项目开发。例如百度“天工”智能物联网平台[6]、阿里云Link物联网平台[7]、QQ物联智能硬件开放平台”[8]、中国移动物联网设备云—OneNET[9]等。

產业级的物联网服务器平台不再局限于传统Web服务器的HTTP协议,而是支持HTTP、CoAP、MQTT等多种协议适配,为城市消防、畜牧业、共享经济、环境监控等多场景提供解决方案。

2  基于MQTT协议的物联网服务器架构(IoT server architecture based on MQTT protocol)

2.1   HTTP和MQTT在物联网服务器通信中的对比

基于HTTP协议的物联网项目架构已经滞后于实际应用开发的技术发展。瓶颈在于服务器的HTTP通信协议。HTTP协议作为一种无状态通信协议,适于开发Web应用程序,进行业务逻辑处理和门户展示。在物联网项目体系架构中,服务器还兼具感知层和应用层的通信接口功能。感知层数据上传需求频繁,一般的家用智能系统以秒为单位产生感知数据的上传需求。应用层由用户通过移动端发送控制指令至服务器,而基于HTTP协议的服务器架构不具备主动推送功能,不能将控制指令状态推送给感知层的执行器件。在基于HTTP协议的服务器架构中,感知层的执行器件需要向服务器发起轮询操作,获知指令状态,从而产生相应动作。这种轮询操作造成了数据流的冗余,占用大量的系统资源。

为解决此类问题,需要在物联网服务器平台中引入“发布/订阅”机制的协议规范。MQTT协议作为消息队列遥测传输协议,是一个基于TCP/IP协议的发布/订阅协议。设计的初始目的是为了极有限的内存设备和网络带宽很低的网络中进行通信,非常适合物联网通信[10-13]。

2.2   基于MQTT协议的物联网服务器架构设计

MQTT协议是广泛应用的物联网协议,使用该协议需要MQTT消息代理及服务。有两种方法使用MQTT服务,一是租用现成的MQTT服务器,使用公用的MQTT服务器的好处是功能全面,易用性高。但需要注册账号,灵活性差,有些平台还需要付费。另一方法是自己使用开源的MQTT组件来搭建。图2以物联网工程项目中温度数据在服务端、感知端、移动端的数据流向为例,设计了基于MQTT的物联网服务器架构的物联网项目体系。

在圖2的物联网服务器系统架构中,Web服务器、感知端和移动端都作为Client,在MQTT消息代理上注册并连接。针对系统中的温度信息,三个Client都订阅名为“temperature”的topic。感知端发布消息,内容为温度数据,Web服务器订阅“temperature”,消息代理则会把温度消息推送给Web服务器,Web服务器发布温度消息,消息代理将其推送给订阅了该主题的客户端(移动端)。整个架构采用发布/订阅机制,数据帧格式即主题格式(topic),比HTTP协议的请求头短很多,通信效率高,在系统中没有数据更新,没有数据流发生时,各个客户端通过消息代理维持心跳连接即可。

本案例采用apollo的MQTT消息代理,将Web服务器、移动端、硬件端都注册为apollo MQTT消息代理上的客户端,实现发布/订阅功能。下面主要阐述将传统的基于HTTP的Web服务器包装成MQTT Client,从而将其角色转换为兼容MQTT协议的服务器的架构过程。

2.3   基于MQTT协议的物联网服务器开发

2.3.1   物联网服务器的消息发布功能

物联网服务器的消息发布功能接收移动端的控制指令,并以发布者的角色,通过apollo MQTT消息代理,推送给硬件执行器所在的MQTT客户端,过程如图3所示。

由于服务器兼具传统的HTTP服务器的业务逻辑功能和MQTT的消息发布订阅功能,因此,可选取HTTP Web组件监听移动端发送的控制指令。在本课题中,选用Servlet监听器实现对移动端控制指令的监听功能。

本文所讨论的HTTP服务器功能基于JSP模型二设计模式开发,由中央控制器对所有View层发出的请求进行处理,所有View层发出的请求以“.action”做结尾标识。因此,本文所设计的监听器主要监听中央控制器的“change.action”请求。一旦监听到“change.action”请求,说明移动端发出了控制指令,监听器将监听到的控制指令包装为名为“instructions”的主题(topic),主题内容即为控制指令内容。并将该topic通过apollo MQTT消息代理推送给订阅了该主题的硬件执行器件,从而实现对硬件执行器件的主动推送控制功能。

2.3.2   物联网服务器的消息订阅功能

物联网服务器的消息订阅功能接收硬件感知层上传的感知数据,调用MVC模型中的业务逻辑层,完成感知层数据的持久存储。过程与图3的发布功能类似,图中的控制流变为数据流。

消息订阅功能和HTTP服务器接口的数据上传功能数据流向一样。但基于MQTT协议的数据帧长度很短,可定制格式,适于内存有限的感知层硬件处理器,也适于数据流频繁、带宽有限的物联网环境。

3   功耗分析(Power analysis)

3.1   无线网络初始化期间功耗对比

物联网服务器主要起到对数据流的持久存储和UI展示,对控制流的接收接口和对感知层执行器件的指令发送功能。因此,基于MQTT协议的物联网服务器不再基于HTTP协议,采用请求/响应模式提供这两大服务。通过MQTT协议架构的物联网服务器与移动端、感知层建立了常连接,可基于MQTT的心跳响应维持三者在消息代理上的连接状态。数据流和控制流的传输都基于发布/订阅机制。在与服务器建立初始化连接期间,HTTPS协议比MQTT协议的电池消耗略少,如表1所示。

3.2   无线网络保持连接期间通信功耗对比

物联网工程项目通信过程过程中,电池消耗指标在保持连接中更具衡量代表性。保持连接所需要的电源消耗对比如表2所示。

通过对电池消耗表的分析,可以看出,HTTPS和MQTT通信方式在电源消耗上,随着保持连接时长的增加,在4G和WiFi联网的情况下,都会大幅减少,但总体来说,MQTT比HTTPS通信方式电源消耗减少50%左右。

4   结论(Conclusion)

通过分析目前物联网工程架构下通信协议的应用现状,以物联网服务器与感知层和应用层的通信协议为入手点,架构并开发了一个基于MQTT的物联网服务器。通过分析,采用MQTT协议的物联网服务器在与物联网感知层和应用层的通信过程中,在网络初始化之后的连接保持期间,功耗有显著下降。

参考文献(References)

[1] Vishal Kumar, Gayatri Sakya, Chandra Shankar. WSN and IoT based smart city model using the MQTT protocol[J]. Journal of Discrete Mathematical Sciences and Cryptography, 2019, 22(8): 1423-1434.

[2] Jameel Ahamed, Md. Zahid, Mohd Omar, et al. AES and MQTT based security system in the internet of things[J]. Journal of Discrete Mathematical Sciences and Cryptography, 2019, 22(8): 1589-1598.

[3] Arlen Nipper. MQTT's role as an IoT message transport[J]. Control engineering: Covering control, instrumentation, and automation systems worldwide, 2019, 66(1): 20-21.

[4] 顾兆旭,焦战,崔鹏.基于物联网的智能超市实训室建设方案初探[J].软件工程,2018,21(12):60-62.

[5] 李晓明,Thierno Gueye.面向软件测试的物联网节点模拟单元开发[J].软件工程,2019,22(7):1-5.

[6] 百度.天工-智能物联网[EB/OL].https://cloud.baidu.com/solution/iot/index.html.2019

[7] 阿里.阿里云Link平台正式发布[EB/OL].http://www.kmykt.com/hy_new/644.html,2017.

[8] 腾讯.QQ物联智能硬件开放平台[EB/OL].https://iot.open.qq.com,2014.

[9] 中国移动.OneNet物联网开放平台[EB/OL].https://open.iot.10086.cn,2019.

[10] 侯敏,刘倩,杨华勇,等.基于MQTT协议的海洋观测数据推送系统[J].计算机工程与应用,2019,55(20):227-231.

[11] 郭力,胡伟,张政成.试析MQTT协议在物联网中的应用[J].电脑知识与技术,2019,15(28):31-32;37.

[12] 蒋树庆,房滢.一种基于MQTT协议的数据采集控制系统[J].信息通信,2019(8):80-82.

[13] 耿锡涛.基于MQTT协议的电力设备温度在线监测系统应用研究[J].工业控制计算机,2019,32(10):73-74.

作者简介:

万洪莉(1978-),女,硕士,副教授.研究领域:物联网工程,Web应用开发.

李雨晨(1979-),男,硕士,工程师.研究领域:控制理论与控制工程,电气工程.

猜你喜欢

服务器
通信控制服务器(CCS)维护终端的设计与实现
PowerTCP Server Tool
中国服务器市场份额出炉
得形忘意的服务器标准
网络环境
配置连接服务器
计算机网络安全服务器入侵与防御
服务器操作系统可信加固技术研究
如何应对虚拟服务器的安全性及合规性挑战
关于Linux的视频服务器开发与实现分析