报表知识库
我要提问

润乾报表集群缓存同步功能介绍

目前服务器的集群,大多是使用session同步的方法解决的问题,即让集群中一台电脑的session在集群服务器发生相互之间跳转的时候,把session也同时复制到相应的电脑上。例如:在集群服务器中,第一次访问A机器,第二次跳转到B机器继续访问,服务器会自动把A机器产生的session的内容复制到B机器上,使得访问正常进行,从而实现服务器之间负载更加均衡。

但是润乾报表的缓存机制有所不同,润乾的缓存是基于硬盘的,会把缓存文件保存到电脑的硬盘上。但是这样在集群服务器上就造成了如下问题:当客户端第一次访问A机器时产生的报表保存在A机器的缓存目录下,第二次访问跳转到B机器时,B机器无法从A机器的本地硬盘上取得缓存的报表。为了解决这个问题,润乾采取了集群缓存同步的功能。

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

然后需要知道,润乾报表缓存相关的配置方法要在reportconfig.xml中设置,reportconfig.xml的路径为:润乾web应用根目录下的WEB-INF/reportConfig.xml,其中所有缓存相关的可配置属性如下:

<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>

在上面的可配置属性中,其中clusterMember属性指定了系统缓存前缀,所有集群的服务器结点,每个服务器结点与缓存服务器间的通讯接口。它的格式是:”缓存前缀,对应电脑的IP地址,访问电脑的端口号;…”,集群中有多少台电脑要用到集群缓存同步机制,那么就要在这里按照上面的格式,把这些电脑一一配置好。

第二个重要属性是isCachedFileShared,它的取值范围是yes或者no,它的作用是是否共享本地硬盘上的缓存目录和文件。设置为yes的时候缓存目录和文件被共享,可以在集群服务器中访问到电脑硬盘上的缓存,如果设置为no,那么缓存不能被共享,也就不能被集群中的其他电脑得到。必须注意的是,如果它的值为yes,那么必须设置cachedReportDir属性的值,cachedReportDir的作用是配置缓存共享目录,润乾报表的缓存将被保存到这个目录下,所以cachedReportDir的值需

为一个可读写的访问路径。

根据上面reportconfig.xml的例子和属性说明配置好这个配置文件后,集群缓存同步的配置就基本完成了,这个就可以在集群服务器中相互跳转的时候取到润乾报表的缓存文件了,也就成功解决了以前采用session复制的方法不能取到本地硬盘上缓存的问题。