时间:2024-05-04
劳建成,蒋迁谦
(广东工业大学 自动化学院,广东 广州 510006)
基于PHP和Java的消息中间件的实现原理研究
劳建成,蒋迁谦
(广东工业大学 自动化学院,广东 广州 510006)
随着物联网的快速发展,各个平台支撑的设备数量也在急剧扩展,平台也变得越来越复杂。当需要在平台上增加新设备时,需要在原有程序的基础上添加大量的代码程序,这样不仅大大增加了新程序的开发成本,同时增加了原有程序的维护成本。文章提出了一种基于PHP和Java的消息中间件的实现原理,可以完成消息转发的流程,使得在开发新设备的服务器端程序时,减少对原有设备的服务器端程序的修改。
消息中间件;PHP;Java
由于互联网带宽和物联网设备的快速发展,各种设备接入互联网的需求不断增长,需要编写各种特定的程序和服务器去接收和处理设备发送过来的消息。而典型的物联网设备的控制框架如图1所示。
此时,对于服务器来说,一个极为重要的功能就是客户端和物联网终端设备消息的接收和处理。为了针对各种异构网络的消息发送和接收,人们将这个重要的功能抽象出来,形成了一种特有的软件,这就是消息中间件。
如图2所示,消息中间件在TCP/IP 4层网络体系结构中处于应用层的位置,建立在各种网络应用程序之下,为网络应用程序提供基础的消息传输服务。
图1 物联网设备控制框架
图2 消息中间件在TCP/IP协议族网络体系结构中位置
超文本传输协议(HTTP)是应用层通信协议之一,日常使用最普遍的浏览器—服务器(B/S)框架就是基于HTTP协议开发的。在客户端—服务器—物联网设备终端的框架中主要用于客户端—服务器之间的通信。在客户端—服务器框架中,为了面向浏览器进行快速开发,通常使用PHP编程语言进行开发。
但由于HTTP协议是一种请求—响应类型的无状态的协议。而在服务器—物联网设备终端的通信中,需要实现的是双向对等通信。并且服务器需要保存终端的消息,以便识别特定的终端。因此,需要对传输层的TCP协议重新封装,设计新的应用层协议。
同时,由于终端的数量众多,当服务器需要同时向多个终端发送消息时,通常需要使用多线程来解决。PHP编程语言并未在其核心语言级别支持多线程的实现,而Java则在语言级别实现多线程,可以很轻易地进行多线程编程。
综上,结合PHP与HTTP的优点,使用HTTP协议和PHP编程实现用户和服务器之间的交互,而对于终端和服务器的交互则使用基于TCP重新封装的应用层协议和Java编程实现。对于PHP和Java之间的消息传递,通过本文提出的消息中间件的原理来实现。
对于消息中间件来说,主要是解决的是使用消息中间件双方的通信问题,而消息的封装形式则是通信的首要问题。良好的封装形式意味着更低的数据冗余率,并且在编程过程中具有很好的排错性。本方案中对于一般的消息采用JSON格式来进行封装。
本方案采用Java中的Socket API为服务器与终端间通信编程。Socket API是Java对传输层的传输控制协议TCP和用户数据包协议UDP进行了封装后提供的应用程序接口。
在PHP端,需要设计一个函数以便让PHP的服务器端程序调用该函数来使用消息中间件。同时,在Java客户端同样需要设计一个消息中间件类,以便使用消息中间件来发送和接收消息。
对于PHP的消息中间件,分为两个函数:消息接收函数和消息发送函数。其中,对于接收消息函数,需要作为守护进程在系统中随着HTTP服务器启动,而发送函数则在需要发送消息时调用即可。
消息中间件的总体架构和工作流程如图3所示。
互联网与物联网的快速发展对消息中间件的要求也越来越高,也诞生了许多适应不同业务场景的消息中间件,比如Redis和RocketMQ等。本文提出的中间件是一种轻量级的简易中间件,但性能方面与许多开源的消息中间件还有很大的差距,希望能给软件开发者带来一点启发。
图3 消息中间件的总体架构和工作流程
[1]陈明,潘家铭,阎保平.消息中间件的设计与实现[J].微电子学与计算机,2005(4):4-7.
[2]甄甫,刘民,董明宇.基于面向服务架构消息中间件的业务流程系统集成方法研究[J].计算机集成制造系统,2009(5):968-972.
[3]徐晶,许炜.消息中间件综述[J].计算机工程,2005(6):73-76.
[4]WANG C, WANG Z, XING H.Design of Message-oriented Middleware With Publish/Subscribe Model on Telemetry and Command Computer[C].The Second International Conference on Systems and Informatics, 2014:454-458.
[5]JOSEPH K H, YIHUAN W, XIN P.The Design and Implementation of EMP:A Message-Oriented Middleware for Mobile Cloud Computing[C]. 2013 IEEE Global High Tech Congress on Electronics, 2013:78-81.
Research on the principle of message-oriented middleware based on PHP and Java
Lao Jiancheng, Jiang Qianqian
(Automation School of Guangdong University of Technology, Guangzhou 510006, China)
With the rapid development of Internet of things, the amount of devices supported by every platform is expanding sharply and platforms are becoming more and more complex.When you need to add new devices on the platform, you need to add a great amount of code procedures on original code, which increase not only the development costs of new procedure, but also the maintenance costs of original ones. This paper present the realization principle of a new kind middleware of message based on PHP and Java. This message-oriented middleware can achieve the purpose of message forwarding flow, which means that we can reduce the modification of original device server-side program when developing the server-side program for the new device.
message-oriented middleware; PHP; Java
中国移动研发基金资助项目;项目编号:6120340。
劳建成(1991— ),男,广东湛江,硕士研究生;研究方向:物联网,智能云服务系统。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!