消息中间件在船载监控系统中的应用研究
2011-01-10李丹,刘惠,关一
李 丹,刘 惠,关 一
(国家海洋技术中心,天津 300112)
消息中间件在船载监控系统中的应用研究
李 丹,刘 惠,关 一
(国家海洋技术中心,天津 300112)
消息中间件技术是近几年来比较热门的技术。采用面向服务体系的架构与消息中间件相结合的技术,在船载监控系统中设计一种标准的集成框架结构,使用异步消息传送机制,保证消息可靠同步的同时,降低分布式系统各部分之间的耦合度,提高船载监控系统集成的可扩展性及系统展示的多样性。
消息中间件;面向服务体系的架构;监控系统;企业服务总线
近几年来,海洋灾害频发,沿海污染造成的生态环境破坏越来越严重,使得我国越来越重视海洋监测系统的建设。“九五”期间的海洋监测高技术研究,已取得了一批成果,研制了一批海洋监测关键仪器设备。在船舶这样的特殊环境中,工作人员是有限的,所以需要船载监控集成系统将各类设备集成到一起,更好地进行监测管理。在监控设备多的情况下如何很好地将监控信息展示出来是集成系统需要考虑的问题。而且对于不同的人员,他们的关注点也是不同的,所以需要根据他们关注的不同,显示不同的信息 ,也就是说要有多种界面显示形式,多种界面在显示时信息必须同步。随着信息化的不断深入,现在的船舶配有船务管理系统,视频监控系统等等各种应用系统,如何将各种孤立的系统有机地结合起来,并能够方便地提供不同需求的应用显示界面,以实现工作效率的最大化,也是现在船载集成系统所要解决的技术难点。
本文在船载集成系统中引入基于SOA的架构和服务总线的技术——意在设计一种标准框架,将船舶上的各类仪器设备和船务管理系统、视频监控系统等各类系统通过服务总线方式良好地集成于船载集成系统平台,以便能够提供多样化的表现形式,大大提高船载系统的集成效率。
1 相关技术
1.1 面向服务的体系结构(SOA)
面向服务的体系结构 (Service-Oriented Architecture,SOA)是一种系统框架,最早是由Gartner公司在1996年为了实现每个IT系统各自的自由发展空间且又能随需共享而提出的。Service-architecture.com将SOA定义为:“本质上是服务的集合。服务间彼此通信,这种通信可能是简单的数据传送,也可能是两个或更多的服务协调进行某些活动。服务间需要某些方法进行连接。所谓服务就是精确定义、封装完善、独立于其他服务所处环境和状态的函数。”
1.2 企业服务总线(ESB)
企业服务总线(Enterprise Service Bus,ESB)的概念是从SOA发展而来的一种新型系统集成模式。企业服务总线本质上是一种可以提供可靠的、有保证的消息服务的中间件技术。ESB中间件产品利用的是Web服务标准和消息中间件协议接口,例如:IBM的 WebSphere MQ,Tibco的Rendezvous和Sonic Software的SoniCMQ等。ESB产品的共有特性包括:连接异构的信息系统、利用Web服务描述语言接口封装消息中间件协议,以及在消息中间件传输层上传送简单对象应用协议(SOAP)传输流的能力。
1.3 消息中间件(MOM)
消息中间件(Message Oriented Middleware,MOM)利用高效可靠的消息传递机制进行平台无关的数据交流,并基于消息数据通信来实现分布式系统集成。
消息中间件适用于需要高可靠的数据传送的分布式环境。采用消息中间件后,系统中不同对象之间可以通过传递消息来激活对方的事件,完成相应的操作,它能够在不同平台之间进行通信,常被用来屏蔽掉各种平台及协议之间的特殊性,实现应用程序之间的协同。因此,其优点在于能够在客户和服务器之间提供同步和异步的连接,并且在任何时刻都可以将消息进行传送或者存储转发,远远优越于过程调用。
2 异步消息服务总线(AMTSB)设计
本文在船载集成系统设计中采用了服务总线技术,采用异步消息传送机制,通过总线路由发布服务组件、响应服务请求、调用响应服务等功能实现,使船载集成系统具有很好的伸缩性。采用服务总线的架构设计系统时,将船载集成系统的基础功能模块所提供的功能封装成服务,发布到服务总线上,集成系统在需要某个服务时,发送服务请求消息到服务总线,服务总线根据消息中的服务描述信息找到相应服务,并执行服务处理,处理完成后将结果再发送到总线,集成系统在从总线上取出结果。
2.1 AMTSB体系结构
图1AMTSB体系结构图
图1为AMTSB中的主要功能模块,实际上每个功能模块又包含多个子模块,下面将介绍主要功能模块的设计。
2.1.1 总线服务器
总线服务器负责接收服务请求,返回服务响应;保证服务消息传输和服务适配,实现各类异构应用之间的互操作。总线上包含消息和消息处理函数的接口、消息处理的基类,还有发布订阅、询问应答、延迟消息处理等方法。
2.1.2 分配器
分配器是均衡负载、提高系统工作效率的关键。起到了队列管理器的作用。它包括两个队列,一个是消息队列,用来存放消息;一个是处理队列,用来存放处理消息函数的地址。
分配器的工作过程是当有消息通过传输管理器的封装后到达总线上,监听器监听到总线上收到消息后触发分配器,分配器查找是否有可以工作的节点,如果有再通过传输管理器进行后续过程;如果没有可用节点则等待一段时间后继续查找。
2.1.3 传输管理器
在消息的传输过程中任何的操作都需要有一个线程去执行操作。传输管理器可以设置用于工作的线程数量,在工作过程中可以改变线程数量。然而传输管理器最主要的功能是发送和接收消息。在传输管理器中消息的发送和接收是通过消息队列实现的。本文使用微软消息队列 (Microsoft Message Queue,MSMQ)来实现队列的创建与删除,消息的发送与接收。之所以选用MSMQ,是因为它是微软公司的主流通讯技术之一。MSMQ采用异步传输模式,允许通信的双方在离线的状态下进行通信,它提供了一整套易于使用的API,并且已经集成到.NET框架中,Windows 2000及以上的操作系统都可以方便地使用它。在AMTSB的框架中,支持异步通信是非常重要的一点,因为在系统的运行过程中,并不能保证通信的另一端处于可用的状态。
消息的接收是从接收队列中取出可用的第一条消息,消息成功取出后触发消息接收事件,这是一个消息接收的完整过程。在这个过程中如果有任何意想不到的错误,传输管理器会根据设置好的最大重传次数重复进行上述操作,当到达最大重传次数而还没执行完上述过程时,将从接收队列中取得的消息发送到失败队列中。
2.1.4 发布订阅管理器
本文讨论的发布订阅管理器是基于消息类型的发布订阅管理器,在这种模式下,当发布订阅管理器收到一个消息时,不对消息的内容进行解析,只关注消息的对象类型,然后根据订阅者订阅的消息对象类型把对应的消息发送到订阅者那里。
发布订阅管理器的实现需要一个记录订阅信息的记录表,只有获得订阅信息表,发布订阅管理器才知道某个消息类型的所有订阅者。所以订阅信息记录表是最为重要的。由于本文采用的是消息队列的形式,所以所有的订阅消息都发送到一个专门用来存放订阅信息的队列中。通过SubMsgRegisterRecord类实现了订阅消息存储队列的创建,并且实现了订阅消息的入队列和出队列,提供功能接口给上层类。PubSubManage类通过API调用SubMsgRegisterRecord类的方法实现了获取订阅信息表,消息的订阅和退订。
2.1.5 日志管理
日志管理是指AMTSB系统在运行时,它将具体传送的消息数据信息,系统的运行步骤和报警、错误等信息到记录到日志中。
2.1.6 安全管理
安全管理是现代网络系统的不可缺少的组成部分,特别是消息中间件,安全管理更是其中重要的功能。AMTSB的安全管理包括用户数据的加密/解密、用户的身份认证等。
2.1.7 配置管理
AMTSB使用了 Spring.Net,使用控制反转(IoC,Inversion of Control),把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。AMTSB中使用依赖注入的方式来实现IoC。依赖注入意味着一个对象的依赖关系可以通过外部“注入”不需要为对象查找任何内容——它只是简单地为依赖关系声明了私有字段,允许它们能够被外部提供,提供的方式可以是构造函数或者通过属性的设置器(Setter)。
2.2 AMTSB消息交互机制
2.2.1 发布/订阅
在发布/订阅模式中,使用MSMQ把订阅信息表存储在一个消息队列中。消息的发布者不需要知道谁在接受消息,他们之间只是共享抽象的服务定义而不是具体的端点信息,所以两者之间是松耦合的,当发布者发送消息时,所有订阅该消息的订阅者都会收到消息,发生相应的变化。
2.2.2 询问-应答
在询问-应答模式中,服务消费者发出服务请求,服务提供者监听到服务请求后,查找是否有匹配的服务,如果有则返回响应消息。AMTSB中设计的询问-应答模式使用单向消息通道,即只传递服务请求或服务响应消息。询问-应答模式的机制是通过队列,按照先进先出的原则实现的。
AMTSB中最主要的是采用了服务消息的异步代理调用机制,它的实现原理如下:服务的使用者有两个线程,一个线程用来发送请求,另一个线程用来接收响应。这样做的好处是使用者不必阻塞线程以等待响应,而且可以同时执行其他工作。因此,使用者对花多长时间执行服务不太敏感。在ATMSB中使用消息队列来发送请求和接收响应。这一对消息队列担当使用者用来调用服务的单个地址。其具体工作步骤如下:
(1)使用者发送服务请求到请求队列。释放发送请求的线程,使用者可以执行其他工作。
(2)每个服务提供者都可以看到请求队列中的使用者,分配器确定哪一个服务提供者能够接收消息,并确保只有一个服务提供者接收消息。
(3)获胜的服务提供者从请求队列中接收消息。
(4)服务提供者执行服务。
(5)服务提供者发送服务响应到应答队列中。释放服务提供者线程,服务提供者可以执行其他的工作(例如等待另一个请求)。
(6)使用者的侦听器线程接收包含服务响应的消息。
2.3 AMTSB功能及特点
AMTSB采用异步消息机制,一个应用通过AMTSB向其他应用发出一个请求,请求的应用程序不必正在运行或是可到达的,无论何时,只要请求的应用程序再次可达,就会收到请求。在可恢复模式中,如果在文件传输的过程中由于某种原因产生的网络故障使传输中断,那么故障排除后AMTSB可以根据可靠队列中保存的信息对文件失败点进行重传。对传输的消息使用优先级管理,满足不同需求的消息的各种传输要求。具有超时管理的功能,避免资源浪费。
AMTSB使服务功能和数据表现相分离,这样做有多个显著的优势:
(1)各个服务功能之间耦合度低、可扩展性强。当有新的设备需要集成到系统时,只要在AMTSB中增加一个服务,就可以接入系统,而不影响其他的功能。
(2)多样性个性化展示。在表现层上可以有多种形式展现,如:Web形式,Form形式,或是把同一个信息以不同的形式展现等等。
(3)界面可定制性,开发人员可根据用户需求开发具有个性的界面。
(4)具有通用性,可以很简单的移植到其他船只上。减少因为重复开发系统带来的时间和金钱的浪费,同时也提高了工作效率。
(5)用户功能需求管理模式。实现为不同的用户提供其关注的功能服务。例如:船员登录该系统时就可以查看航行的一些信息而科考人员可以查看仪器设备状态。
(6)充分利用船载网络资源实现分布式数据采集与处理功能。
(7)有利于促进仪器设备数据采集接口规范的形成,实现即插即用能力。
总之,采用异步消息传输服务总线的架构开发的船载集成系统降低了各组件之间的耦合度,提高了复用率,更主要的是能够有多种不同的表现形式。
3 实际应用
本文实现了在“向阳红08”上的船载海洋生态环境现场数据采集监测系统中应用服务总线的体系架构,通过异步消息服务总线(AMTSB)将表现层与业务层无缝集成,实现一个应用服务系统多种表现形式。例如:对于总协调人看到的是所有设备的监控界面;对于各科研设备的操作员看到的是针对某台设备的专项监控;而对于船长他们只是关心船舶航行的GPS、电罗经等等设备的数据;对一般人员只是通过WEB的方式登录到系统浏览信息、下载数据。因此面对不同的使用用户,系统通过AMTSB架构方式,将已封装的不同的服务,展示给不同的用户,大大提高了船载监控系统集成的可扩展性及系统展示的多样性。如图2所示。
图2 船载集成系统体系架构
3.1 系统开发平台
在系统平台上,本系统采用Windows server 2003作为底层操作系统,SQL Server 2005数据库作为信息存储数据库,系统编程环境采用Microsoft Visual Studio 2005。
3.2 系统设计
船载监控系统的主要功能是根据航次任务的总体目标,编制待测站位信息,对任务和站位进行管理;监视GPS、电罗经、船用气象仪、姿态仪、航程计等通用仪器设备的运行状态;当船舶到达待测站位后,向各类科研仪器发出工作指令,监视各类科研设备的运行状态并将测量数据录入数据库;提供测量数据的查询下载和设备告警信息的查询下载功能,以此实现资源共享。
船载集成系统整体架构如图3所示,在传统的三层架构中增加了消息总线层。
异步消息服务总线(AMTSB)是整个系统架构中最为重要的部分,它降低了业务处理层与数据展示层的耦合度,使表现形式灵活多样。AMTSB也可以起到负载均衡的作用。表现层的频繁数据交互不是直接与应用服务器进行,而是通过AMTSB在应用服务器空闲时对其进行访问,表现层再通过AMTSB获得数据,避免因大批量并发操作导致的系统崩溃,从而保证应用服务器正常工作。
3.3 业务用例
图3 船载集成系统系统架构图
图4 配置设备流程
下面以某个串口打开操作为例说明异步消息总线在船载集成系统中的对消息的处理流程。如图4所示,用户在Web配置界面中,点击打开分析仪串口,这时相关信息被封装成请求消息(Request)发送到AMTSB,AMTSB经过解析找到处理该消息的应用服务器,应用服务器首先查找设备配置缓存,如果该设备串口没有被打开,则调用串口驱动层接口,并将当前串口操作的结果信息同步配置应用服务器缓存。Web配置界面再从AMTSB获得串口打开结果消息(Response)。在集成系统的其他监控模式中,定时向AMTSB发送读取设备状态请求消息 (Request),AMTSB查询设备状态缓存获取设备状态信息,监控界面再从AMTSB中取出设备状态信息(Response),同步更新显示。通过以上消息流向的展示、消息处理流程说明,证实AMTSB架构体系引入船载监控平台可以真正实现业务处理层与数据展示层的隔离,便于实现多种监控界面表现形式,易于设备扩展与业务需求的扩充,利于研发团队同步开发。
4 总结
异步消息服务总线很好地把监控系统中的各类系统和科研设备连接起来,对采集到的数据做统一的分析处理,有效地降低了系统在各部分之间的耦合度,使系统具有良好的灵活性、开放性,能够有效地减少系统异构和需求变化带来的影响。为船载监控系统集成的可扩展性及系统展示的多样性提供了坚实的技术手段。
[1]龙丽萍.ESB_SOA架构在企业应用集成中的研究和应用[D].长沙:中南大学,2009.
[2]杜万雅.基于ESB的SOA框架的设计与实现[D].北京:北京交通大学,2008.
[3]James Snell使用企业服务总线简化集成体系结构[OL].2005[2005-11-01].http://www.ibm.com/developerworks/cn/webservices/ws-esbia/.
[4]周泽华,黄涛,李京.消息中间件管理器的设计和实现[J].计算机研究与发展,2002,39(3):318-323.
[5]Bunge R.An Operational Framework for Service Oriented Architecture Network Security[J].Hawaii International Conference on System Sciences,2008(1):312.
Application of Message Oriented Middleware in Ship Monitoring System
LI Dan,LIU Hui,GUAN Yi
(National Ocean Technology Center,Tianjin 300112,China)
In recent years,message oriented middleware (MOM)becomes more and more popular.The service oriented architecture(SOA)combined with MOM architecture is applied in ship monitoring system to design a standard integrated architecture.The asynchronous message is used to assure the reliability and reduce the coupling between components of the distributed system.At the same time,ship monitoring system could improve its integrated expansibility and diversity of display.
message oriented middleware;Service-Oriented Architecture;monitoring system;Enterprise Service Bus
P71,TP311
B
1003-2029(2011)02-0113-05
2011-04-15
国家高技术研究发展计划(863计划)资助项目(2007AA092101)