30.3. 配置Session存储

Apusic默认的Session存储是采用文件数据库的,当用户想更改Session存储方式时,可以将%DOMAIN_HOME%\config\apusic.conf中的文件数据库存储服务替换成其它存储方式,配置如下:

1)默认的Session文件存储服务配置:

<SERVICE
    CLASS="com.apusic.web.session.FileSessionStoreService"
    >
    <ATTRIBUTE NAME="Directory" VALUE="store/http_sessions"/>
    <ATTRIBUTE NAME="RebuildStoreOnShutDown" VALUE="true"/>
    <ATTRIBUTE NAME="RebuildStoreOnMaxFileSize" VALUE="1024"/>
    <ATTRIBUTE NAME="RebuildStoreOnSchedule" VALUE="0 0 18 1 * * *"/>
</SERVICE>

其中:

Directory:为Sesssion存储目录。

RebuildStoreOnShutDown:是否在AAS关闭的时候进行Rebuild。

RebuildStoreOnMaxFileSize:确定在session文件达到多大的时候,进行Rebuild。单位为MB

RebuildStoreOnSchedule:用于定时Rebuild,值是一个时间的表达式。

[提示]提示

时间表达式的说明

顺序
范围0-590-590-231-311-12 1-7

每一字段可以是上述范围内的一个整数,或者为“*”,当为一个整数时,表示一个确定的时间,“*”表示该字段任意。各字段用空格隔开。 如:0 0 18 1 * * * 表示每年每月的一号下午6点整。 当最后的周字段被设置时,其会覆盖日字段,表示每周的周几。

如:当前日期为2011-6-22,星期三,若时间格式为:“ 0 0 18 20 * * 1” 表示从当前日期,即6-22日开始,每周的周一下午6点整。也就是下一次时间为2011-6-27 18:0:0。

三个策略,可以同时配置,同时生效。也可以配置其中的任意几个。

若三个都没有配置,则使用RebuildStoreOnMaxFileSize策略,默认的session文件大小为1024MB。

2)嵌入式数据库存储配置:

<SERVICE
    CLASS="com.apusic.web.session.DBSessionStoreService"
    >
    <ATTRIBUTE NAME="Directory" VALUE="store/http_sessions"/>
    <ATTRIBUTE NAME="RebuildStoreOnShutDown" VALUE="true"/>
    <ATTRIBUTE NAME="RebuildStoreOnMaxFileSize" VALUE="1024"/>
    <ATTRIBUTE NAME="RebuildStoreOnSchedule" VALUE="0 0 18 1 * * *"/>
</SERVICE>

其中属性同上(文件存储)。

3)关系数据库存储配置:

<SERVICE
    CLASS="com.apusic.web.session.SQLSessionStoreService"
    >
    <ATTRIBUTE NAME="DataSourceName" VALUE="java:/jdbc/apusic"/>
    <ATTRIBUTE NAME="TableName" VALUE="t_httpsession"/>
</SERVICE>

其中属性DataSourceName为数据源的JNDI名,TableName为Session存储的数据库中表的名称。

4)分布式存储:

<SERVICE
    CLASS="com.apusic.web.session.CacheSessionStoreService"
    >
    <ATTRIBUTE NAME="ServerAddress" VALUE="192.168.6.66:11211,192.168.6.67:11211"/>
    <ATTRIBUTE NAME="BackupServerAddress" VALUE="192.168.6.76:11211,192.168.6.77:11211"/>
    <ATTRIBUTE NAME="Weights" VALUE="1,2"/>
    <ATTRIBUTE NAME="Failover" VALUE="True"/>
    <ATTRIBUTE NAME="ConnectionPoolSize" VALUE="1"/>
    <ATTRIBUTE NAME="BinaryProtocol" VALUE="False"/>
    <ATTRIBUTE NAME="TokyoTyrant" VALUE="False"/>
    <ATTRIBUTE NAME="ConsistentHash" VALUE="False"/>
    <ATTRIBUTE NAME="LocalCacheImpl" VALUE="2"/>
    <ATTRIBUTE NAME="LocalCacheSize" VALUE="20480"/>
    <ATTRIBUTE NAME="SyncInterval" VALUE="2"/>
</SERVICE>

其中:

ServerAddress:分布式Session存储数据库节点列表;形如“节点1:port,节点2:port“的字符串,节点间用逗号隔开。

BackupServerAddress : 备份节点列表,格式同上,备份节点顺序和主节点顺序一一对应。

Weights : 节点权重,大于零。形如:“1,2”的字符串,权重间用逗号隔开。

Failover:是否为失效转移模式。当为失效转移模式时,当一个节点挂掉后,它的key值将被分配到其它节点。若为非失效转移时,当某个节点挂掉的时候,不会从节点列表移除,请求也不会转移到下一个有效节点,而是直接将请求置为失败。

ConnectionPoolSize :NIO连接池大小,默认为1。

BinaryProtocol : 是否使用二进制协议。默认为False。

TokyoTyrant :是否使用TokyoTyrant服务器,默认为False。

ConsistentHash : 是否使用一致性哈希,默认为False。

LocalCacheImpl : 使用本地缓存的那种实现方式,0表示不使用缓存,2表示使用第二种缓存实现方式。

LocalCacheSize : 开启本地缓存后,设置缓存Sesion的个数,默认值为204800。

SyncInterval : 开启本地缓存后,缓存同步到存储的时间间隔,默认为2秒。

5)redis存储:

<SERVICE
    CLASS="com.apusic.web.session.RedisSessionStoreService"
               >
    <ATTRIBUTE NAME="ConfigPath" VALUE="config/redis_session.properties"/>
    <ATTRIBUTE NAME="Shard" VALUE="false"/>
</SERVICE>

其中:

ConfigPath是redis客户端的参数配置文件。

shard表示是否采用客户端集群,true表示采用,false表示采用单台redis服务器(默认是false)。

也可以开启本地缓存实现,配置与说明同 CacheSessionStoreService中属性的说明。

redis_session.properties配置:

非客户端集群模式,只需修改config/redis_session.properties文件中的host和port为相应redis服务器的ip和端口。

客户端集群模式,需先修改 apusic.conf中RedisSessionStoreService服务中属性Shard的值为true,然后修改config/redis_session.properties文件中的host和port及shareInfoList中的值为相应redis服务器的ip和端口。