填报集群的部署与访问
为便于多台应用服务器能够相互访问填报表资源(缓存文件),润乾报表提供了填报集群的使用。使用前需要为多台服务器配置集群设置,接下来会逐步介绍填报集群的部署与访问。
部署
润乾填报缓存相关的配置要在 raqsoftConfig.xml 中设置,raqsoftConfig.xml 的路径为:润乾 Web 应用根目录下的 WEB-INF/raqsoftConfig.xml,其中所有与填报缓存有关的可配置属性如下:
<Server>
<property name="inputCachedIdPrefix" value="inputA"/>
<property name="inputRemoteCached" value="false"/>
<property name="inputClusterMember" value="inputA,192.168.2.121,8008;inputB,192.168.2.117,8088"/>
</Server>
1. inputCachedIdPrefix 属性:集群环境中自定义的机器名,用以生成填报缓存 id 的前缀,集群时不同机器应设置不同的前缀。
2. inputRemoteCached 属性:在填报集群环境中,远程访问其他机器的填报缓存时是否在本地生成缓存文件。缺省值是 false。
3. inputClusterMember 属性:指定了填报缓存前缀和所有集群的服务器节点,目的是实现填报集群机器之间的缓存同步。它的格式是:“缓存前缀,对应电脑的 IP 地址,访问电脑的端口号;… ”。集群中有多少台电脑要用到填报集群缓存同步机制,就要在这些电脑上一一配置好。
本次演示以两台电脑为例:机器 A 和机器 B
机器 A:
IP 地址:192.168.2.121 可用端口号:8008
raqsoftConfig.xml 配置如下:
<Server>
<property name="inputCachedIdPrefix" value="inputA"/>
<property name="inputRemoteCached" value="false"/>
<property name="inputClusterMember" value="inputA,192.168.2.121,8008;inputB,192.168.2.117,8088"/>
</Server>
机器 B:
IP 地址:192.168.2.117 可用端口号:8088
raqsoftConfig.xml 配置如下:
<Server>
<property name="inputCachedIdPrefix" value="inputB"/>
<property name="inputRemoteCached" value="false"/>
<property name="inputClusterMember" value="inputA,192.168.2.121,8008;inputB,192.168.2.117,8088"/>
</Server>
访问
机器 A 上有一个填报表文件 Test.sht,机器 A 在本地访问 Test.sht 文件时用 showInput.jsp,在浏览器中输入访问路径:http://localhost:6868/demo/reportJsp/showInput.jsp?sht=G:/Test.sht&sgid=inputA_test 其中:sgid 为填报表的缓存 id,该参数是自定义的,命名规则:机器 A 的机器名 + 下划线(_)+ 自定义名字。机器 A 预览效果如下:
当机器 A 在本地访问 Test.sht 文件后,会在填报表的缓存目录生成对应的缓存文件:
此时机器 B 想要远程访问机器 A 的 Test.sht 文件,只需要访问 inputA_test 缓存文件,这样可以减少报表计算。机器 B 只需要启动服务器,在浏览器中输入访问路径:http://localhost:6868/demo/reportJsp/showInput.jsp?sgid=inputA_test 其中:sgid 的标识是寻找机器 A 上的 inputA_test 缓存文件。机器 B 预览效果如下:
数据回填
当机器 B 想要回填数据到机器 A 时,分 2 种情况:
1. 机器 A 本地的缓存未更新
机器 B 修改员工表编号为 1 的员工工资为 8888,提交数据:
此时机器 A 刷新,即得到机器 B 提交的修改数据:
2. 机器 A 本地的缓存已更新
当机器 B 访问的缓存文件不是最新文件时,会提示如下:
此时需要刷新一下页面,得到最新的缓存文件,再提交修改数据。
注意事项
(1)集群的主机之间能够相互访问,最好在同一个网段,保证能够 ping 通。
(2)集群的机器设置端口号时,应选择空闲的可用端口。
(3)当集群中的多台机器同时访问修改同一个缓存文件,提交修改数据时,应保证提交的先后顺序,避免后提交的数据覆盖先提交的数据。