集群时缓存同步

客户端在多次访问集群服务器的不同主机时,服务器之间可以进行报表缓存的同步,使得客户端能够返回正确的结果而不需要重新计算。

功能背景:

目前服务器的集群,经常使用session同步的功能,在这种情况下,允许同一个客户端,第一次访问A机器,第二次跳转到B机器继续访问,服务器会自动把A机器产生的session的内容复制到B机器上,使得访问正常进行,从而实现服务器之间负载更加均衡。

润乾报表的缓存是在硬盘上做的,于是当客户端第一次访问A机器时产生的报表保存在A机器的缓存目录下,第二次访问跳转到B机器时,就无法获取缓存报表了,为了解决这个问题,我们采用了缓存同步的功能。

使用方法:

1.  在润乾报表web应用根目录下的WEB-INF/raqsoftConfig.xml文件中进行配置,可配置的属性包括:

<!--  配置缓存机器和缓存端口号-->

<property name="clusterMember" value="A,192.168.0.59,8087;B,192.168.0.48,8087" />

<!--  配置是否共享缓存目录-->

<property name="isCachedFileShared" value="yes" />

<!--  配置缓存共享目录-->

<property name="cachedReportDir" value="\\192.168.0.59\cached " />

<!--  配置缓存id的前缀,注意集群时不同机器用不同的前缀-->

<property name="cachedIdPrefix" value="A" />

<!-- 是否每次重新装载报表模板 -->

<property name="alwaysReloadDefine" value="no" />

 

其中clusterMember属性指定了系统缓存前缀,所有集群的服务器结点,每个服务器结点与缓存服务器间的通讯接口。它的格式是:“缓存前缀,IP,端口;…”。第二个重要属性是isCachedFileShared,它的取值范围是yes或者no,由它控制是否使用共享的缓存目录。如果它的值为yes,那么必须设置cachedReportDir属性的值为一个可读写的访问路径。第三个重要属性是alwaysReloadDefine,取值为yes或者no设置alwaysReloadDefinevalueno时,可以实现模板之间的共享

 

2.  重起服务器,即可实现集群时缓存同步。