【摘要】随着大数据及物联网(IoT)技术的应用以及普及,社会各领域对物联网技术的需求也越来越高。传统的物联网技术不能进行大数据下的机器学习,而且需要比较高的二次开发成本;在这样的背景下,面向大数据物联网的中间件技术就日益重要。
【关键词】消息中间件;MQ;大数据;物联网
1. 前言
物联网指的是借助射频技术连接多个智能终端,并对它们进行识别和管理。物联网的主要特征包括:(1)感知能力强。可以借助射频技术(RFID)及内置在智能设备上的传感器,对物体进行感知,并且这种感知可以认为是随时随地的。(2)共享的广泛性。通过通信网及互联网实现随时、随地的信息共享。(3)数据的智能处理。物联网采集到海量数据后,可以借助云计算、大数据技术进行智能处理。
在物联网技術应用到各行各业时,有些共性的问题需要解决:(1)优先级问题。在多个业务、产品同时需要发送或接收消息的时候,为了解决不同业务的优先级问题并提高报文的传输效率,需要为不同业务、产品设置优先级;这样高优先级的消息就可以在最短时间内优先得到收发,低优先级的则可以稍微延后处理。(2)可靠的消息传输。很多领域的传输内容是非常关键的、不允许丢失的,为了保证数据包能够可靠、不重复的到达接收端,就需要保证数据传输的冗余性和可靠性,即使出现网络中断等异常情况,也可以保证数据的可靠到达。
中间件在操作系统和应用软件之间,它以自己实现的复杂性保证企业应用的简单化。如果没有中间件,则应用需要直接和操作系统、网络通信协议以及数据库等直接交互,需要考虑系统的多样性、网络通信协议的复杂性等各种因素。中间件屏蔽了底层的这些差异,并且为开发者提供公共的接口,简化了程序设计。
物联网领域可以借助中间件技术将各种智能硬件设备连接起来,并整合到云端,真正实现云环境与智能终端的端、云一体化,从而可以解决海量消息通信的问题。
2. MQ消息中间件
在消息中间件领域,占据商业市场统治地位的是IBM的Websphere MQ,它是一款基于消息队列的中间件,其自身实现保证能够屏蔽底层操作系统平台间的差异,从而实现跨平台、跨网络的消息传输。Websphere MQ包括消息传输系统以及应用程序接口两部分,在应用程序间传送消息时可以实现不同网络协议、不同操作系统以及不同语言的应用之间的消息传送。最重要的是,Websphere MQ的消息传输是高效并且可靠的,消息不会丢失。
MQ消息中间件有如下优点:(1)应用开发对底层透明。在开发应用程序时,只关注业务实现即可,并不需要过多操心业务层以下的通信协议、操作系统细节等,因此程序开发更加简单。(2)系统开发周期短。消息中间件提供了统一的API接口,标准的实现和接口避免了各种适配、测试及整合工作,从而有效缩短开发周期。(3)降低风险和成本。如果不使用中间件,在实现业务应用程序时,就需要考虑可靠性、耦合度等各种性能因素,会提高总的成本;另外,标准的消息中间件能够保证业务系统实现无缝衔接,保证新系统与老系统在过渡期的稳定运行。
IBM的Websphere MQ在实际使用过程中会涉及到一些对象的概念,包括消息、队列管理器、队列、通道等。这些对象都有其特定属性,属性不同会导致对象有不同的特性和工作方式。
队列管理器是MQ中各资源的容器,可以容纳队列、通道等对象。MQ中通信的基本对象是消息,它实际上可以理解成一段数据,能够作为信息载体而被应用程序理解。消息内容分为消息头和消息体两部分,其中消息头是消息的属性描述,指定了消息如何被队列管理器或应用程序处理;消息头可以完全由队列管理器自动生成,应用程序可以覆盖各属性。消息体是应用程序间传输的实际内容,存在形式可以是字符串、xml文件甚至是二进制数据。
消息实际上是存放在队列中的。根据队列的用途,可以将队列分为本地队列、远程队列定义、传输队列等。消息是按照先后顺序存放到队列中的,在消费消息时有两种模式,默认情况下使用先进先出模式,也可以设置为优先级模式,这样会根据消息的优先级从高到低进行消费。通道把两个队列管理器连接起来,保证消息可以从源端的队列管理器发送到目的端的队列管理器,实现两个队列管理器间的点到点通信。
为了方便应用程序编写,Websphere MQ提供了统一的API接口,主要的接口是两个:发送消息(PUT)和接收消息(GET)。使用Websphere MQ完成两个系统间的消息传输的示意图如图1所示:
3. 中间件在大数据物联网领域的应用
将中间件应用到大数据物联网领域时,通常会涉及到三个部分:物联网智能设备采集端、前置端以及服务器端。大量智能设备分布在需要采集数据的区域,并且将采集到的数据实时传送到前置端。前置端和服务器端都会部署MQ服务器,数据被从前置端发送到服务器端。
为便于对前置端以及服务器端的MQ对象进行统一管理,需要制定队列、通道等对象的命名规则。
前置端需要配置远程队列定义、传输队列,服务器端需要配置接收队列。队列的命名规范包括:(1)远程队列定义规范。QR_业务名称_智能终端采集设备编号,举例来说,如果物联网设备采集的是气象数据,则1234号设备使用的远程队列可以命名为QR_QIXIANG_1234。(2)传输队列规范。QX_业务名称_智能终端采集设备编号,例如QX_QIXIANG_1234。(3)接收队列规范。QL_业务名称_智能终端采集设备编号,例如QR_QIXIANG_1234。
通道的命名规范相对简单,CH_业务名称_智能终端采集设备编号即可,例如CH_QIXIANG_1234。
经过这样命名后,不同智能终端采集设备采集到的不同业务数据就可以使用独立的通道进行消息传输,传输到服务器端后也可以保存在各自的队列中,实现业务上的相互隔离,保证了消息的安全性。不同智能终端采集设备采集数据并通过前置端传输到服务器端的示意图如图2所示:
传输物联网消息的过程中,可以设置消息的优先级,以保证高优先级的消息数据具有优先权。Websphere MQ消息的优先级可以设置为0到9中的任意值,0表示优先级最低,9表示优先级最高;这样设置了消息的优先级后,可以对重要业务的报文、时效性要求高的报文设置高优先级,以优先接收它们。
某些业务的消息数据报文可能比较大,受制于网络带宽等资源的限制,这些消息在传输过程中会长时间的占用网络带宽,导致其他消息不能及时传输。为了解决这一问题,就需要在紧急消息到达时,允许中断大消息的传输,从而保证紧急消息的优先传输。基于这样的考虑,Websphere MQ对传输消息的最大大小做了限制,允许传输的最大单条消息为100M。
4. 总结
目前物联网在各行各业得到了广泛的应用,物联网智能终端在传输数据时,要保证消息 的实时性、可靠性以及高效率,消息中间件产品完全可以满足这种要求。消息中间件应用到大数据物联网领域中时,可以设置传输的消息数据的优先级,以保证高优先级的消息优先被处理,并且在保证消息可靠传输的同时效率也比较高,完全符合物联网的应用需求。
参考文献:
[1]王艳.物联网网关异构协议中间件关键技术研究[D].深圳大学,2016.
[2]ShashankShesharSingh,AjayKumar,KuldeepSingh,BhaskarBiswas.C2IM:Communitybasedcontext-awareinfluencemaximizationinsocialnetworks[J].PhysicaA:StatisticalMechanicsanditsApplications,2019,514.
[3]陈宇翔.精通WebSphereMQ[M].安徽:安徽科学技术出版社,2014,9.
[4]杨放春.异构网络中间件与开放式API技术[M].北京:北京邮电大学出版社,2007,3.
作者简介:吴谋硕,湖南湘乡人,硕士,副教授,研究方向:大数据,信息检索,数字媒体。