润乾报表性能管理之集群缓存同步功能

功能背景:
目前服务器的集群,经常使用session同步的功能,在这种情况下,允许同一个客户端,第一次访问A机器,第二次跳转到B机器继续访问,服务器会自动把A机器产生的session的内

容复制到B机器上,使得访问正常进行,从而实现服务器之间负载更加均衡。
润乾报表的缓存是在硬盘上做的,于是当客户端第一次访问A机器时产生的报表保存在A机器的缓存目录下,第二次访问跳转到B机器时,就无法获取缓存报表了,为了解决这个问题

,推出了缓存同步的功能。
实现原理:
客户端第一次访问报表服务器A,A机器计算了报表并在A机器作了缓存,当客户端第二次访问时,例如此时跳转到B机器,B机器根据缓存id的前缀判断出是A机器做的缓存,于是B机

器向A机器发送缓存请求,A机器读取缓存并把缓存结果发送给B机器,B机器再把结果返回给客户端。

实现这个功能,需要做如下的配置:

<config> <!– 配置缓存机器和缓存端口号–>
<name>clusterMember</name>
<value>A,192.168.0.59,8087;B,192.168.0.48,8087;</value>
</config>
<config> <!– 配置是否共享缓存目录–>
<name>isCachedFileShared</name>
<value>yes</value>
</config>
<config> <!– 配置缓存共享目录–>
<name>cachedReportDir</name>
<value>\\192.168.0.59\cached</value>
</config>
<config> <!– 配置缓存id的前缀,注意集群时不同机器用不同的前缀–>
<name>cachedIdPrefix</name>
<value>A</value>
</config>
需要注意的是,目前集群缓存同步存在以下问题:
1、 目前只实现了报表缓存的同步,没有实现参数缓存的同步。
2、 也就是说,用户第一次访问A机器时,不仅仅把报表缓存下来了,还把参数缓存在内存了,有一个参数缓存id。当客户端第二次访问时,如果报表缓存过期了,被清除了,

系统会根据参数缓存id重新进行报表运算,这个过程对用户是透明的。可是如果参数缓存id没有,就只好要求你重新输入参数。
3、 当客户端第二次访问时如果跳转到B机器,而此时恰恰报表缓存过期了被清除了,系统就会找不到参数缓存id,因为参数缓存没有被同步。
4、 一般来说,当翻页、打印、导出时,会遇到上述现象。

热门文章