潤乾報表叢集快取同步功能介紹
目前伺服器的叢集,大多是使用 session 同步的方法解決的問題,即讓叢集中一臺電腦的 session 在叢集伺服器發生相互之間跳轉的時候,把 session 也同時複製到相應的電腦上。例如:在叢集伺服器中,第一次訪問 A 機器,第二次跳轉到 B 機器繼續訪問,伺服器會自動把 A 機器產生的 session 的內容複製到 B 機器上,使得訪問正常進行,從而實現伺服器之間負載更加均衡。
但是潤乾報表的快取機制有所不同,潤乾的快取是基於硬碟的,會把快取檔案儲存到電腦的硬碟上。但是這樣在叢集伺服器上就造成了如下問題:當客戶端第一次訪問 A 機器時產生的報表儲存在 A 機器的快取目錄下,第二次訪問跳轉到 B 機器時,B 機器無法從 A 機器的本地硬碟上取得快取的報表。為了解決這個問題,潤乾採取了叢集快取同步的功能。
首先介紹一下叢集快取同步功能的概念。叢集快取同步是指:客戶端在多次訪問叢集伺服器的不同主機時,伺服器之間可以進行報表快取的同步,使得客戶端能夠返回正確的結果而不需要重新計算。
然後需要知道,潤乾報表快取相關的配置方法要在 reportconfig.xml 中設定,reportconfig.xml 的路徑為:潤乾 web 應用根目錄下的 WEB-INF/reportConfig.xml,其中所有快取相關的可配置屬性如下:
< !– 配置快取機器和快取埠號–>
< name>clusterMember
< value>A,192.168.0.59,8087;B,192.168.0.48,8087;
< /config>
< config>
< !– 配置是否共享快取目錄–>
< name>isCachedFileShared
< value>yes
< /config>
< config>
< !– 配置快取共享目錄–>
< name>cachedReportDir
< value>\\192.168.0.59\cached
< /config>
< config>
< !– 配置快取 id 的字首,注意叢集時不同機器用不同的字首–>
< name>cachedIdPrefix
< value>A
< /config>
在上面的可配置屬性中,其中 clusterMember 屬性指定了系統快取字首,所有叢集的伺服器結點,每個伺服器結點與快取伺服器間的通訊介面。它的格式是:”快取字首,對應電腦的 IP 地址,訪問電腦的埠號;…”,叢集中有多少臺電腦要用到叢集快取同步機制,那麼就要在這裡按照上面的格式,把這些電腦一一配置好。
第二個重要屬性是 isCachedFileShared,它的取值範圍是 yes 或者 no,它的作用是是否共享本地硬碟上的快取目錄和檔案。設定為 yes 的時候快取目錄和檔案被共享,可以在叢集伺服器中訪問到電腦硬碟上的快取,如果設定為 no,那麼快取不能被共享,也就不能被叢集中的其他電腦得到。必須注意的是,如果它的值為 yes,那麼必須設定 cachedReportDir 屬性的值,cachedReportDir 的作用是配置快取共享目錄,潤乾報表的快取將被儲存到這個目錄下,所以 cachedReportDir 的值需
為一個可讀寫的訪問路徑。
根據上面 reportconfig.xml 的例子和屬性說明配置好這個配置檔案後,叢集快取同步的配置就基本完成了,這個就可以在叢集伺服器中相互跳轉的時候取到潤乾報表的快取檔案了,也就成功解決了以前採用 session 複製的方法不能取到本地硬碟上快取的問題。