ArcGIS Server 架构Web Adaptor特征

来源:互联网 发布:java认证考试费 编辑:程序博客网 时间:2024/05/29 18:19

ArcGIS 10.2 for Server 架构 前一段时间在博客中公布了我们的计划,我们采用博客的形式将对ArcGIS10.2 for Server进行全面介绍。但这种形式有一定的遗憾:缺少互动的空间,所以我们希望广大爱好者能将自己感兴趣的话题在博客的后面提出来,我们一起讨论,一起研究,现在我们言归正传,正式开始我们ArcGIS 10.2 for Server博客系列的第一篇------ArcGIS 10.2 for Server 架构。

一、开篇之言

ArcGIS Server的概念,对于我们来说已经不太陌生,在这里用自己的话简单说下ArcGIS Server是什么?ArcGIS Server是一个用于构建集中管理、支持多用户的企业级GIS应用的平台,能将我们的地图,地理处理等资源作为服务发布出去,让用户可以通过浏览器,移动端等形对这些资源进行访问,同时使用ArcGIS Server为我们提供的GIS功能。

不管你是刚接触ArcGIS Server,还是已经熟知ArcGIS Server多年,Server架构都会是一个全新的东西,因为10.2版本中ArcGIS Server采用了全新架构。 一个新的东西,并且这个新的东西要引起人的兴趣,那么了解它的结构是很有必要的。对于系统管理者来说,知道了其本质,那么就能更好的去管理Server;而对于开发者来说,原则上我们只需要知道这个Server暴露的那些API就可以了,然而现实往往是,开发人员还要兼顾管理者的角色。因此不论管理人员还是开发人员,知晓Server内部结构都是一个一本万利的事情。再者说,往往本质的东西更能展示内在的美(小醉名言)

二、言归正传

架构可以从整体上向我们揭示ArcGIS 10.2 for Server的组成部分,千万言不如一幅图,的确是这个道理,下面就让我们用一幅图来开启本篇的内容。

注:ArcGIS 10.2 for Server是一个纯64位的应用程序,那么也就意味着不能在32为的计算机上安装,这一点需要我们注意。

在这幅图中,可以看到作为一个完整的GIS服务器站点架构,它包括服务管理员,服务发布者,有数据服务器,GIS服务器,有Web服务器以及使用ArcGIS Server服务的各种终端(桌面端,移动端,浏览器等)。但是ArcGIS Server站点只由四个部分构成:Web服务器,Web Adaptor(Web Adaptor这个组件我们有专门的博文介绍),GIS服务器和数据库服务器,如下图:

数据服务器我们是很容易理解的,存储了GIS服务所需要的数据,而关于Web服务器和Web Adaptor我们有专门的博文来介绍,在这里我们就不做过多的介绍。 GIS服务器

现在让我们我们将焦点放在阴影部分的矩形框中,这就是ArcGIS Server站点的核心-GIS服务器。这里将它称为nGIS Servers,即多节点GIS Servers。这种模型架构取代了10.0以前的基于SOM – SOCs结构。新型的nGIS Servers模型已经没有像10.0及9.x版本的SOM主控制节点,采用点对点(p2p)的方式,即每一个GIS Server节点都是平等的。这样新模型即使是某一个GIS Server节点意外的宕掉,也不会导致整个地图服务的停止运行;同样,当需要增加一个GIS Server节点时,以plug-in方式插入一个节点为服务提高负载能力。而这种松散的、热插拔的架构是构建云GIS应用的基础。在逻辑上,这n个GIS Servers节点组织为一个Site站点,也就是说要成为一个站点至少应该有一台GIS服务器。在这个N个GIS服务器中我们可以根据服务器的性能,或者根据我们应用的不同而进行分组,不同的组用于处理不同的服务,比如说性能比较好的机器用于处理GP服务,性能一般的用于处理地图服务,这种结构如下图:

值得注意的是ArcGIS 10.2 for Server site必须至少有一个集群,当我们第一次创建ArcGIS 10.2 for Server site的时候,一个默认的集群会自动建立。从这里我们已经隐约看出ArcGIS Server的站点架构带给我们的好处,我们不仅仅可以在一个站点中加入更多的GIS服务器来处理我们的需求,还可以根据需要将这些服务器细分成不同的组,这样我们可以最大利用服务器的性能。

ArcGIS for Server 10.2新架构模型的逻辑关系简单概括为:以Site为架构单位;Cluster为GIS 服务的逻辑单位;GIS Server为实际处理单位;GIS Instance实例为每个GIS功能的处理容器。

1、Site为架构单位

ArcGIS for Server 10.2 在安装完成以后,需要确定创建一个新的Site站点,还是添加到已经存在的Site站点。如果是创建一个新的ArcGIS Server环境,就需要选择New Site操作,一系列的操作包括创建站点管理员账户配置Directories和Configuration Store路径等信息。下图为安装完ArcGIS Server在启动Manager页面是看到的,这个时候还不能称之为一个站点,因为站点还没有创建,如下图:

配置信息存储文件(config–store)

ArcGIS Server 站点有一个特殊的文件夹-配置存储,该文件夹中包含的站点的重要信息。在创建ArcGIS Server 站点时,需要指定配置存储的位置,该目录包含整个ArcGIS Server的集群信息,用户信息,安全信息等,每一种类型的信息都有相应的文件夹,如下图所示:

服务器目录(directories)

一个服务器目录是计算机上的一个物理目录,

ArcGIS Server站点将某些特定的信息写入和存储在该目录中,该目录包含有缓存文件夹,输出文件夹,系统文件夹,KML文件夹等。下图为创建的directories目录的示意图:

只有添加到Site站点的GIS Server,才能称为Siteful的GIS Server节点,要不就为孤立的节点,是不属于架构之内。

每个Runnable的GIS Server所需的一系列数据,它们都被保存到Site相关属性里。如:所属的集群信息、服务信息、服务所依赖的数据信息、目录信息以及日志信息等等。GIS Server也是基于这些信息才能提供具体服务的。

一个具体的应用GIS环境只有一个Site站点。

注:GIS服务器可以认为是构成ArcGIS Server站点中,安装了ArcGIS Server的机器。GIS服务器可以用来绘制地图、提供服务、同步数据库、投影几何对象、搜索数据、并执行许多由ArcGIS提供的操作。所以可以这么说:GIS服务器是ArcGIS Server 站点中的工作中心。在ArcGIS Server 10.1中 GIS服务器内嵌了一个Web服务器,但是我们可以提供一个自己的专有Web服务器,以便提供更高级的功能,如使用本地Web服务器的安全功能等。

2、Cluster为GIS服务的逻辑单位

安装完GIS Server节点,创建一个新的Site站点后,ArcGIS Server默认会产生一个名为“default”的默认集群。以后创建的Runnable GIS Server节点都可以添加到这个集群内,当然某个Site站点可以创建多个集群。

对于某个特定的Cluster,它是某个具体服务的逻辑容器,承载的具体服务如:Map Service

、GP Service等等。举个例子:现在需要发布某区域的基础地形的地图服务,就需要选择是有哪个Cluster承载这个地图服务。到此为止,用户发布地图服务的过程就完成了。当然,具体的服务能力是有下面的GIS Server提供。 但并不是一个Cluster不是只承载某一个服务、或者某一类服务,每一个Cluster可以为不同类型,多个服务提供容器。

ArcGIS Server为 Cluster内的GIS Server通信提供了完善的协同保障,如:TCP轮询、UDP广播、心跳感应等等。

ArcGIS Server的服务是位于一个集群中,而这个集群至少包含一台GIS服务器,下图为创建站点的时候,默认的集群:

3、GIS Server为实际处理单位

每一个安装ArcGIS Server的机器为一个GIS Server节点,这里的机器可以是物理机,也可以是虚拟机,当然这样的每个机器内只能有一个GIS Server节点。上述的GIS Server节点,其实也是Siteless的节点。要想转成为Runnable的GIS Server节点,首先需要添加到Site站点内,转为Siteful的GIS Server节点,然后添加到Cluster内,就成为Runnable 的GIS Server节点。在每一个Cluster逻辑内可以存在多个GIS Server节点,这些GIS Server节点负载均衡上层的逻辑功能。ArcGIS Server提供了多种负载均衡的算法,对于不同的请求情况,如:密集I/O型、长事务型、高CPU型等,会自动配置到不同的负载算法。在新模式下,GIS Server是全缓存模式的,这样性能将得到提升。

服务虽然位于集群中,但是处理服务的请求的操作都是这个集群中的GIS 服务器,一个集群至少包含一个GIS 服务器,如下图:

4、GIS Instance实例为每个GIS功能的处理容器

GIS Instance为GIS Server的处理实例。默认情况下,一个GIS Server节点自动设置最大实例数为两个。对于ArcGIS Server for windows版本,如果这个节点运行饱和下就是产生两个进程,这些就是处理具体功能的实例进程。当然,对于某个负载较重的GIS Server节点,通过相关接口可以调整最大实例数,以满足处理量的需求。

什么是ArcGIS Web Adaptor

ArcGIS Server 10.1 内嵌了一个Web服务器,我们肯定想过让ArcGIS Server 跟我们自己的Web服务器一起工作,如果这样的话就需要另外一个组件ArcGIS Web Adaptor,该组件允许将ArcGIS Server 和我们的Web 服务器整合在一起。Web Adaptor 兼容IIS和Java EE 服务器(Websphere,JBoss,WebLogic)。

Web Adaptor 是一个运行在我们的Web站点中的一个应用,它将请求转发给GIS 服务器,它会跟踪ArcGIS Server站点以便了解哪些GIS服务器被移走了或者添加了新的GIS 服务器,它会将请求转发给目前参与的GIS 服务器。

当我们准备将 ArcGIS Server 站点暴露给外部用户的或者要实施负载均衡和安全技术的时候或者为我们的ArcGIS Server 站点保持一个静态的URL,我们应该安装Web Adaptor。

注意WebAdaptor必须和Web服务器安装在同一台服务器上

Web Adaptor给我们提供那些好处 ? 允许ArcGIS Server跟我们自己的Web服务器整合,通过在站点中增加一个Web服务器,就可以获得承载Web应用程序的能力,这些

web程序可使用自己发布的GIS服务

允许将GIS 服务器通过结构的标准网站和端口暴露出去 通过将请求分发给不同的ArcGIS Server站点的GIS 服务器以便提供web层的负载均衡

可以阻止外部用户访问ArcGIS Server站点目录和ArcGIS Server Manager

如果使用IIS,我们可以使用Windows 集成身份验证在web层限制进入我们站点的用户。

Web Adaptor的安装

WebAdaptor 这个组件是在ArcGIS Server的安装盘中,安装也比较容易,只需要点击Setup然后,下一步即可(要和Web服务器装在一起,我这里用的是IIS作为服务器),安装完之后,会在IIS服务器上看到我们安装的WebAdaptor,如下图:

安装完之后,我们需要一个操作就是将Web Adaptor跟我们的Server关联起来,也就是想Web Adaptor注册Server站点,我们只需要在浏览器打开Web Adaptor,就看到一个配置的页面,如下图:

这样在以后使用的时候,我们只需要向用户暴露Web Adaptor的地址即可。

我们对Web Adaptor的介绍就到此,这样的话我们的整个架构内容也完整了。 小结:Web Adaptor其实是一个可选的组件,它的出现是为了让我们的站点对外提供统一的URL地址,此外还可以将GIS服务器跟企业内部的Web服务器集成,在安全方面可以利用web服务器的安全机制来保证我们GIS服务器的安全……

ArcGIS for Server 10.1中Web Adaptor的工作原理

ArcGIS for Server 10.1的安装目录中,都会内置一个tomcat(Program

Files\ArcGIS\Server\framework\runtime\tomcat\),无需单独的Web Server即可发布各种GIS服务(对于熟悉.NET的朋友来说,更省去单独安装和配置IIS的步骤);AGS应用程序的端口号也由之前版本的80(ArcGIS Server for .NET)和8099/8399(ArcGIS Server for Java)统一到了6080上,比如

http://localhost:6080/arcgis/rest/services和

http://localhost:6080/arcgis/manager等。但对于内置的这个tomcat,我们并不能进行过多的操作,如果需要部署Web应用或通过别的端口来访问ArcGIS for Server的服务,这时就需要用到新的组件:Web Adaptor了。

Web Adaptor实际上是安装在Web Server机器上的一个Web应用程序,负责将Web Server接收到的GIS请求转发到ArcGIS Server site内的GIS Server机器上去。通过Adaptor这个桥梁,我们就能使ArcGIS for Server利用到企业级Web Server的诸多优势。根据安装帮助中的解释,安装Web Adaptor后主要有以下好处:

?

? 将单独的企业级Web Server集成到ArcGIS for Server的部署架构中来。可以将利用ArcGIS for Server服务的Web应用部署到Web Server上去;可以为site内所有的GIS Server提供不含有6080端口及arcgis等字样的统一访问入口点; 可阻止最终用户通过Web

Adaptor的访问地址连接到

ArcGIS for Server的相关管理程

序。比如用户如果得知了类似

6080端口的GIS服务访问地址,

就可通过固定的url地址访问到

Manger,Admin api等涉及到整

个站点操作的内置应用。而Web

Adaptor给我们提供了选项,可禁

止用户通过Web Adaptor暴露出

的GIS服务地址访问到这些管理

应用。

此外,相对于site内的多台GIS Server机器,Web Adaptor还可以再次(除了Web Server集群外)起到负载均衡的作用,这在大并发量的情况下会比较有效。假设一个site内有n台GIS Server,它们所能处理的最大并发请求是1w个;根据ArcGIS for Server中p2p的实时通信架构,当我们将1w个并发请求发送到任一GIS Server的tomcat上时,GIS Server之间会自动以轮询(默认设置)的方式处理这些请求,GIS Server们完全可以及时响应;但1w个Web请求会首先使接收请求的这个tomcat过载,产生瓶颈。如果有了Web Adaptor,当这1w个请求到达Web Server(集群)时,Adaptor会将这些请求轮询发送到每个可用的GIS Server去,这样每个tomcat就只需支持1w/n个

并发即可,可最大限度利用硬件资源。

IIS中的Web Adaptor为例(经过Java高手验证WebLogic和WebSphere的Adaptor工作过程与此是完全一致的),看看反编译后的代码。通过查看

inetpub\wwwroot\arcgis\Web.config文件得知,IIS中的Web Adaptor主要的工作过程都集中在ESRI.ArcGIS.WebAdaptor.dll(在GAC目录中)里。这个dll里首先找到两个类:

一个Node就对应一个GIS Server机器,_healthy标记该机器的可用状态;NodeManager是所有Node的管理类。Web Adaptor启动时,会调用

WebAdaptorConfig.GetMachines()方法,此方法会向

http://siteip:port/arcgis/admin/machines发送get请求,获取site内所有GIS Server机器的列表,然后利用UpdateNodeList方法保存在NodeManager类中,并写入WebAdaptor.config文件。

此外,最重要的是一个叫AGSHandler的类,它实现了IHttpHandler接口:

发送到Web Server的GIS请求都会由其中的ProcessRequest方法进行处理。前面说过Web Adaptor是以轮询方式转发请求的,而_currentNodeIndex便记录了请求转

发目标

GIS Server的在Nodes列表中的索引:

Web Adaptor接收到发到Web Server的GIS请求后,首先会读取初始化时保存的WebAdaptor.config配置文件并查看里面存储的GIS Server机器列表,如果读取失败或者机器个数为0,都会响应500的错误。如1所示;接下来会利用try里的TransferRequest方法将请求转发到具体的GIS Server(的tomcat)上去,如果转发的这个机器没有响应,则会在catch中将此机器利用MarkUnHealthy方法标记为不可用;而不论当前节点是否成功接收请求,TransferRequest方法中都会将_currentNodeIndex节点加一,保证下一个请求发送到下一台GIS Server上去,以实现轮询请求的事实:

最后来看看Web Adaptor是如何根据配置文件的间隔时间去追询标记为下线机器的状态,在机器上线后又将它们加回可用机器列表的:

o 操作系统必须是64位 o 安装Python 2.7(64位)

硬件需求

对于部署环境,最小内存须4GB。这个要求是基于以下环境的典型部署:

o Two cached map services o One dynamic map service o One locator service o One geoprocessing service o Geometry service o PrintingTools service o SQL Server Express o IIS with Web Adaptor

真正部署时,最低硬件需求并不能具体化,因为要根据用户和需求的不同进行调整。硬件需求必须考虑用户对性能和可扩展性的需求。

二、安装步骤

1、安装ArcGIS Server

加载光盘后运行可以看见下面的界面

这次我们要安装的是ArcGIS for Server,其他程序的作用将在以后的博文中详细介绍

我们选择安装ArcGIS for Server,点击ArcGIS for Server后面的的

Setup

在弹出的窗口中点击

next

勾选I accept the license agreement

点击Change可以修改安装路径,点击next继续

点击Browse可以选择Python的安装目录,选择好后点击

Next继续

创建server账户和密码,设置完毕后点击Next继续

如果有之前安装时候创建的账户配置文件,可以勾选下面的那个选项。 o 提示是否导出账号信息。如无需要,可以选择不导出。点

击Next继续

点击Install即可开始安装

耐心等待安装结束

点击Finish完成安装

2、授权

选择相应的授权方式进行授权

授权完成,点击完成,结束授权

3、创建站点

安装完成后,会自动弹出Manager页面,这里我们选择创建站点。加入现有站点是用来搭建集群的,以后会介绍。

输入主站点管理员账户点击”下一步”。很多人到这一步会

有一个疑问:这个账户和刚刚安装ArcGIS Server步骤中创建的账户有关系吗?分别用来控制什么?首先在上一节中我们创建的ArcGIS Server账户,是为ArcGIS Server创建的操作系统账户(安装完你可以切换操作系统账户看一下,是不是多了一个ArcGIS Server),该账户实际上用来管理ArcGIS Server的操作系统进程(启动、停止ArcGIS Server服务);而我们此时创建的站点账户,主要是为了管理站点中的各种服务形式的GIS资源(各种类型服务的发布、启动、停止、删除;站点安全;集群管理等等)。这两个账户的设置完全没有关系,可以随意设置。

指定相关目录,然后点击 “下一步”

完成创建

输入之前的站点管理员账户点击登录

现在我们已经成功安装了ArcGIS 10.1 for Server

写在最后面的话



1 0