SuperMap iServer 的集群配置信息位于系统配置文件(iserver-system.xml)中 ,详见iServer 配置文件说明。SuperMap iServer 的服务在启动的时候,通过该配置文件的配置信息去组织该服务器上的 GIS 服务、集群服务。因此用户可以直接在配置文件中修改相应节点的配置信息来实现对服务器的服务的配置管理。

集群在配置文件中的位置

集群服务的配置

集群服务的配置位置在 iserver-system.xml 文件中的<clusterService>节点。配置的节点内容如下:

 

节点名称

说明

<clusterService> 集群服务的配置根节点。

<enabled>

(<clusterService>的子节点)

表示该集群服务是否可用,如果为 false,则无法使用该集群服务,为 true,则集群服务可以被启动。默认为 true,即集群服务默认启用。
<balancer>

该节点用于设置集群服务使用哪个负载均衡算法计算 GIS 服务负载。该节点要求设置实现算法的类名,如 com.supermap.services.cluster.WeightedRoundBalancer。

集群服务通过负载均衡的算法去获取最小负载的 GIS 服务,为客户端请求工作。负载均衡算法有多种,如轮转调度算法,加权轮转调度算法等,目前 SuperMap iServer 提供了加权轮转调度算法,其类名为 com.supermap.services.cluster.WeightedRoundBalancer。

<monitorPeriod> 集群服务监听子节点的时间间隔。单位毫秒。

 

例如:

<clusterService>

        <enabled>true</enabled>

        <monitorPeriod>5000</monitorPeriod>

        <balancer>com.supermap.services.cluster.WeightedRoundBalancer</balancer>

</clusterService>

报告器的配置

报告器的配置位置在 iserver-system.xml 文件中的<reporters>节点。配置的节点内容如下:

节点名称

说明

<reporters>

报告器配置的根节点。

SuperMap iServer 通过报告器将本 iServer 服务添加到集群中,提高该集群的性能。同时,SuperMap iServer  支持多层集群,集群服务可以被上级集群服务集群,因此子集群服务需要向上级集群服务报告当前的状态,该节点用于设置向上级集群服务报告所需的配置信息。

<reporter>

报告器。一个报告器负责向一个上级集群服务报告状态。因此,如果本 iServer 服务同时加入到多个集群服务中,此时就需要建立多个<reporter>节点。

<reporter>中需要设置两个子节点信息,包括<enabled>、<address>。

<enabled> 该报告器是否可用,为 false,则集群服务不向该报告器指向的上级集群报告状态,即该集群服务不加入到这个报告器所指向的上级集群中。值为 true 时,则集群服务定时向该报告器指向的上级集群服务报告状态,即加入上级集群服务中。默认为 false。
<address>

上级集群服务的地址,如果是 REST 风格的集群服务,则指向集群服务的根资源地址,如<address>http://192.168.11.11:8090/iserver/services/cluster</address>。

<token>

父节点开启了安全控制后设置的安全 Token。

使用集群的配置

GIS 服务器可以使用集群以提高自身性能,使用集群的配置位置在 iserver-system.xml 文件中的 <cluster> 节点。配置的节点内容如下:

节点名称

说明

<cluster>

该节点是 GIS 服务组件访问集群的主节点。通过对其子节点<enabled>、<address>的配置表达 GIS 应用中的 GIS 服务组件是否要通过访问集群获取服务提供者。

<enabled>

本 iServer 服务器是否使用某个集群以提高性能。默认为 false。

<address>

集群服务的地址,GIS 服务组件向该地址的集群服务获取最佳的服务提供者。

<connectTimeout>

使用集群服务时子节点的连接超时时间,单位为毫秒。默认为2000ms,即2秒钟。

<readTimeout>

集群时,读取子节点返回的请求内超时时间,单位为毫秒。默认为120000ms,即两分钟。

<useLocalCluster>

用于标识是否使用本地集群服务,默认为 false,即不使用本地集群服务。

例如:

<cluster>

      <enabled>false</enabled>  

      <address>http://localhost:8090/iserver/services/cluster</address>

      <connectTimeout>2000</connectTimeout>

      <readTimeout>120000</readTimeout>

      <useLocalCluster>false</useLocalCluster>

</cluster>

受控集群的配置

SuperMap iServer 支持子节点以受控的方式加入集群。在子节点的系统配置文件(iserver-system.xml)中,可以通过<controllable>节点来配置受控集群。

节点名称

说明

<controllable> 该节点是配置 iServer 以受控方式启动的主节点。通过其子节点的配置可以设置是否以受控方式启动,受哪一个集群父节点的控制等。
<address> 受控启动时受哪个集群服务器(父节点)的控制。
<enabled> 是否以受控方式启动服务。
<token> 父节点开启了安全控制后设置的安全 Token。
<isTileWorker> 是否参与分布式切图。为 true 时,受控集群的节点可以参与分布式切图。

例如:

<controllable>

      <address>http://clusterservice:8090/iserver/services/cluster</address>  

      <enabled>true</enabled>   

      <token>-71 90 -24 -17 -115 80 -56 -17</token>

      <isTileWorker>true</isTieWorker>

</controllable>

集群转发参数设置

iServer支持自定义配置集群的转发规则,以进一步提升集群系统请求转发的效率。

节点名称

说明

<clusterRequestClientMode> 集群请求转发模式,ASYNC为异步模式,SYNC为同步模式,推荐采用异步模式以获得更高效率。
<asyncClientSetting> 异步客户端配置参数
<ioReactorSelectInterval> IOReactor选择时间间隔。
<ioReactorIoThreadCount> IOReactor IO线程数。
<ioReactorSoKeepAlive> IOReactor 是否将连接保持下去。
<clientMaxConnTotal> 客户端最大连接数。
<clientMaxConnPerRoute> 客户端每条路径最大连接数。
<connectTimeout> 连接超时时间。
<soTimeout> socket超时时间。

例如:

<clusterRequestClientSetting>

    <clusterRequestClientMode>ASYNC</clusterRequestClientMode>

    <asyncClientSetting>

        <ioReactorSelectInterval>30</ioReactorSelectInterval>

        <ioReactorIoThreadCount>200</ioReactorIoThreadCount>

        <ioReactorSoKeepAlive>true</ioReactorSoKeepAlive>

        <clientMaxConnTotal>10000</clientMaxConnTotal>

        <clientMaxConnPerRoute>10000</clientMaxConnPerRoute>

        <connectTimeout>120000</connectTimeout>

        <soTimeout>120000</soTimeout>

    </asyncClientSetting>

</clusterRequestClientSetting>