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

目前服务器的集群,大多是使用 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 复制的方法不能取到本地硬盘上缓存的问题。