褚水琴,叶剑超,徐志江
(1.浙江工业大学省通信网应用技术研究重点实验室,浙江杭州310023;2.杭州龙骞科技有限公司,浙江杭州310012)
交通出行是人类最基本的需要之一,然而目前中国城市交通量不断地增长,交通拥挤和堵塞现象日趋严重,正越来越引起社会的普遍关注。交通参与者不能获得实时的交通信息,出行路线的选择具有盲目性,是造成高峰期城市出行难的根本原因。传统的交通信息发布系统一般都是基于请求/应答的点对点的同步通信,不能满足大规模的动态分布式应用环境[1],而订阅/发布通信模式实现了时间、空间和同步关系3个方面的完全解耦合[2],使得它在分布式系统中的应用越来越广泛。通过中间件来进行数据的传输和消息的共享已广泛实施和部署在分布式系统中。例如,文献3就是利用中间件很好地解决了分布式测控系统在网络通信方面的问题。本文通过利用网络通信引擎(Internet Communication Engine,ICE)中间件很好地解决了交通信息发布在分布式系统中缺乏实时性的问题。
ICE是由ZeroC公司推出的中间件产品,是一种面向对象的中间件平台,为构建面向对象的客户-服务器应用提供了工具、API和库支持。ICE应用适合在异种环境中使用,ICE定义了自己的规范语言Slice,用于使对象接口与其实现相分离的基础性抽象机制。ICE的客户和服务器可以用不同的编程语言编写,可以运行在不同的操作系统和机器构架上,并且可以使用多种网络技术进行通信。ICE公开源码,并且无论部署环境如何,这些应用的源码都是可以移植的[4]。ICE核心为分布式应用开发提供了一个完善的客户——服务平台,ICE还提供了一系列服务为现实应用提供ICE核心不能提供的特性。
IceStorm是ICE的一个服务,是一种发布-订阅服务,它能很好的解除客户与服务器的耦合。发布者把事件发给这个服务,然后由IceStorm发给其他多个订阅者。事件按照主题分类,订阅者会指定他们感兴趣的主题。基于ICE中间件的订阅发布模型能使得消息的发布端和订阅端专注于自己的应用,减少订阅管理上的应用开销。该模型主要分为发布端,中间件和订阅者端。基于ICE的订阅发布模型如图1所示。
图1 基于Ice中间件的订阅发布模型
IceGrid是ICE定位服务的一个实现,是ICE面向分布式开发提出的解决方案,利用IceGrid提供的若干基本服务,可以简化复杂的分布式应用和开发部署。例如它可以使应用客户端能够定位他们的服务器。IceGrid会在请求到来的时候将服务器激活,响应客户端的请求。一个IceGrid域由一个注册表和任何数目的节点构成。通过对IceGrid的使用,可以实现对目标服务器的动态定位,解决服务的动态配置问题,提高消息传输的有效性。
Glacier是ICE的防火墙服务,它能使IceStorm穿越防火墙进行消息发布和订阅,不局限于局域网内部。
交通信息发布系统可以从城市交通信息平台的路况数据库中获取路况参数。此外,还可以对获得的路况信息进行分类处理,将处理后的交通信息分为多个类别,比如交通事故信息,最优交通路线信息,停车位信息和最新交通新闻[5]。然后,将简单分类处理过的路况信息进行发布。在IceStorm中,上述各类信息可以分别定义为不同的主题,出行者可以进行对上述主题的订阅,实时接收交通路况中的各类信息。运用ICE中间可用来进行实时交通信息的传输与共享,同时为用户展现一个简单的开发和部署平台。交通信息发布系统的系统结构如图2所示。
图2 交通信息发布系统结构图
基于ICE的交通信息发布系统主要使用ICE中间件的IceStorm服务,同时还使用Glacier服务来解决IceStorm不能穿越防火墙进行消息传输的缺点。这样可以让客户与服务器通过防火墙安全的通信,将IceStorm和IceGrid、Glacier结合设计的交通信息发布系统如图3所示。
图3 ICE服务在交通信息发布系统的应用
交通信息发布系统可以作为图3中的发布端,用户则为各类交通信息的订阅端。将Glacier和IceS-torm服务结合放在同一台计算机上。基于ICE的实时交通系统首先由发布端发布消息主题,即交通信息发布系统发布各类信息主体到IceStorm中形成主题列表。然后,订阅端使用Glacier和IceGrid通过防火墙并定位找到激活ICE服务所在计算机,并根据自身需要订阅的相应的主题信息并将订阅请求发送给ICE服务。IceStorm能够管理订阅者的增加和删除,维护相关主题的信息,同时将发布端发布的相关消息通过防火墙发送给订阅端。它可以解除订阅端和发布端的耦合,还允许每个订阅者制定自己的服务质量参数。
本系统使用C++作为程序开发语言,ICE版本为3.4.2,开发工具为Visual Studio 2010。经过多次编程和调试,初步实现了使用ICE来进行交通信息发布的部分。测试分为一个发布端,一个订阅端,分别部署在不同的局域网的两台计算机上。发布端的主题为Traffic。计算机A的操作系统为Windows操作系统,且在局域网中的IP地址为:198.168.1.209。计算机B的操作系统为Linux操作系统,且在公网中的IP地址为:210.32.200.129。发布端分布在计算机A上,订阅端client在计算机B上,并且默认订阅上述发布端。测试结果如图4、5所示,可以看到基于ICE的实时消息提醒系统能够满足现实要求。
随着我国交通信息系统的建立与完善,交通信息服务也逐渐成为一项便民的服务。本文在研究订阅发布模型以及ICE的基础上,提出并设计了一种基于ICE的交通信息发布系统。此外,ICE在架构上提供的优点也使得该系统具有极其广泛的应用前景。例如,该系统可以使运营商便捷地向订阅客户发布各类信息服务,也可用于企事业内部事件通知等服务。
[1] 卢鹏.基于JMS的消息中间件的轻量级设计与整合[D].成都:西南交通大学,2010.
[2] 刘海岩,梁建龙.基于中间件的分布式系统开发过程的研究[J].计算机应用研究,2004,21(1):85-87.
[3] 尹胜刚,翟正军.基于Ice中间件的分布式测控网络[J].测控技术,2011,30(10):77-80.
[4] MichiHenning,Mark Spruiell.Distributed Programming With Ice.[EB/OL]http://download.zeroc.com/Ice/3.4/Ice-3.4.1.pdf,2010 -06 -08.
[5] 朱东辉.智能交通系统的发展[J].山东交通学院学报,2002,10(4):9-14.