gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
阅读:1581回复:4

理解ArcIMS的虚拟服务器

楼主#
更多 发布于:2004-08-11 07:51
<P ><FONT size=2><FONT face=Arial>ArcIMS管理员可以通过虚拟服务器控制分配服务器使用资源,这是ArcIMS的一个很强大的特性。ArcIMS虚拟服务器使ArcIMS服务充分利用分布式处理带来的优势,从而实现可伸缩性,扩展性,高效性,和高可靠性。通过修改虚拟服务器的缺省配置,ArcIMS管理员可以:</FONT></FONT></P>
<UL>
<LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>最大化吞吐量 </FONT></FONT>
<LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>减少响应时间</FONT></FONT>
<LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>限制内存的使用</FONT></FONT>
<LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>提高CPU的使用率</FONT></FONT>
<LI><FONT style="LINE-HEIGHT: 200%; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt" span="span" align="justify"><FONT font>提高可靠性 </FONT></FONT></LI></UL>
<P ><FONT size=3><FONT face=Arial>一、ArcIMS的结构</FONT></FONT></P>
<P ><FONT size=2><FONT face=Arial>要理解ArcIMS的虚拟服务器首先需要了解ArcIMS的体系结构。这个体系结构是由多个组件构成的处理模型,这些组件协同工作,同时运行,并产生地图以便于Web Server传输。这些组件,使用标准的TCP/IP通信协议,因此能够被分布到网络上的任何位置并保持各组件之间同步。每个宿主计算机的操作系统负责ArcIMS进程的运行和内存的使用。这些ArcIMS进程和相关可执行文件的名称列在下面的表中。其中ArcIMS应用服务器和ArcIMS空间服务器是和虚拟服务器关系最密切的进程。</FONT></FONT></P>
<P  align=center><IMG src="http://www.esrichina-bj.cn/library/chinanews/image/virtual%20servers1.1.gif">
图 1 : ArcIMS 进程 </P>
<P ><FONT size=3><FONT face=Arial>二、ArcIMS应用服务器</FONT></FONT></P>
<P  align=justify><FONT size=2><FONT face=Arial>ArcIMS应用服务器负责发送来的请求的负载均衡,并跟踪哪个ArcIMS服务运行在哪个ArcIMS空间服务器上。ArcIMS应用服务器没有用户界面,它通过ArcIMS的Administrator进行配置。通过Administrator还可以创建虚拟服务器,空间服务器,以及虚拟服务器实例。</FONT></FONT></P>
<P ><FONT size=3><FONT face=Arial>三、ArcIMS空间服务器</FONT></FONT></P>
<P ><FONT size=2><FONT face=Arial><FONT size=2><FONT face=Arial>ArcIMS空间服务器是ArcIMS的核心。空间服务器里面运行着多个进程,这些进程访问数据和生成地图,然后通过web Server把这些地图发送到客户端的浏览器上,访问者就可以看到请求的结果了。ArcIMS空间服务器的主要功能就是根据用户请求动态生成地图。</FONT></FONT></FONT></FONT></P>
<P ><FONT size=2><FONT face=Arial>使用ArcIMS Administrator可以在本地机器上或另外一台运行ArcIMS空间服务器的机器上添加ArcIMS空间服务器。注意:另外机器上的ArcIMS空间服务器需要额外的ArcIMS许可。空间服务器的负载远大于ArcIMS的其他组件,所以当考虑负载均衡时,应用服务器和Monitor以及Tasker所占的资源可以忽略不计,最重要的考虑因素是空间服务器里运行的总的实例数。</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>使用ArcIMS Administrator可以在本地机器上或另外一台运行ArcIMS空间服务器的机器上添加ArcIMS空间服务器。注意:另外机器上的ArcIMS空间服务器需要额外的ArcIMS许可。空间服务器的负载远大于ArcIMS的其他组件,所以当考虑负载均衡时,应用服务器和Monitor以及Tasker所占的资源可以忽略不计,最重要的考虑因素是空间服务器里运行的总的实例数。</FONT></FONT></P>
<P  align=left><FONT size=3><FONT face=Arial>四、实例(Instances)</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>实例是ArcIMS空间服务器的最基本的处理单位。一个实例处理一个请求(request)并产生一个返回给客户端的响应(response)。多个实例就意味着可以同时处理多个请求。如图2所示。实例属于虚拟服务器但存在于一个具体的空间服务器上,一个实例一次处理一个请求。</FONT></FONT></P>
<P  align=center><IMG src="http://www.esrichina-bj.cn/library/chinanews/image/Virtual%20Servers1(1).gif"></P>
<P  align=left><FONT size=2><FONT face=Arial>Figure 2:一个虚拟服务器就是一组功能单一的实例形成的用来处理并发访问和负载均衡的逻辑组。</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>在典型安装情况下,每个虚拟服务器有两个存在于缺省空间服务器上的实例。如果不创建新的空间服务器和虚拟服务器,那么六个缺省的虚拟服务器(不包含任何扩展的情况下)各有两个实例。</FONT></FONT></P>
<P  align=left><FONT size=3><FONT face=Arial>五、创建服务</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>ArcIMS服务是通过WebServer实现的特定用途的空间数据和元数据的一种表现。服务的符号,标注以及图层顺序在一个叫做地图配置文件中定义。这个地图配置文件可以是一个ArcXML文件或一个ArcMap文档文件(如果使用了ArcMap Server扩展)。服务是通过虚拟服务器来访问空间服务器中的功能的。</FONT></FONT></P>
<P  align=left><FONT size=3><FONT face=Arial>六、虚拟服务器</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>虚拟服务器就是由一组特定功能的实例形成的用来处理并发访问和负载均衡的逻辑组。虚拟服务器的实例可以来自一个或多个空间服务器,并且可以把实例放在任何在应用服务器上注册过的空间服务器上。</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>虚拟服务器分为公有的(public)和私有的(private),每个虚拟服务器都提供一种类型的服务。公有型的虚拟服务器可以被ArcIMS的服务直接使用,这些虚拟服务器有Image,Feature和Metadata服务器。私有型的服务器包括Geocode,Extract,和Query服务器。这些私有的服务器不能被ArcIMS服务直接使用,但可以被一个请求重定向。Route Server和ArcMap Server是ArcIMS的可选扩展,可以单独安装。当创建和修改虚拟服务器时有四个关系比较关键。</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>1. 一个ArcIMS服务对应一个ArcIMS虚拟服务器。</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>2. 一个虚拟服务器可以使用多个空间服务器。</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>3. 一个空间服务器可以被多个虚拟服务器使用。</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>4. 一个虚拟服务器可以被多个ArcIMS服务使用。</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>为了说明上面的四个关系,请看图3。MyService1可以使用FeatureServer1,ImageServer1,或者MyNewImageServer,这里我们使用FeatureServer1。在这个图中,MyService2使用的是ImageServer1。ImageServer1经过修改有六个实例,其中SpatialServer_1上有四个实例,SpatialServer_2上有两个实例。创建一个使用ImageServer1的服务将把这个服务加到所有的六个实例上,这个服务将可以并发处理六个请求。注意SpatialServer_1即包含Image类型的又包含Feature类型的实例。同样,两个服务,MyService3和MyService4,使用同一个虚拟服务器MyNewImageServer。</FONT></FONT></P>
<P  align=center><IMG src="http://www.esrichina-bj.cn/library/chinanews/image/Virtual%20servers2(1).gif"></P>
<P  align=left><FONT size=2><FONT face=Arial>Feature 3:虚拟服务器的实例可以来自一个或多个空间服务器,当创建和修改虚拟服务器时比较关键的四个关系如图所示。</FONT></FONT></P>
<P  align=left><FONT size=3><FONT face=Arial>七、添加服务</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>当一个服务被创建时,它将被加到它所使用的虚拟服务器的每个实例中。应用服务器会通过每个实例的TCP端口把ArcXML格式的配置信息发送到包含具体实例的ArcIMS空间服务器进程。所以,如果有很多服务和实例的话,这个过程将花一定的时间。因为要依次给每个实例重复同样的配置过程。</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>添加和删除服务是原子操作。刷新一个服务意味着先删除这个服务,然后在每个实例上重新添加。改变服务的属性也一样——先删除服务,然后用新的设置重新在每个实例上添加。如果修改一个虚拟服务器属性,例如添加一个实例,那么应用服务器会自动把这个虚拟服务器上所有的服务在这个新建的实例上添加。</FONT></FONT></P>
<P  align=left><FONT size=3><FONT face=Arial>八、需要建多少个实例?</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>当ArcIMS的服务收到一个请求时,虚拟服务器会处理这个请求。除了有一组存在于空间服务器上的实例外,虚拟服务器在应用服务器上还有一个队列。当一个请求到达时,它先在队列中等待,直到等到一个空闲的实例可以处理这个请求为止。因为同一个虚拟服务器里的实例提供相同的服务,请求是以循环的方式接受处理的,下一个空闲的实例将处理这个请求。</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>接到请求到发出响应之间的时间由两个重要部分组成——排队时间和实例处理请求花费的时间。如果管理员增加了实例数,请求在队列里等待的时间将缩短,将很快等到一个可以处理它的实例。但是这不一定会缩短响应时间。处理请求所花费的时间有一个受计算机资源(如CPU,硬盘)限制的底线。处理时间一般和所要做的工作成正比,要做的工作越多,花费时间越长。对一个特定的请求来说,一个实例必须走完所有的步骤才能产生一个响应——取数据,渲染符号(symbology),渲染标注(Label)等等。由此可见,尽管有多个实例也无法加快产生响应。</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>如果服务器还有没有充分利用的资源,通过添加实例可以提高服务器的吞吐量(Throughput)。使用多实例可以让计算机充分利用一个进程等待I/O进程时的等待时间。多处理可以更加有效地使用计算机资源。</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>Microsoft Windows程序执行的最基本单元是线程(thread)。一个进程(process)包含一个或多个线程。在一个多处理器系统中,线程可以运行在任何一个处理器上。所以把一个空间服务器分成多个并发的线程是一种充分利用多CPU计算机系统资源的方法。ArcIMS使用多个线程或进程来减少对每个请求的响应时间,原因就是每个实例使用一个单独的线程。</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>运行的程序都被计算机CPU切成片断以交错的方式处理。操作系统负责维护线程和进程,让他们“相信”自己是独立运行的。实际上,请求处理一段时间后被冻结,化冻,然后再继续运行。因为多个进程或线程竞争相同的硬件资源,计算机性能在其资源(例如CPU,硬盘,内存)的使用达到100%后达到饱和。通过增加实例数可以把服务器的吞吐量发挥到最大(饱和)。</FONT></FONT></P>
<P  align=left><FONT size=3><FONT face=Arial>九、均衡吞吐量和响应时间</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>使用多个实例可以增加吞吐量和响应时间。但实例的个数却不可能无限制增加。每个实例都需要额外的内存并需要被操作系统当作一个线程来进行管理。这就在实例要做的工作之上又增加了额外的负担。到底多少个实例最好这随着硬件配置和服务内容的不同而不同。通常情况下,一个机器上每个CPU两到四个实例较好。</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>在一个处理器共享队列配置下(例如,多个实例对多个CPU),空间服务器的服务在所有的请求之间共享。如果又n>1个请求,那么每个客户得到服务的几率是1/n。当有两个请求时,空间服务器在两个实例上同时工作,并给每个实例同样的关照。如果一个空间服务器正在用一个实例来处理一个请求,这时一个空闲的实例接收到第二个请求,那么第一个请求的服务速度会突然下降。</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>如果一个虚拟服务器只包含一个实例,其吞吐量就是它处理一个请求所花时间的倒数。当在一个单处理器机器上添加第二个实例时,其吞吐量不会加倍——会比两倍少一些因为服务器把时间分在了两个请求上。这样因为多处理得到了一些好处的同时,每个请求的响应时间却变长了,尽管整体吞吐量增加了。</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>在负载不重的情况下,空闲的实例比较多,所以到达的请求几乎没有什么拥塞,很快被处理,队列常处于空的状态。随着负载增加,空闲的实例变少,服务器的注意力必须分散在多个请求之上。在很重的负载下,所有的实例都是忙的状态。</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>虽然一个负载很重的服务器在许多实例都忙碌的情况下将会有较高的吞吐量,但是响应时间将会增加。如果实例数增加到远远大于可用的CPU数时,服务器的吞吐量将会达到峰值,但响应时间将会无法忍受,用户响应甚至会超时。</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>最佳的实例数不能凭简单的经验和模型得出。管理员应该在实际运行环境中调试虚拟服务器。从Internet上来的请求呈爆发式增长,很难在开发环境中模拟这种随机的请求的负载,所以我们只能在实际环境进行调试。最终目的就是找到能达到一种平衡的实例数,即能够增加吞吐量又能够保证响应时间可以被用户接受。</FONT></FONT></P>
<P  align=left><FONT size=3><FONT face=Arial>十、结论</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>虚拟服务器是ArcIMS机构体系中非常成功和出色的一个特性。它的配置选项为解决ArcIMS的性能问题提供了极大的灵活性。虚拟服务器通过隔离服务,增加了ArcIMS的稳定性。假如一个服务和数据源的链接不稳定不会影响别的服务。可以通过增加实例的方法减少请求排队和等候的时间或通过减少实例的方法节约内存的使用。在多空间服务器配置环境下,请求可以被发送到不同的空间服务器,和单服务器相比,这样更加高效,可以使吞吐量加倍。</FONT></FONT></P>
<P  align=left><FONT size=2><FONT face=Arial>如果要了解更多的关于ArcIMS的信息,ESRI专门有一门两天的课,叫《ArcIMS Administration》和两个网上教程《Learning ArcIMS4》和《Customizing ArcIMS4》。前一门课由ESRI教育服务部门提供(www.esri.com/training),后一门课由ESRI虚拟校园提供(campus.esri.com)。</FONT></FONT></P>
喜欢0 评分0
GIS麦田守望者,期待与您交流。
liu76xt
论坛版主
论坛版主
  • 注册日期2004-05-26
  • 发帖数262
  • QQ
  • 铜币499枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-08-13 10:28
经典文档,再好好看一遍。
| ------------- | 白云悠悠矶头月涌千骏过, 往事渺渺江上风情一燕来。 | ------------- | [img]http://www.gisempire.com/bbs/showimg.asp?BoardID=3&filename=2004-9/200491972356282.gif[/img]
举报 回复(0) 喜欢(0)     评分
hexiaoming
路人甲
路人甲
  • 注册日期2003-11-10
  • 发帖数57
  • QQ
  • 铜币160枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-09-17 11:25
<img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em06.gif" /><img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em07.gif" />
举报 回复(0) 喜欢(0)     评分
hengyu
路人甲
路人甲
  • 注册日期2004-01-08
  • 发帖数65
  • QQ24637884
  • 铜币406枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2004-09-17 16:00
<P>不错不错,非常好!!进一步理解了arcims的一些东东,顶一下:)</P>
举报 回复(0) 喜欢(0)     评分
redmetal
路人甲
路人甲
  • 注册日期2004-08-28
  • 发帖数80
  • QQ
  • 铜币293枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2004-09-17 23:14
两个字:经典!
举报 回复(0) 喜欢(0)     评分
游客

返回顶部