SuperMap iServer 临时资源存储选择与配置

作者:十三5

前言

SuperMap iServer 临时资源生命周期的管理采取以下策略:

  • 在确保服务器端内存、硬盘空间等资源占用可控的前提下尽可能延长生命周期,或选择将临时资源存储在MongoDB中。
  • 此外,生命周期内,重启服务后,存储在本地的临时资源会被清空。
  • 此处主要为您介绍如何在配置文件中配置临时资源存储

一、客户端上服务入口

首先打开iserver页面,要具有管理员身份,打开“服务管理”
请添加图片描述

再打开“全局设置”可以看到全局设置页面已经展现出来,再打开“服务设置”下面的"临时资源存储设置“
请添加图片描述

这里可以看到存储类型与磁盘空间等选项
请添加图片描述

二、临时资源存储设置

SuperMap iServer 支持将临时资源存储在本地文件、数据库中,并支持设置存活时间阈值。在配置文件中设置临时文件存储请详见临时资源的存储与生命周期,支持的临时资源请参考临时资源列表。此处将为您介绍如何在 iServer 全局设置页面中设置临时资源存储配置。

  • 支持的存储类型:【必选】支持的存储类型包括
    Encache、Redis、MongoDB、HSQLDB、Caffeine、PostgreSQL。
  • 最大磁盘空间:【选择 Encache 存储类型时必填】最大磁盘空间默认为10 G,您可以按照实际情况进行调整。
  • 最大内存:选择 Encache 存储类型时设置的最大内存,默认为100 M。
  • 缓存最大对象数:【当选择 Caffeine 时必填】缓存最大对象数默认为 1000,您可以按照实际情况进行调整。
  • 磁盘存储路径:磁盘的存储路径,默认为 java.io.tmpdir\tmpResources,指向【SuperMap iServer
    安装目录】\temp\tmpResources 目录。
  • 服务器地址:【当选择 Redis、PostgreSQL、MongoDB 以及不在本机上的 HSQLDB 时必填】数据库的服务地址,如
    ‘192.168.17.217:27017’。
  • 用户名:该数据库所有者的用户名。
  • 密码:该数据库所有者的密码。
  • 数据库名称:【当选择 MongoDB 时必填,且应为一个已存在的数据库】存储临时资源的数据库名称。
  • 临时资源失效时间(小时):临时资源的失效时间,单位为小时。
  • 访问后过期时间(小时):设置过一定时间后不访问(读取或者写入),存储的数据会被销毁,过期时间单位为小时。
  • 缓存个数:在 PostgreSQL 中最高支持存储的缓存数量,如不设置则使用默认值
    100。当缓存数量达到上限时,将删除近期使用最少的缓存记录。

三、临时资源的存储与生命周期

临时资源生命周期的管理采取以下策略:

  • 在确保服务器端内存、硬盘空间等资源占用可控的前提下尽可能延长生命周期,或选择将临时资源存储在MongoDB中。
  • 此外,生命周期内,重启服务后,存储在本地的临时资源会被清空。
  • 此处主要为您介绍如何在配置文件中配置临时资源存储
1.使用本地存储临时资源

您可以在系统配置文件(【SuperMap iServer 安装目录】\webapps\iserver\WEB-INF\iserver-system.xml)中,设置使用本地存储临时资源,包括内存空间阈值maxBytesOnHeap和磁盘空间阈值maxBytesLocalDisk。其中,maxBytesOnHeap 默认为100M,maxBytesLocalDisk 默认为10G,您可根据需要,自行设置所需的空间大小。还支持添加参数,设置临时资源在磁盘中存存储路径,默认的存储路径为【SuperMapiServer Java 安装目录】\temp\tmpResources。清理临时资源时使用的算法,可以通过添加参数来设置。此外, 更多参数设置请参考:EhcacheRepoSetting

100m 10g D:\SuperMapiServer8C\temp\tmpResources LRU 120

(1).内存空间阈值

由于临时资源存放在内存中可以保证存取的效率,但是占用的内存空间太大时又会影响服务器运行效率,因此需要设置一个相对合理的内存空间阈值。当临时资源占用的内存超过这个阈值的时候,服务端将默认采用 LRU 算法(Least Recently Used)对临时资源进行处理,即把最近最少使用的临时资源缓存删除。删除临时资源的算法默认为LRU算法,可以通过参数来设置。
(2).硬盘二级缓存阈值

由于保存在内存中的临时资源有限,为保证其存活周期,iServer支持将临时资源保存在硬盘中,如果客户端请求的资源在内存中访问不到,系统会去硬盘中查找。当这些临时资源缓存占用的空间太大时,同样可能会影响服务器的运行,因此也需要设置保存临时资源的磁盘空间阈值。当临时资源占用的磁盘空间超过这个阈值的时候,将进行缓存清理。缓存清理时,同样采用 LRU 算法。

2.使用MongoDB存储临时资源

由于本地存储临时资源的资源存储空间有限,因此存活时间也会受限。SuperMap iServer 支持使用 MongoDB 存储临时资源,可有效延长临时资源的存活时间。此外,MongoDB 也可用于多进程模式下的临时资源存储,使各进程间资源可共享。

配置 MongoDB 存储临时资源的方法为:在系统配置文件中,开启“基于MongoDB的临时资源存储配置”,并注释本地存储配置。如下:

  • 基于MongoDB的临时资源存储配置
  <repository class="com.supermap.services.rest.repository.MongoDBObjSerializeRepoProvider" name="mongoRepository"> 
    <config class="com.supermap.services.rest.repository.MongoDBRepoSetting"> 
        <host>localhost</host>
        <port>27017</port>
        <dbName>SuperMap</dbName>
    </config> 
  </repository> 

在host参数中输入您使用的MongoDB的服务地址,在port参数中输入端口号,在dbName中输入数据库名称(此处需要输入已存在的数据库名称)。如果使用的MongoDB开启了安全控制,通过添加和参数,添加数据库的用户名和密码。

3.使用 Redis 存储临时资源

SuperMap iServer 支持将临时资源存储在 Redis 中,也支持将其用于多进程模式下的临时资源存储,使各进程间资源可共享。配置 Redis 临时资源存储的方法为:在 iserver-system.xml 文件中开启“基于 Redis 的临时资源存储配置”,并注释其他类型的临时资源存储配置。

  • 基于 Redis 的临时资源存储配置
<repository class="com.supermap.services.rest.repository.RedisRepoProvider">
    <config class="com.supermap.services.rest.repository.RedisRepoSetting">
      <type>Redis</type>  
      <host>192.168.17.116</host>  
      <port>6379</port>  
      <username>SuperMap</username>  
      <password>SuperMap</password> 
    </config>
</repository> 
<host>:【必填】Redis 的服务地址。
<port>:【必填】Redis 端口号,默认为 6379。
<username>:数据库所有者的用户名。
<password>:该数据库所有者的密码。
4.使用HSQLDB存储临时资源

在多进程模式下,当iServer系统配置文件中没有临时资源存储配置,或设置的临时资源存储配置(如本地存储)不支持在多进程模式下使用时,则默认使用HSQLDB存储临时资源。在单进程模式下,您也可以配置使用HSQLDB存储,使同一台机器中的多个iServer共享临时资源。

配置HSQLDB存储临时资源的方法为:在系统配置文件中,开启“基于HSQLDB的临时资源存储配置”,并注释本地存储配置和MongoDB存储配置。如下:

  • 基于HSQLDB的临时资源存储配置
<repository class="com.supermap.services.rest.repository.HsqldbRepoProvider" name="localRepository"> 
                <config class="com.supermap.services.rest.repository.HsqldbRepoSetting"> 
                       <port>10070</port>  
                       <startServer>true</startServer> 
                </config> 
</repository> 

在参数中填设置HSQLDB存储端口号,默认为10070。参数表示是否启动HSQLDB。当一台机器中启动了多个iServer时,只需在其中一个iServer中设置该参数,并将值设置为true。

注意:
如果在配置文件中,同时设置了多种临时资源存储方式,则默认使用文件中的第一种。

5.使用 Caffeine 存储临时资源

iServer 支持将临时资源存储在 Caffeine 中,Caffeine 是一种内存缓存。配置 Caffeine 临时资源存储的方法为:在 iserver-system.xml 文件中开启“基于 Caffeine 的临时资源存储配置”,并注释其他类型的临时资源存储配置。当完成以上配置后启动 iServer,Caffeine 缓存即可用。

  • 基于 Caffeine 的临时资源存储配置
<repository class="com.supermap.services.rest.repository.CaffeineRepoProvider" name="localRepository"> 
                <repository class="com.supermap.services.rest.repository.CaffeineRepoProvider" name="localRepository"> 
                       <maximumSize>1000</maximumSize> 
                       <expireAfterAccess>3.0</expireAfterAccess> 
                </config> 
</repository> 
<maximumSize>:缓存的最大对象数
<expireAfterAccess>:访问后过期时间,即过一定时间后不访问(读取或者写入),存储的数据会被销毁,过期时间单位为小时。
6.使用 PostgreSQL 存储临时资源

iServer 支持将临时资源存储在 PostgreSQL 中,PostgreSQL 是一种内存缓存。配置 PostgreSQL 临时资源存储的方法为:在 iserver-system.xml 文件中开启“基于 PostgreSQL 的临时资源存储配置”,并注释其他类型的临时资源存储配置。以上配置完成后 PostgreSQL 缓存即可用,无需启动 iServer。

  • 基于 PostgreSQL 的临时资源存储配置
<repository class="com.supermap.services.rest.repository.PostgresRepoProvider"> 
                <config class="com.supermap.services.rest.repository.PostgresRepoSetting"> 
                       <type>Postgres</type> 
                       <host>192.168.17.222</host> 
                       <port>5423</port> 
                       <username>username</username>
                       <password>yubokLIRWThaAAhkOXBtiw..</password> 
                       <dbName>dbName</dbName>
                       <cacheSize>21</cacheSize>
                       <expireTime>3</expireTime>
                       <deleteTimeSpan>2</deleteTimeSpan>
                </config> 
</repository> 
<cacheSize>:缓存个数,指在 PostgreSQL 中最高支持存储的缓存数量,如不设置则使用默认值 100。当缓存数量达到上限时,将删除近期使用最少的缓存记录。
<expireTime>:资源过期时限,单位为分钟。从该资源最后一次被使用起算,若持续未使用的时长大于资源过期时限,则 iServer 将判断该资源过期。 
<deleteTimeSpan>:删除过期数据库资源的时间间隔,单位为分钟。该操作的起算时间为初次使用 PostgreSQL临时资源存储的时间,每至设置的间隔时间点,将删除过期的资源。

四、补充

1.设置存活时间阈值

临时资源的缓存不论存在于内存空间还是硬盘中,当超过一定存活时间时,临时资源缓存将直接被删除。
SuperMap iServer Java 6R(2012) SP1及以前的版本中,某些资源如 tempLayersSet、trackingLayer、queryResults 的临时子资源的生命周期是通过 holdTime 参数来控制的,客户端或用户可以设置临时资源的存活时间,默认为15(分钟)。
SuperMap iServer Java 6R(2012) SP2 及以后的版本中,支持在服务配置文件(iserver-services-interfaces.xml)中设置接口配置参数 defaultHoldTime,用于设定临时资源(如 tempLayersSet、trackingLayer、queryResults 等)默认保存时间,默认为7天,设置后对 REST 接口的所有临时资源的存活时间都生效。 设置方法为:

<interface class="com.supermap.services.rest.RestServlet" name="rest">
        <config class="com.supermap.services.rest.RestConfig">
                <accessControlAllowOrigin>*</accessControlAllowOrigin>
                <!--  rest 资源默认保存时间,单位是分钟-->
                <defaultHoldTime>10080</defaultHoldTime>
        </config>
</interface>
<interface class="com.supermap.services.rest.JaxrsServletForJersey" name="restjsr">
        <config class="com.supermap.services.rest.JaxrsConfigForJersey">
                <accessControlAllowOrigin>*</accessControlAllowOrigin>
                <!--  rest 资源默认保存时间,单位是分钟-->
                <defaultHoldTime>10080</defaultHoldTime>
        </config>
</interface> 
2.临时资源列表

所有 POST 请求创建的资源都为临时资源,具体资源示例如下:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值