文/房正華 房正鵬
當前社會上的各行各業(yè)在管理方面存在一個共同的問題:大量的辦公、業(yè)務(wù)電子文檔堆積分散。據(jù)調(diào)查,當前的企業(yè)中結(jié)構(gòu)化數(shù)據(jù)只占企業(yè)數(shù)據(jù)量的15%,而音頻、多媒體音像、工程圖、會議紀要、掃描文件、演示文稿、Word文檔、郵件報表等占到企業(yè)數(shù)據(jù)量的85%,而且每年以200%的速度增長,而非結(jié)構(gòu)化數(shù)據(jù)的特點就是共享、查詢困難,難于管理。若采用郵件或紙質(zhì)文件傳遞信息安全性差,各類共享服務(wù)器也不能滿足安全、協(xié)作要求,也導致很多客服部門在培訓時出現(xiàn)各類困難甚至是錯誤,以往的經(jīng)驗難以積累、傳承,特別是文檔管理如果沒有權(quán)限的概念,會在當前頻繁的人員流動時帶來技術(shù)流失。
為了建成規(guī)范化、集中管理的資料知識庫,保護公司內(nèi)部信息,避免技術(shù)流失,也同時加強項目協(xié)作,提高管理效率,推動核心技術(shù)和研發(fā)經(jīng)驗在新老員工間的傳遞,特開發(fā)本系統(tǒng),本系統(tǒng)具有各類企業(yè)的普適性。
要實現(xiàn)文檔的標準化結(jié)構(gòu),以方便文檔的積累和共享,并實現(xiàn)文檔的多種捕獲方式,方便用戶使用,包括Web界面上載、云盤上載、Office在線編輯、批量上載、OA等系統(tǒng),可以實現(xiàn)跨瀏覽器、iOS/Android移動端系統(tǒng)、云盤等的多種訪問方式。
為保障文檔系統(tǒng)的安全及流轉(zhuǎn)的方便,設(shè)置權(quán)限體系,包含授權(quán)對象的設(shè)定、權(quán)限級別及內(nèi)涵的設(shè)定及授權(quán)成員。授權(quán)對象可以設(shè)定不同層次,包含文件、文件夾、文件柜及權(quán)限的繼承問題等。授權(quán)對象包括角色、用戶、部門、工作組等。
圖1:系統(tǒng)整體架構(gòu)圖
文檔的生命周期管理包括文檔的創(chuàng)建、修訂、審批、發(fā)布、歸檔的全生命周期,促進協(xié)作。文檔的在線編輯過程也要留下批注痕跡,以及后續(xù)的文檔版本的自動管理,還可以進行文件的審批,包括審批流程的編輯。
文檔的存儲僅僅是一種管理方式,要讓靜止的文件發(fā)揮作用,更重要的功能體現(xiàn)在知識管理中。該系統(tǒng)應(yīng)該提供多種快速檢索文檔方式,讓企業(yè)知識得到充分利用;并提供報表功能,為企業(yè)提供決策支持。具體包括文檔的搜索、索引卡、元數(shù)據(jù)功能、文檔的分類、文檔編號、文檔訂閱及引用和統(tǒng)計報告等。
文檔的安全對一個企業(yè)至關(guān)重要,有可能決定企業(yè)的成敗,是企業(yè)的生命線。因此構(gòu)建文檔的安全管理體系至關(guān)重要。權(quán)限管理是實現(xiàn)文檔安全管理的一種重要手段,此外包括CRUL安全鏈接、文檔播放器、訪問日志、數(shù)據(jù)備份、SSL傳輸加密、PDF格式管理等。
根據(jù)以上的需求分析,進行系統(tǒng)整體架構(gòu)設(shè)計,具體如圖1所示。
系統(tǒng)從底向下共分為四層,包括數(shù)據(jù)訪問層、服務(wù)層、接入層、展示層。其中數(shù)據(jù)訪問層分為傳統(tǒng)數(shù)據(jù)庫、Redis和ElasticSearch三類。傳統(tǒng)數(shù)據(jù)庫采用主從數(shù)據(jù)庫架構(gòu)設(shè)計。Redis用于緩存數(shù)據(jù)庫提高數(shù)據(jù)查詢效率。ElasticSearch提供檢索服務(wù)。
服務(wù)端包括底層基礎(chǔ)服務(wù)模塊、用戶服務(wù)模塊、文檔服務(wù)模塊及權(quán)限管理服務(wù)模塊。
接入層分為2類:對于系統(tǒng)內(nèi)部的接口,為提高接口調(diào)用速度及效率,采用RPC接口方式,對于對外的用戶端接口,采用標準的Restful風格接口,也方便實現(xiàn)前后端分離的開發(fā)模式。
展示層為豐富文檔的獲取方式,也方便用戶使用,提供基于PC瀏覽器端、HTML5的移動端、客戶端及WX等多種方式。
此外為實現(xiàn)系統(tǒng)的各參數(shù)配置和人員設(shè)定等功能,設(shè)置后臺管理模塊。
表1
圖2:系統(tǒng)首頁
圖3:知識共享及權(quán)限界面
系統(tǒng)采用開放的技術(shù)標準進行實現(xiàn),其中前端使用框架包括Jquery,BootStrap,Layer,客戶端框架包括Node.js,Electron,Polymer等,后臺開發(fā)使用基于Java語言的Spring框架,底層數(shù)據(jù)庫采用MySQL數(shù)據(jù)庫
中間件使用Tomcat作為Web應(yīng)用服務(wù)器,Ngninx作為代理訪問服務(wù)器,Redis作為緩存服務(wù)器,ElasticSearch提供索引服務(wù)。
內(nèi)存數(shù)據(jù)庫Redis具有速度快的優(yōu)勢,同時也支持數(shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保存在磁盤中,重啟的時候可以再次加載進行使用,因此本系統(tǒng)通過使用Spring AOP + Redis相結(jié)合構(gòu)建切面緩存,提高查詢的速度和效率。具體實現(xiàn)方法如下:
實現(xiàn)查詢服務(wù)時,首先在Redis中進行查找,如果沒有找到,則連接底層數(shù)據(jù)庫進行查詢,并將查詢結(jié)果序列化后緩存到Redis中,以便下次可以直接從Redis中查詢到。Redis查詢采用的是Key-Value方式,為了保證數(shù)據(jù)查詢時數(shù)據(jù)的唯一性,主要通過MethodAndParaKeyGenerator生成緩存key。生成器根據(jù)salt的值與service方法名和方法參數(shù)toJson進行拼接然后利用sha算法進行簽名,可以減少緩存key的長度,同時保證生成key的唯一性。同時通過在對應(yīng)service方法上添加注解,通過AOP在該方法切面上添加緩存邏輯。在使用時如果key生成器生成的key與此相同,則在Redis中可以查到數(shù)據(jù),反序列化后直接返回,不再查庫降低數(shù)據(jù)庫壓力,提供查詢速度。
文檔高并發(fā)轉(zhuǎn)換會對服務(wù)器的線程造成極大壓力,使用Hystrix中間件可以解決此問題。
在文檔管理系統(tǒng)中,有許多依賴(Dubbo、Netty等)。在大量用戶同時并發(fā)訪問的情況下,依賴的穩(wěn)定性與否對系統(tǒng)的影響非常大,但是依賴有很多不可控問題:如網(wǎng)絡(luò)連接緩慢,資源繁忙,暫時不可用,服務(wù)脫機等。此時必須采取隔離措施,避免失敗的依賴拖垮整個應(yīng)用。Hystrix提供了容災,隔離,降級機制能夠有效的處理雪崩效應(yīng),解決以上問題。它采用的原理是為每個服務(wù)提供線程池,可以設(shè)定線程池中線程數(shù)量。每個依賴服務(wù)都被隔離開來,Hystrix會嚴格控制其在延遲發(fā)生時對資源的占用,并在任何失效發(fā)生時,執(zhí)行失敗回退邏輯。
在4核1G內(nèi)存下,由原文格式轉(zhuǎn)換位pdf格式的總耗時和錯誤率的具體測試參考數(shù)據(jù)如表1所示。
現(xiàn)以某高校文檔管理系統(tǒng)為例,展示該文檔系統(tǒng)的效果。
該系統(tǒng)在高校落地為文檔管理系統(tǒng),充當云盤和課程平臺的角色,教師可以實現(xiàn)課程的共同備課,打造課程庫資源,同時構(gòu)建學生角色,學生可以在上課之前可以查看教師提供的各類資源,包括文檔、視頻、試題等,也可以充當學生作業(yè)提交平臺。作為學校管理人員,可以充當人事管理系統(tǒng),打通整個學校的文檔管理應(yīng)用生態(tài)資源。如圖2為進入系統(tǒng)后的頁面,當前角色為組織管理員。圖3為知識共享模塊,包括文檔的操作權(quán)限展示。
本文重點介紹了文檔云管理系統(tǒng)的開發(fā)過程,在教學單位的應(yīng)用也取得了很大的應(yīng)用效果,在其他行業(yè)的應(yīng)用的取得了不錯的效果,在后臺的管理設(shè)置方面使用的方便性還有待解決,包括組織管理員等概念需對系統(tǒng)使用者進行二次培訓。