黃嘉誠,董晶
(華北計算技術研究所公共安全系統部,北京100083)
隨著互聯網和信息通信技術的迅猛發展,檔案數據信息化建設正在如火如荼地進行。其中檔案信息管理系統是檔案信息化建設的核心,如何增強檔案信息管理系統的智能化和穩定性是本文的主要研究方向。
微服務(micro-service)是近年來軟件開發領域興起的一種新型軟件架構。相對于過去采用SOA思想開發的單體式(monolithic)應用來說,微服務化其實就是進一步分布式和去中心化,目的是提高開發敏捷性,適應越來越快速的技術迭代。微服務架構最重要特點在于業務系統的徹底組件化、服務化。原有的單體式應用被拆分為多個獨立設計、開發和維護的微服務。這些微服務通過RESTful的API互相調用。
每個服務從UI到控制層、邏輯層再到數據庫訪問都完全獨立。每個服務除了完成自身的任務之外,還可以調用其他微服務提供的功能,同時將自身的能力向外發布為服務。微服務系統架構不再強調傳統SOA架構應用中比較重的ESB企業級服務總線,將SOA的思想應用到單個業務系統內部實現真正的組件化。其主要優勢體現在以下幾點:
1)由于微服務化架構的每一個服務都由消息驅動的API定義了清楚的邊界,單個服務的開發和維護可以由單獨的團隊完成,易于開發和維護。2)單個服務的開發可以采用獨立的技術來完成,開發者可以自由選擇合適的技術進行開發,只要能夠提供符合要求的API就夠了。由于每個微服務都相對簡單,采用新技術重新開發也不會像從前那么困難。3)各個服務可以獨立部署,加快部署速度,UI團隊可以采用AB測試,快速的部署變化,微服務架構模式使得持續化部署成為可能。4)每個服務都可以獨立地進行擴展。開發者可以根據每個服務不同的需求來提供滿足需求的規模,甚至可以使用針對某個服務專門優化的硬件,極大提升軟件速度和服務的質量。
另外,個性化服務理念是當前檔案館服務中“以人為本”思想的重要體現。實現以人為本的人性化服務,首先要轉變服務理念,以檔案利用者為服務對象,采用信息技術為其提供更精準的個性化服務。針對檔案數據的個性推薦功能,該系統采用apriori算法和互信息計算為底層算法構建了檔案數據利用的知識庫。知識庫作為數據檢索領域常用的數據組織形式,受到了國內外很多研究機構的重視,很多組織例如Google、微軟、百度等都建立了龐大的知識庫并在此基礎上構建了多種應用系統。本文通過一個獨立的微服務,基于檔案檢索歷史數據,學習并總結出檔案數據之間的關聯并形成知識存儲在檔案數據知識庫中。并基于此為用戶提供檔案檢索結果的智能化推薦,進一步提升了檔案信息管理系統的智能化程度。
微服務化檔案信息管理系統在功能設計方面,需要根據實際情況,將原有檔案管理系統的功能進行充分解耦,形成小服務群。這些小的服務彼此獨立,單獨部署,并都可以完成自身的任務。每個小服務都是從交互、業務邏輯再到底層存儲,獨立形成一個應用。每個小應用之間通過互相調用API實現通信。
本檔案信息管理系統的功能設計如圖1所示。

圖1 智能檔案信息管理系統功能設計
傳統檔案信息管理系統的功能更偏向于檔案數據管理方,考慮的主要方面在于如何管理檔案,而對于數據利用方來說,其提供的服務相對較少。本系統通過檔案利用知識庫的建立,根據檔案利用的歷史知識數據和用戶的檢索行為,提供智能化檢索結果推薦。
當前檔案信息服務系統的缺陷主要體現在兩個方面,一個體現在單體式應用的系統架構方面,另一個則體現在智能化個性化服務的缺失方面。
現在正在使用中的檔案管理系統,絕大多數屬于單體式應用系統。從系統架構角度來講,從用戶交互,到后臺服務再到數據存儲,通常采用一體化開發,各個功能模塊之間耦合度過高。這樣的系統一是難于維護,各個功能之間沒能很好的解耦,往往維護起來牽一發而動全身。二是這樣的系統在添加新的功能時,需要在原有的代碼中新增模塊,而新增的模塊往往又會調用原有的服務,進一步增加的系統的耦合程度和復雜程度。以筆者曾參與開發和維護的一個檔案館信息管理系統為例。其采用的是傳統的企業級應用開發模式,即MVC三層架構,基于SSH編程框架開發。其項目架構如圖2所示。

圖2 某檔案信息管理系統架構
盡管這也是模塊化開發邏輯,但最終依然會打包成單一的war包,部署在統一的Tomcat服務器上。這種應用開發風格非常流行,因為IDE和其它工具都擅長開發一個簡單應用,這類應用也很易于調試,只需要簡單運行此應用,用Selenium鏈接UI就可以完成端到端測試。單體式應用也易于部署,只需要把打包應用拷貝到服務器端,通過在負載均衡器后端運行多個拷貝就可以輕松實現應用擴展。在早期這類應用通常運行的很好。但到開發的后期,由于不斷添加新的功能,這類系統會變成一個“龐然大物”,不利于軟件的開發和維護。由于沒有某單個開發者能夠完全理解整個大的系統的全部代碼,這會導致開發維護團隊工作起來非常地“艱辛”,修正問題和新增功能變的非常困難,同時又非常耗時。另外,隨著應用的不斷擴大,應用啟動的時間也會越來越長,有些應用的啟動時間會達到幾十分鐘,生產效率受到極大的影響。單體式應用另外一個問題是可靠性。由于所有模塊都運行在一個進程中,任何一個模塊中產生內存泄露,將會有可能弄垮整個進程。最后,單體式應用使得采用新架構和語言非常困難。比如,對于上面筆者提到的例子,該系統有大約兩百萬行代碼。這時開發團隊如果想改用其它更好的框架,無論是時間還是成本都是非常昂貴,這是一個無法逾越的鴻溝。開發者就不得不在最初選擇面前妥協,繼續維護這個陳舊的龐然大物,或者干脆推倒重來。
綜上所述,筆者認為這種開發架構越來越不適應現在的應用開發形勢。隨著新技術產生的速度越來越快,如何充分解耦整個系統,同時又能兼顧魯棒性,必然成為軟件開發領域未來的發展方向。在后面的章節,本文會簡要的介紹微服務化系統架構的優勢,以及如何采用微服務架構實現一個全新的檔案管理系統。
正如谷歌公司首席經濟學家所說,在當前的大數據時代,我們不缺少數據,缺少的是在浩如煙海的海量數據中發現價值的能力。同樣筆者認為,對于當前的檔案數據來說,其中的價值并沒有的到很好的挖掘和開發。對于檔案數據,檔案館最重要的任務就是如何管理好和利用好檔案數據。目前檔案館對于數據的管理和利用存在短板,主要體現在檔案數據關聯程度低。根據筆者調研,目前的檔案管理系統多數存儲的數據為檔案標題,類別,時間等屬性數據。提供的功能僅限于根據這些屬性,配合查閱權限等業務流程進行檔案檢索。檢索的結果包括檔案是否可用,檔案的位置等信息。這種檢索從根本上來說并沒有很好的利用檔案數據電子化的優勢,原因在于這些業務邏輯其實和紙質檔案系統中是完全一樣的。這種檢索僅僅把原始的服務轉移到了線上,用來提高檢索的速度,卻并沒有利用這些數據資源建立檔案之間的關聯體系,實現智能化檢索。
基于此,筆者希望能夠利用數據關聯技術,實現一種檔案利用知識庫。文中探索了一種基于檢索歷史和檔案類別建立的檔案數據知識庫,提升檔案檢索的的智能化程度。
由于整個系統被分成多個相互獨立的小應用,所以在系統架構設計方面,應分成兩個層次,即小應用層面的架構以及整個系統的架構。
每個獨立的服務都擁有自己的一套業務邏輯和數據庫,對外提供符合整個系統需要的API進行交互。我們以目錄著錄功能的微服務為例,其組織架構如圖3所示。此應用在交互層面,只針對檔案目錄的著錄人員。其API設計采用REST設計,對著錄人員提供檔案目錄數據的增刪改查等操作,同時對整個系統中的其它應用提供與功能相適應的API。其架構圖如圖3所示。

圖3 獨立微服務的架構
微服務化系統的整體架構由多個獨立的小應用組成,應用之間可以互相調用其向外提供的API實現數據的交換。
系統的體系架構圖如圖4所示。

圖4 檔案信息管理系統的整體架構
對于目錄檢索用戶來說,其檢索結果不僅由某一個微服務提供,而是包括了目錄著錄、結果推薦等多個微服務的數據。對于這種情況,我們采用API Gateway服務器負責請求轉發、數據整合以及協議轉換。所有來自于用戶的請求都會先經過API Gateway,然后路由這些請求到對應的各個微服務。API Gateway再將這些數據整合,提供給客戶端一個粗粒度的API,實現分布式微服務架構對用戶的透明性。
檔案數據知識庫是本檔案信息系統提供智能化檢索服務的基礎。通過對檢索歷史的記錄與分析,向用戶提供有價值的檢索建議。檔案數據知識庫實質上是一個檔案數據之間的關聯體系,它可以存儲關聯緊密的檔案類別,或者檔案之間的聯系,并在用戶檢索其中一項時向其推薦其他數據。建立檔案知識數據庫主要可以采取兩種方式。第一種是人工添加,即根據檔案工作人員以往的工作經驗,總結出哪些檔案類別或者檔案經常會同時使用,然后將其存儲為一條知識到檔案數據知識數據庫中。這種方式局限性比較大,較依賴于工作經驗豐富的檔案工作人員,并且不夠全面。為了解決這個問題,本檔案信息管理系統使用了Apriori算法和互信息計算法,通過兩種算法的計算來發現檔案之間的關聯關系。
Apriori算法是廣泛應用于關聯挖掘領域的算法,它通過計算候選集和情節的向下封閉檢測兩個階段來挖掘頻繁項集。知識學習微服務通過Apriori算法計算關聯關系的過程如圖5所示。

圖5 Apriori算法獲取檔案檢索頻繁項集
通過Apriori算法計算得到的知識需要通過第二步,即互信息計算最終確定該條知識是否具有客觀價值和合理性。互信息是信息論領域一種重要的信息度量,它用來表示一個隨機事件的發生對另一個隨機事件發生概率的影響。形式化的解釋為:設有兩個事件X、Y,已知事件X的發生的概率為P(X),當事件Y發生時,事件X發生的概率變為P(X|Y),即Y發生是X的條件概率。則X、Y的互信息量S為事件X發生概率的改變量,即P(X|Y)-P(X)。S的絕對值越大,說明事件X、Y之間的的關系越緊密。S的值正向越大,說明事件X、Y同時發上的可能性就越大,S的值負向越大,則說明X、Y的發生越互相排斥。
我們通過計算一條知識中各個檔案被檢索這個事件之間的互信息,來檢驗其合理性。如果兩個事件之間的互信息量值達到一定數值,我們便可以推測出這兩類檔案被同時檢索的可能性較高,進而確認這條知識的可信性。
檔案數據知識庫的建立也得益于本系統的微服務化架構模式。由于Apriori算法和互信息計算需要占用較大的服務器計算資源,如果采用單體應用架構,會極大的影響系統的性能和穩定性。通過采用微服務化架構,各個服務單獨部署,彼此的運算資源隔離并可以按照需求部署,提高了系統在運算方面的能力。
智能化檢索的服務流程如圖6所示。

圖6 檔案利用者檢索流程
用戶通過客戶端,網頁或智能終端發送檢索請求,API Gateway獲取請求,分解為細粒度請求分發給各個微服務。接著各個微服務返回數據到API Gateway進行整合,返回給用戶。
文中針對筆者在實際檔案信息管理系統的開發和維護工作中遇到的問題,即單體式應用開發維護難度高、技術陳舊并難以采用新技術以及檔案數據關聯體系的缺失,智能化程度低等問題,提出了包括采用Apriori算法和互信息計算來建立檔案關聯知識庫,以及其他獨立服務群的微服務化體系架構的檔案信息管理系統的設計。
其中知識學習微服務和結果推薦微服務在檔案管理系統中已經部署并運行。在實際應用中,知識學習微服務確實能夠發現一些檔案利用的規律,并應用于檢索結果的推薦中。例如某檔案館某一段時間內辦理離退休職工勞動保障工作的人較多,經過計算得出某幾類檔案是在辦理這類服務中需要使用的,系統便可以在檢索結果推薦中將其他幾類案卷推薦給檔案利用人員,提升了檢索的效率和智能化程度,方便了檔案利用者和檔案服務人員的工作。在接下來的工作中,會陸續將其他微服務開發和部署完畢,并在實際的工作環境中投入使用。
[1]David Sidoti, DFM Ayala, S Sankavaram.etc.Decision Support Information Integration Platform for Context-Driven Interdiction Operations in Counter-Sumuggling Missions[C].IEEE/SICE International Symposium on System Integration,2015:659-664.
[2]劉曉光,劉劍鋒,蘭潔.基于Openfire服務器用戶行為審計插件設計與實現[J].電子設計工程,2016,24(13):7-12.
[3]周云飛,劉立明.基于Openfire、SparkWeb構建即時消息平臺[J].電腦知識與技術,2015,11(3):121-124.
[4]徐署民,張偉.JAVA中即時通訊內容擴展研究[J].軟件導刊,2015,14(12):1-4.
[5]馮玉平,王曙光.基于Android的手機定位軟件[J].計算機與現代化,2015(2):11-13.
[6]駱子玉,洪璇.AES算法在多核的安卓平臺下的改進及應用[J].計算機應用與軟件,2017(1):209-213.
[7]陳希,騰玲,高強,等.NTP協議和PTP協議的時間同步誤差分析[J].宇航計測技術,2016,36(3):35-40.
[8]沈奎林,杜瑾.基于Openfire+Spark構建IM實時交流平臺[J].現代圖書館情報技術,2011,5:83-87.
[9]張慶陽,楊陽,程久軍,等.基于手機動態密碼的計算機使用權限管理機制[J].信息網絡安全,2014(8):46-51.
[10]蔡宇東,沈海斌,嚴曉浪.AES算法的高速實現[J].微電子學與計算機,2004,21(7):83-85.
[11]趙科佳,張愛敏,寧大愚.基于NTP協議的網絡時間服務系統的實現[J].電子測試,2008(7):13-16.
[12]王艷敏,李永忠,呂少偉.Android平臺下文件透明加密技術的研究與實現[J].計算機技術與發展,2014,24(9):137-140.
[13]MILLSDL.Network timeprotocol(version 3)specification,implementation and analysis[R].NetworkWorkingGroupReportRFC-1305,University of Delaware,1992.
[14]王圣東,方建勇,劉新友.基于NTP協議的一種校時實現及相關算法[J].指揮控制與仿真,2011,33(1):101-103.
[15]Joan Daemen,Vincent Rijmen.AES Proposal:The Rijndael Block Cipher[EB/OL].2017-03-03.
[16]Ray Hunt.Security Testing in Android Networks-A practicalCase Study[C]//IEEE International Conference on Networks,2013,121(1):1-6.
[17]Y Wang, Y Chen, M Yang,Researchand Application of XMPP-Based Modules in B/S Architecture[C]// Inernational Conference on Computational and Information Sciences,2013:1562-1565.
[18]楊化志,許蘭,李培峰等.基于IPQueue的即時通信協議還原系統的設計與實現[J].計算機應用與軟件,2012,29(3):46-51.
[19]曹新莉,侯曉翔,王樹朋.基于改進灰色關聯分析單步差拍控制法的APF應用與分析[J].陜西電力,2014(3):9-14.
[20]李元林,文躍秀,王子力.基于博弈論與灰色關聯分析法的城市配電網安全綜合評價[J].陜西電力,2013(10):5-9.