SuperMap iServer 的集群系统是由 GIS 应用和集群服务组成,如图 1,它们在集群系统中通过层次部署,分别执行不同的职能,相互之间根据约定进行信息的通讯,集群系统在集群服务的有效组织和协调下,完成客户端请求的所有 GIS 任务。

 

图 1 分布式层次集群结构图

集群服务器

通过集群服务获取相关加入到集群环境的 GIS 应用的信息,对 GIS 应用所提供的 GIS 服务的服务能力和运行状态进行评估,在客户端发送 GIS 任务时,集群服务会自动选择最佳状态的 GIS 服务,为两者建立连接。在集群服务的有效管理下,保障集群环境下的 GIS 服务能够按照其服务能力和当下状态均衡地处理客户端的所有 GIS 任务,即保证 GIS 服务的负载均衡及客户端请求响应的高效性。

在一个集群系统中,允许配置多个集群服务,这些集群服务可以在同一层次作为集群冗余或者为不同 GIS 服务内容提供集群服务,如图 1中 A1/A2/B1/B2,也可以采取层次结构的配置模式,如图 1中根集群服务节点 R1/A1/a1等。集群服务主要负责如下工作:

  1. 下一级子结点的信息接收,用于接收下一级 GIS 应用节点的节点信息,包括 GIS 应用中 GIS 服务信息及当前 GIS 应用的状态,和/或下一级子集群服务的信息;
  2. 集群服务信息更新,用于依据1)中接收的 GIS 应用节点信息和/或下一级子集群服务信息更新本集群服务的负载均衡信息;
  3. 如果该集群服务还受到上一级集群服务的管理,该集群服务需要进行负载信息的报告,用于将本集群服务的负载均衡信息上报给上一级的集群服务。以图 1中子集群服务 A1为例,除了上述1)、2)的工作外,还要负责定时向上一级根集群服务节点(2个)报告负载均衡信息;
  4. 如果本集群服务能够被 GIS 应用直接访问,如图 1中子集群服务 A1,除了加入根集群服务的管理,向上提供服务外,还对外(GIS 应用 *1)提供集群服务,这样的集群服务还执行信息反馈工作,用于接收服务请求,并依据本集群服务的负载均衡信息选择满足服务请求的 GIS 应用节点,并返回该服务节点的节点信息,以便客户端自动连接到对其请求来说最佳的 GIS 服务节点。

GIS 应用

GIS 服务可以对地理数据进行功能计算,满足客户端的各种地图操作请求。一个 GIS 应用可以提供多种类型的 GIS 服务,如 GIS 应用1可以提供一个 REST 基础地图服务(执行基础地图操作等计算)、一个 REST 数据管理服务(管理数据源、数据集等空间数据)。在集群系统中,多个 GIS 应用可以同时加入到同一个集群或者多个集群中,如图 1中 GIS 应用 a1,a2都同时加入集群服务 a1和 a2中。

GIS 应用主要负责以下工作:

  1. GIS 应用节点信息的报告:定期向集群服务节点报告当前工作状态,包括 GIS 应用节点中提供的 GIS 服务信息,负载信息和当前状态信息;

  2. GIS 服务响应:当集群服务为客户端和 GIS 应用节点建立连接关系后,GIS 服务根据客户端提交的 GIS 服务请求进行 GIS 运算,将结果返回给客户端。

  3. 接收/发送服务请求:如果是可以被客户端直接访问的 GIS 应用节点,如图 1中 GIS 应用节点*1,除了可以直接处理接收到的客户端请求外,还可以将接收到的客户端服务请求发送给所连接的集群系统,集群系统会依据本集群服务的负载均衡信息选择满足服务请求的 GIS 应用节点,并返回该服务节点的节点信息,以便客户端自动连接到对其请求来说最佳的 GIS 服务节点。
  4. 信息接收:用于接收集群服务反馈的满足所述服务请求的最佳 GIS 服务的信息,包括地址信息、负载信息和当前状态信息,并反馈给客户端。