何文民
(中國直升機設計研究所 江西省景德鎮市 333001)
協同辦公系統是包括公文管理、協同辦公、數據交換、信息安全的企業辦公系統。隨著協同辦公系統的深入使用,尤其是附件數據量的急劇膨脹,通過數據庫存儲附件方式給協同辦公系統帶了很多負面的影響,不但降低系統響應速度,而且數據備份與恢復也變得更加困難,一旦系統發生故障,很難在短時間內完成系統恢復工作。協同辦公系統是一套包括公文管理、協同辦公、數據交換、安全管理的企業協同辦公系統,其業務范圍涵蓋了收文、發文、呈批件、事務督辦、會議管理、電子數據輸入輸出、VPN 數據輸入輸出等,可大大提高我所辦公效率,降低企業運行成本。然而,隨著系統的深入使用與兩地協同辦公,我所也對現有系統提出了更高的要求,不但肩負著日常辦公的重要任務,還成為大文件傳輸、存儲、共享的工具。在大數據時代的背景下,用戶數據與存儲文件呈爆炸式的增長,原有數據存儲方式給系統帶了很多負面的影響,不但降低系統響應速度,而且數據備份與恢復也變得更加困難,一旦系統發生故障,很難在短時間內完成系統恢復工作。
為了使協同辦公系統高效穩定運行、異地辦公、系統容災備份的可操作性和可行性,必須實現系統數據分離和異地存儲。為了解決系統數據分離和異地存儲問題,本文結合系統工程和IT 架構等方面的思想方法,對系統進行重新構建,提出通過FastDFS 對系統中附件進行存儲管理,更好的解決系統數據分離和異地存儲,加快系統訪問。
協同辦公系統是基于BS 框架,并與BPM 流程關聯,數據存儲是通過Oracle 數據庫進行存儲與訪問。系統架構是AD 認證層、業務功能層和系統支持層由三層組成。通過AD 域用戶統一身份登入,業務功能主要有公文管理、協調辦公、數據交換與安全管理等功能模塊,其中業務都與BPM 流程關聯,系統在J2EE 平臺進行實現。但是隨業務表單與附件數據日益增加,新增業務流程不斷增加,特別是業務表單附件,通過數據庫BLOB 類型數據進行存儲,導致系統數據庫中數據急劇增大,每周都要不定時對系統數據庫進行擴容,同時還造成用戶訪問效率變慢,對系統數據庫備份十分困難。
隨著我所異地辦公,對系統進行訪問,訪問效率十分慢。常用發文管理與收文管理進行流程審批很慢,數據輸出表單在上傳附件時,時常無法上傳。通過對現有系統架構與使用場景的分析,發現系統附件是通過oracle 數據庫Bolg 進行存儲,導致oracle 數據庫存儲空間不足和Bolg 空間的浪費,隨著附件數量增加,文件的檢索速度會減慢。因此,必須對系統架構和服務部署進行改造。將表單附件必須從系統數據庫分離,減輕系統對數據庫的訪問;兩地對服務訪問進行分布式部署,減少并發量,提高訪問效率。

圖1:系統架構

圖2:附件上傳時序圖
Hadoop 計算平臺被廣泛的用來處理海量的大數據,Hadoop 分布式文件系統是為處理流式訪問大文件提出[1]的,在處理大量小文件上,效率很低,會導致內存空間不足和Block內存空間的大量浪費,并隨著小文件數量的增加,文件的檢索速度會受影響;FastDFS 是一個開源的輕量級分布式文件系統[2],與其它應用級的分布式文件系統相比,它是一款量級輕的軟件,能滿足大量用戶的并發訪問與存儲,在客戶端發送存取文件請求,跟蹤服務器(tracker)進行調度,存儲服務器(storage)進行文件存儲。它對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。文件服務器中存儲的文件都經過了AES 加密處理,保證文件的安全性,一旦發生文件被竊取的情況,也能防止文件中的信息泄露。

表1:附件數據表的結構

圖3:服務兩地部署
鑒于對現有系統分析與FastDFS 存儲特點,結合分布式系統的架構模型,可以將系統架構改造為基于FastDFS 分布式存儲系統架構,如圖1 所示。
主要由四部分組成,從上至下分別是:AD 認證層、業務功能層、系統支持層和數據存儲層。AD 認證層是基于B/S 模式,通過域帳號進行AD 域認證登入系統,系統通過Web 瀏覽器展現系統各個功能。業務功能層主要是由各個功能模塊所組成,來實現系統主要功能,其中主要有公文管理、協調辦公、數據交換與安全管理等功能模塊,收發文管理、呈批件、事務督辦、會議管理和數據輸入輸出子模塊業務都與BPM 流程關聯,進行相應流程審批;安全管理主要進行日志與用戶安全監控管理,實現系統進行三員管理。系統支撐層主要支撐系統正常運行,系統是在J2EE 平臺下實現,由jdk 基礎開發包和新增FastDfsUtil 插件組成,其中FastDfsUtil 對FastDFS 進行文件上傳、下載與刪除。數據存儲層主要是對系統數據和附件進行存儲,主要由Oracle 數據庫和FastDFS 分布式文件服務器組成,其中Oracle 數據庫存儲系統表單、流程和系統數據,而FastDFS 分布式文件服務器主要存儲系統附件。
結合改進系統架構,對系統的異地附件上傳與下載運行機制進行分析與設計,storage 服務器將定時向tracker 上傳狀態信息,如圖2 中第1 步與第2 步。
當用戶要上傳附件時,根據用戶所在地址,如A 地用戶上傳附件,過程如下所述:首先,用戶通過Web 瀏覽器向應用服務器發送上傳附件,應用服務器向tracker 服務器發送上傳請求;其次,tracker 服務器根據訪問地址進行判斷是A 地,獲取部署在A 地可用的storage 服務器,并向應用服務器返回storage 服務器的ip 和port;然后,應用服務器根據storage 服務器的ip 和port 向相應的storage 服務器上傳附件,storage 服務器會生成fid 和存儲附件,并向應用服務器返回fid;最后,應用服務器把fid 存儲到Oracle 數據庫中,如圖2中第3步到第11步所示。當在B地用戶進行上傳附件時,同理,如圖2 中第12 步到第20 步所示。
生成的文件標識符fid 信息主要由四部分組成,即:分組的組名,磁盤路徑,兩級目錄和HASH 算法生成新的文件名稱。具體形式如下所示,

根據系統架構與附件訪問分析,由于A 地與B 地局域網連接是通過專用網互聯,公司總部是在A 地,對系統訪問量也比較大,因此,將應用服務器和數據庫部署在A 地。分別在兩地都部署一套文件服務器,便于存儲空間擴容,兩地都部署相應的磁盤陣列,系統相關服務器部署如圖3 所示。在文件服務器A 上安裝tracker服務和storage 服務,文件服務器B 上安裝storage 服務。在應用服務器設置兩個secretkey,分別為secretkeyA 與secretkeyB,便于應用服務器根據上傳地址,判斷使用A 地的存儲服務器,還是使用B地的存儲服務器上傳附件。
根據系統架構和服務器兩地部署情況,要實現附件上傳下載功能,如下所述:首先,在文件服務器A安裝tracker服務和storage服務,文件服務器B 安裝storage 服務;其次,在應用服務器上實現附件上傳、下載功能與數據庫附件存儲結構。
附件在系統數據存儲結構如,表1 所示,其中根據附件上傳地址,來確定是在A 地還是B 地,來確定存儲到文件服務器A,還是文件服務器B;FID 是FastDFS 文件服務器上傳成功后,返回附件在文件服務物理地址與加密后文件名。
本文通過將原有的系統架構改造為基于FastDFS 分布式存儲系統架構,在兩點地部署FastDFS 文件服務器與實現附件上傳下載等功能,解決系統數據分離和異地存儲,不僅加快系統響應速度,保證系統穩定運行,而且數據備份與恢復也變得更加便捷。即使在系統訪問高峰期,兩地人員在系統中上傳下載也十分方便。系統出現故障次數也減少很多,運維管理人員也不需要時不時對系統數據庫進行存儲空間擴容。