前一段时间在博客中公布了我们的计划,我们采用博客的形式将对ArcGIS10.1 for Server进行全面介绍。但这种形式有一定的遗憾:缺少互动的空间,所以我们希望广大爱好者能将自己感兴趣的话题在博客的后面提出来,我们一起讨论,一起研究,现在我们言归正传,正式开始我们ArcGIS 10.1 for Server博客系列的第一篇——ArcGIS 10.1 for Server 架构。
=====================================================
Linux上安装ArcGIS 10安装系列文章:
Linux上安装ArcGIS 10_01安装Linux虚拟机及yum源配置 http://www.linuxidc.com/Linux/2014-04/99796.htm
Linux上安装ArcGIS 10_02安装Oracle11gR2 http://www.linuxidc.com/Linux/2014-04/99797.htm
Linux上安装ArcGIS 10_03安装ArcSDE 10 http://www.linuxidc.com/Linux/2014-04/99798.htm
Linux上安装ArcGIS 10_04安装ArcGIS Server 10 http://www.linuxidc.com/Linux/2014-04/99799.htm
Linux上安装ArcGIS 10.1_01安装ArcGIS Server 10.1 http://www.linuxidc.com/Linux/2014-04/99800.htm
=====================================================
一、开篇之言
ArcGIS Server的概念,对于我们来说已经不太陌生,在这里用自己的话简单说下ArcGIS Server是什么?ArcGIS Server是一个用于构建集中管理、支持多用户的企业级GIS应用的平台,能将我们的地图,地理处理等资源作为服务发布出去,让用户可以通过浏览器,移动端等形对这些资源进行访问,同时使用ArcGIS Server为我们提供的GIS功能。
不管你是刚接触ArcGIS Server,还是已经熟知ArcGIS Server多年,Server架构都会是一个全新的东西,因为10.1版本中ArcGIS Server采用了全新架构。
一个新的东西,并且这个新的东西要引起人的兴趣,那么了解它的结构是很有必要的。对于系统管理者来说,知道了其本质,那么就能更好的去管理Server;而对于开发者来说,原则上我们只需要知道这个Server暴露的那些API就可以了,然而现实往往是,开发人员还要兼顾管理者的角色。因此不论管理人员还是开发人员,知晓Server内部结构都是一个一本万利的事情。再者说,往往本质的东西更能展示内在的美(小醉名言)
二、言归正传
架构可以从整体上向我们揭示ArcGIS 10.1 for Server的组成部分,千万言不如一幅图,的确是这个道理,下面就让我们用一幅图来开启本篇的内容。
注:ArcGIS 10.1 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.1 for Server site必须至少有一个集群,当我们第一次创建ArcGIS 10.1 for Server site的时候,一个默认的集群会自动建立。从这里我们已经隐约看出ArcGIS Server的站点架构带给我们的好处,我们不仅仅可以在一个站点中加入更多的GIS服务器来处理我们的需求,还可以根据需要将这些服务器细分成不同的组,这样我们可以最大利用服务器的性能。
ArcGIS for Server 10.1新架构模型的逻辑关系简单概括为:以Site为架构单位;Cluster为GIS 服务的逻辑单位;GIS Server为实际处理单位;GIS Instance实例为每个GIS功能的处理容器。
1、Site为架构单位
ArcGIS for Server 10.1 在安装完成以后,需要确定创建一个新的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节点,通过相关接口可以调整最大实例数,以满足处理量的需求。