ArcIMS的空间服务器、虚拟服务器和ArcIMS服务都是一种在逻辑上划分的对象或概念,它们依赖在计算机上实际运行的ArcIMS进程的存在而存在,如图 2?7所示:
图 2?7 ArcIMS的进程
可以看到,ArcIMS的进程有6个,即Aims_AppServer.exe、Aims_Monitor.exe、Aims_Tasker.exe和3个aimsserver.exe,有三个aimsserver.exe的原因是我们安装了ArcMap Image扩展插件,它会产生另外两个空间服务器进程。
这6个进程被分为四种:Application Server、Monitor、Tasker和Spatial Server,下面我们将对这四种进程进行详细介绍:
Application Server进程负责的事务是分配来自外部的请求,以保持服务器系统的荷载平衡,它决定了哪一个服务运行于哪一个虚拟服务器之上。由于能监测虚拟服务器上的空间服务器对象的状态,使得它能将请求委托给合适的空间服务器对象去处理。如果ArcIMS同时收到的请求(Request)数量超过了可以使用的空间服务器,这些请求也不会被抛弃,而是被存储在应用服务器的序列中等待被提交发送。
应用服务器通过一个名为ArcIMSSite.sez的配置文件保存整个站点的配置信息,该文件在重启ArcIMS服务器时使用。我们可以在Windows平台的ArcIMS安装目录的AppServer文件夹中或Unix、Linux平台的$AIMSHOME/Middleware/Application_Server中寻找到它。如果服务器出现错误,可以删掉这个文件重新启动服务,启动后会重新产生一个ArcIMSSite.sez文件。
另外,Application Server进程占用的默认端口是5353。
监听进程的作用是管理空间服务器进程,包括启动空间服务器进程、保持其运行和停止该进程三件事情。
在ArcIMS启动过程中,Monitor进程会启动空间服务器进程,然后自己呆在后台监听着对方,以保持其状态的正常。与此同时,应用服务器进程会开始与空间服务器进行通讯交互,一旦该交互过程中断,应用服务器进程会立刻给监听进程发出指令,重启该空间服务器进程。
我们已经在2.2中详细了解了空间服务器进程,该进程是一个aimsserver.exe程序。一台计算机能同时存在多个空间服务器进程,以同时处理多种类型的地图请求业务。
我们知道,在对ArcIMS的地图访问过程中,ArcIMS服务器会在服务器硬件上产生地图图像文件,这些文件都被保存在ArcIMS管理的output文件夹中,如果这些文件不被定期清除的话,长期的访问势必会挤占有限的硬盘空间。
Tasker进程能够监测这些临时文件的状态,如果它们的产生时间与当前之间的间隔大于指定的时间间隔,则临时文件会被删除。
对于ArcIMS服务器而言,它的完整启动过程是如何进行的呢?首先启动的当然是Application Server进程,其后的顺序是:
Ø Monitor进程登记到Application Server进程中;
Ø Application Server进程对Monitor进程进行初始化并对其发出指令,以启动一个或多个Spatial Server进程;
Ø 每个Spatial Server进程都到Application Server进程那儿去登记;
Ø Application Server会对每个Spatial Server进程进行初始化,并让每个Spatial Server进程启动一个或多个实例(instance);
Ø 每个实例都会被注册到Application Server中;
Ø Application Server在每一个实例上添加ArcIMS服务。
小知识:进程与线程
我们使用不同语言编写的程序在计算机中只是一堆指令的集合,而真正在计算机中运行的是进程[1](Process),因此,我们通常将进程定义为一个正在运行的程序实例。
进程本身并不会运行,它只是线程[2](Thrend)的容器,真正运行的是包含在其中的线程。单个进程可能包含多个线程,每个线程都有自己的一组CPU寄存器和堆栈空间。每个进程至少拥有一个线程,来执行进程的地址空间中的代码。如果没有,那么进程就没有存在的理由了,系统就将自动撤消该进程和它的地址空间。
[1] http://zh.wikipedia.org/wiki/进程
[2] http://zh.wikipedia.org/w/index.php?title=%E5%9F%B7%E8%A1%8C%E7%B7%92&variant=zh-cn
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛