开放式Internet地图服务体系结构设计与应用

来源:百度文库 编辑:神马文学网 时间:2024/04/29 01:23:00
《2001'中国GIS年会论文集》,成都,2001.3
开放式Internet地图服务体系结构设计与应用
王尔琪 钟耳顺
(中科院地理信息产业发展中心htpp://www.gischina.com)
[摘要]
针对传统的Internet地图服务软件使用复杂,开发难度大,只能使用特定格式的数据、难以满足大负荷运转的问题,本文提出了一种开放式的体系结构,具有使用简便、易于扩展、可以充分发挥地图引擎能力的优点。通过该体系结构,可以实现多服务器群集、动态负载平衡、编译执行、直接HTTP响应、多级缓存、多地图引擎支持、集中化管理等功能,从而使用户快速发布大数据量、不同来源的地图数据成为可能。该体系结构应用于软件开发实践中,取得了良好的效果。
[关键词]
开放式结构 Internet地图服务 服务器群集 动态负载平衡 DMO
1.解决方案
按照部署方式的不同,目前常见的Internet地图服务软件主要可以分为三种类型:
A) 客户端处理为主:主要采用Java Applet、Plug In、ActiveX等,下载数据到本地机进行处理的方式,这种方式处理较小数据量的矢量地图速度快、效果好,但是随着数据量增加到一定程度,性能将会急剧下降到难以忍受的程度,如果含有影像数据,也会大大降低性能。由于数据下载到本地机,同时会带来安全性的问题。
B) 以服务器端处理为主:服务器有采用CGI、ISAPI、NSAPI、Java Servlet等方式,地图主要在服务器方完成,客户端采用纯HTML或较小的Java Applet进行开发。可以支持较多的浏览器,不需下载或安装插件,使用方便。由于数据在服务器方,数据安全可以得到保证,而且由于只需处理用户请求的区域,数据传输量恒定,不会随着数据量加大而导致性能线性下降。这种方式适合处理大数据量,尤其是矢量和影像叠加到一起的数据。
C) 客户端和服务器相结合:通过客户端和服务器方相结合的方式,可以在处理不同的地图数据时采用不同的方案,可以使安全性、性能与效果得到较好的平衡,但实际处理的效果与不同软件的体系结构和功能有较大的关系。
由于网络处理相当复杂,目前常见的Internet地图服务软件普遍采用了与Web服务器相结合的方法来进行开发,但是由于Web服务器普遍使用多线程的方式处理客户端请求,而大部分地图引擎目前均不支持多线程,所以一般采用另外启动一个应用服务器的方式来解决这个问题。在这种方式下由Web服务器代理网络请求,然后转发到应用服务器或者调用服务器端对象,处理完毕后再由Web服务器传回结果。由于需要同时配置多个服务器程序,会带来网络流量的加大、配置复杂、开发与调试难度相当大的问题,如果出现错误难以跟踪和排除故障。

在实践中,我们认识到这些问题产生的根本原因在于Web服务器的体系结构不适用于大数据量的空间地理信息服务的要求。为了从根本上解决问题,我们设计了一种新的地图服务器体系结构:
A) 采用应用服务器的方式,底层采用Visual C++直接进行Socket编程,直接解析HTTP协议,从而使浏览器可以直接与地图服务器会话,减少了网络中转,可以直接控制数据I/O;
B) 管理器通过COM接口与地图引擎进行交互,开发者只要从标准接口中继承就可以开发自己的专用地图引擎,完成特殊的功能,从而实现了开放的多地图引擎支持;
C) 通过应用逻辑层来管理各个地图应用,不但可以充分利用现有地图引擎的处理能力,还可以实现多服务器群集和跨服务器的动态负载平衡,从而解决了空间信息数据量大难以处理的难题。
2、体系结构
2、1 组件式结构
在这种体系结构中,全部采用组件式方法进行设计,所有组件运行于服务器端,集中管理和配置,客户端采用HTML和JavaScript开发,不需使用任何插件。服务器端组件共分为以下几个部分:
2.1.1.1 网络组件
采用VC++编程实现,主要用于处理网络请求,与浏览器进行交互通信。
2.1.1.2 GIS组件
可以使用各种支持组件化编程的地图引擎,如SuperMap、MapX、MapObjects等。
2.1.1.3 格式转换与影像处理组件
采用VC++编程,实现将地图输出的结果转换到JPG、GIF等浏览器可以显示的影像文件格式,或者转换为其它可以在浏览器上使用的矢量格式,如VRML、Flash、CGM等。
2.1.1.4 服务器群集与任务分派组件
采用VC++编程实现,主要处理地图应用的管理和任务分派。
2.1.1.5 服务器管理组件
服务器地图应用的管理和配置工具,可以通过简单的方式配置地图服务的各种参数,并保存到注册表中,可以通过该工具启动、停止地图服务、查询当前运行状态等。
2.1.1.6 其它辅助工具
包含数据转换、数据处理等辅助工具。
2.2 服务器群集结构
在这种体系结构中,地图应用与配置的物理服务器无关,所有应用通过逻辑应用名称由群集服务器统一进行调度和任务分派。在一个地图服务站点中,至少有一个主群集服务器,可以同时配置一个或多个地图服务器,每一地图服务器可以配置一个或多个地图应用,同一应用也可以配置于不同的物理服务器上。对于访问地图站点的用户来讲,只有一个入口点-群集服务器,具体处理的服务器与用户无关,用户不用关心数据或处理由那一台服务器来完成,这样多个服务器可以像同一台服务器一样使用,从而提高了性能,同时方便开发。

2.3 多种部署结构
按照这种结构的系统部署非常灵活,按照需求和开发方案的不同,可以实现多种部署方式。
A) 由于地图服务器可以直接处理HTTP请求,对于以地图为中心的服务网站只需配置地图服务器即可。

图三 配置方案一
B) 对于同时使用地图服务和其他Web服务的网站,同时配置IIS Web服务和地图服务器,两者各自完成不同的功能,客户端通过帧或页内帧将界面结合到一起。

图四 配置方案二
C) 对于以Web服务为主的网站,如果两者需要较强的交互能力,需要同时配置IIS Web服务和地图服务器,并由IIS代理地图服务器的请求。这种方式能够很好地与原有的Web服务器系统相结合,应用业务的记录可以在地图上定位,同时也可以在地图上表示出来,是功能最为强大的一种配置方案。

图五 配置方案三
D) 嵌入方式集成,与客户端的交互(包括返回结果)都通过WebServer来完成,产生的地图结果文件由WebServer返回到客户端。这种方式一般只能在单台服务器上使用,开发较为简单,但配置稍微复杂一些。
2.4 分布式管理对象(DMO)
为了方便多服务器的管理和实现远程维护,专门设计了分布式管理对象结构(DMO,Distributed Management Objects)实现远程管理和管理工作的自动化,远程用户可以通过对DMO进行编程来执行一些例行的工作,减少管理工作量,实现管理自动化。
通过远程管理工具,用户可以动态地连接到任何一台服务器,实现企业级管理。远程管理工具内部也使用DMO来完成相应的工作。

图六 分布式管理对象结构示意图
3 关键技术与特性
按照这种开放式组件化的思想,我们设计了全新结构的Internet地图服务软件平台-SuperMap IS,从功能和性能上都达到了比较理想的效果,具有很多优异的特性。
3.1 组件化设计,易于管理
A) 通过采用组件化结构,系统的可管理性大大增强,可以实现单点登录、集中管理。同时可以通过对DMO编程实现管理自动化。
B) 组件之间采用COM接口,从而使各个组件可以单独更新和升级,使系统的更新工作大大减少,兼容性得到增强。
C) 客户端的开发遵循相同的接口,与服务器端采用的数据结构和地图引擎无关。当服务器端采用的软件升级和数据发生变化时,原来的客户端可以照样运行。对用户来讲,所有的操作方式和操作习惯也都可以保持不变。
D) 内置的基于SuperMap 2000的地图引擎与SuperMap 2000的数据处理和开发平台采用相同的体系结构,SuperMap 2000的数据只需在服务器上进行配置即可直接使用,快速发布到Internet网络。
3.2 多源数据集成与海量数据快速访问
由于内置的SuperMap 2000地图引擎采用SuperMap来管理、处理数据,SuperMap的多源数据无缝集成技术和海量影像数据访问技术也可以在Internet上使用。
A) 多种来源数据不仅可以在桌面系统集成,而且不需转换即可直接发布到Internet网络。如Dgn、SDB、ADO等各种数据源都可以叠加到同一地图之中进行快速显示。
B) 小波变换影像压缩技术实现海量数据支持,可以轻松处理GB级的地图数据,并将其快速发布到Internet网络,用户访问时间与数据量的大小基本无关。
C) 矢量几何对象的压缩,高效的空间四叉树索引可以大大提高用户访问数据的速度。
3.3 服务器群集,具有高度伸缩性
A) 基于HTTP协议的服务器群集技术使SuperMap IS服务器可以支持服务器群集和动态负载平衡,在大量用户并发访问时能提供较好的响应速度。通过采用动态注册和派遣的机制,系统运行更加稳定,而且具有一定的容错性能。
B) 实现跨机器的负载平衡,具有高度可伸缩性,适应不同规模的需求。随着应用规模的扩大,只需增加应用服务器的数量,不需对应用作任何修改。
C) 使用多台中低档服务器组合应用达到甚至超过高档服务器的性能,从而降低成本。
3.4 多种地图引擎,支持自定义开发
全开放的组件式体系结构实现了多制图引擎支持。除SuperMap 2000之外,可以使用MapObjects、MapX等实现多种制图引擎。除了提供的标准制图引擎,用户甚至可以开发自己的商业化制图引擎。
基于COM接口的多地图引擎支持具有动态注册和卸载多种制图引擎的能力。不同的制图引擎也可以在同一服务器中并发运行、集中管理。
支持多种客户端,HTML、JAVA等。模板化的开发方法可以大大缩短开发周期。
3.5 客户端与服务器多级缓存结构
SuperMap IS服务器实现了高效的数据缓存和应用缓存,通过二次开发可以实现针对特定应用的处理缓存,随软件提供的客户端设计了巧妙的客户端缓存机制,可以大大加快地址定位和地图浏览的速度。

图七 SuperMap IS缓存结构示意图
3.6 编译执行,直接响应HTTP请求
后台制图引擎采用编译方式运行,不仅可以方便程序的开发,而且可以大大提高程序运行的速度。
直接支持HTTP网络协议,与浏览器直接交互可以有效减少内部网络流量,从而提高应用运行的效率。
4 模板化开发方法
SuperMap IS支持模板化的开发方法,随系统提供完整的客户端开发模板。在整个体系结构中,共支持三种不同开发级别的开发方式:用户界面定制、制图引擎开发、独立服务器开发。
4.1 用户界面定制
用户界面定制基于完整的应用模板进行开发,用户使用FrontPage或InterDev等工具实现界面和功能定制,可以快速建立原型系统,可以完全定制用户界面与功能。
用户如果已经有基于数据库的其它业务系统,可以在原有业务系统基本不变的情况下快速嵌入地图服务系统,实现地图浏览、空间查询、地址检索等功能。
4.2 制图引擎开发
也采用基于模板化的开发方法,通过对提供的示例进行修改来完成用户特殊的功能。制图引擎的开发遵循统一的COM接口,可以完全存取地图引擎的所有功能。可以使用自己熟悉的软件开发工具如VB等进行开发。开发的制图引擎只要加载到系统中即可实现集中化管理和动态负载平衡。
4.3 独立服务器开发
如果使用独立服务器开发方式,用户可以自行管理服务器的状态和操作。可以建立复杂的应用服务平台。