填报集群的部署与访问

  为便于多台应用服务器能够相互访问填报表资源(缓存文件),润乾报表提供了填报集群的使用。使用前需要为多台服务器配置集群设置,接下来会逐步介绍填报集群的部署与访问。

部署

  润乾填报缓存相关的配置要在 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 预览效果如下:
inputApng
  当机器 A 在本地访问 Test.sht 文件后,会在填报表的缓存目录生成对应的缓存文件:
inputA_testpng

  此时机器 B 想要远程访问机器 A 的 Test.sht 文件,只需要访问 inputA_test 缓存文件,这样可以减少报表计算。机器 B 只需要启动服务器,在浏览器中输入访问路径:http://localhost:6868/demo/reportJsp/showInput.jsp?sgid=inputA_test 其中:sgid 的标识是寻找机器 A 上的 inputA_test 缓存文件。机器 B 预览效果如下:
inputA1png

数据回填

  当机器 B 想要回填数据到机器 A 时,分 2 种情况:

  1. 机器 A 本地的缓存未更新
  机器 B 修改员工表编号为 1 的员工工资为 8888,提交数据:
inputA1_submitpng
  此时机器 A 刷新,即得到机器 B 提交的修改数据:
inputA_refreshpng

  2. 机器 A 本地的缓存已更新
  当机器 B 访问的缓存文件不是最新文件时,会提示如下:
inputA_submit_failedpng
  此时需要刷新一下页面,得到最新的缓存文件,再提交修改数据。

注意事项

 (1)集群的主机之间能够相互访问,最好在同一个网段,保证能够 ping 通。
 (2)集群的机器设置端口号时,应选择空闲的可用端口。
 (3)当集群中的多台机器同时访问修改同一个缓存文件,提交修改数据时,应保证提交的先后顺序,避免后提交的数据覆盖先提交的数据。