蘇耀峰
摘要:介紹了混合編程方法原理,針對Matlab和Java混合編程進行了深入分析,使用Matlab的開源DEA算法,通過生成Jar包的方式,使用Java程序調用,得出某年度網絡運維效能評估結論。評估方法具有通用性強、擴展性好等特點,可廣泛應用于各類系統(tǒng)效能的量化評估。
關鍵詞:混合編程;網絡運維;網絡效能評估
DOIDOI:10.11907/rjdk.161101
中圖分類號:TP319
文獻標識碼:A 文章編號:1672-7800(2016)005-0145-02
0 引言
網絡運行維護的主要任務是定期統(tǒng)計、分析和評估網絡運行情況,及時發(fā)現和處置各類故障,確保網絡及其承載的業(yè)務安全、穩(wěn)定和可靠運行。運維效能評估是按照一定的評價標準,采用科學的方法檢驗和評定某一系統(tǒng)或某項活動的實施效果,用定性和定量指標判定其運作成效,同時尋找缺陷和弱點及其制約原因,從而改進運作和管理機制,優(yōu)化資源配置,提升工作績效,是實施科學管理的重要手段。網絡運維效能評估的一個關鍵環(huán)節(jié)是選擇恰當的評估方法,比如模糊評判法、數據包絡分析法等,有時還需要綜合多種方法才能得出較準確的評估結果。這些方法在系統(tǒng)建模、模型運算、數據整理等方面都較復雜,給效能評估工作帶來了困難。
Matlab由美國MathWork公司研制,主要提供科學計算的基礎環(huán)境,實現可視化與交互式程序設計,已經成為眾多學科領域的計算與分析平臺。Matlab實現了很多復雜算法,包含豐富的開源算法資源,這些算法資源給實現網絡運維效能評估帶來了便利,也為系統(tǒng)設計與實現提供了手段。但是,Matlab在用戶界面設計方面表現較弱,若要發(fā)揮其計算功能強大的優(yōu)點,還需要使用其它程序設計語言配合。本文擬通過混合編程方法,綜合Matlab與Java兩種語言特點來進行網絡運維效能評估。
1 混合編程原理
混合編程是指使用兩種或兩種以上程序設計語言來開發(fā)應用程序的過程,如VC與Matlab、Java與Matlab、VC與Java等等。Java語言具有平臺無關性和易擴展等優(yōu)點,通過使用Java調用Matlab,可以充分發(fā)揮這兩種語言的優(yōu)勢。Java調用Matlab的方法主要有COM組件方法和Jar包方法。
1.1 COM組件方法
COM組件方法是將使用Matlab編寫的m文件轉換為COM組件,然后利用第三方工具包在Java程序中調用COM組件,實現調用Matlab算法。其具體實現有Jawin和Jacob兩種方法。
(1)Jawin(Java/Win32)。Jawin建立了一個開放源代碼的、免費的體系結構,可實現Java組件與Windows DLL公開的組件或者Windows COM對象之間的互操作。Jawin允許Java編寫的應用程序任意調用基于DLL或COM的原始代碼,并且不需要構造任何JNI代碼。比如調用微軟的基于COM的XML解析器和工具,訪問Win32 API特性,比如安全API、Windows注冊表與事件日志等。Jawin可以通過一個COM組件的代碼生成器讀取類型庫,并生成從Java應用程序調用該組件所需要的Java stub。
(2)Jacob(Java COM Bridge)。Jacob是一個開始于1999年的開源項目,通過JNI功能訪問Windows平臺下的COM組件或者Win32系統(tǒng)庫。其核心是基于JNI技術實現的Variant、Dispatch等接口,使用Jacob的相關類庫(Jacob.jar、Jacob.dll)搭設從Java到COM的交互橋梁。通過該方法可以方便地完成Word、Outlook等對象操作,并繞開操作這些對象所隱藏的細節(jié)部分。
1.2 Jar包方法
Jar包方法是將Matlab的m文件打包成Java可以直接讀取的Jar文件格式的方法。Jar包包含各種類庫,可被Java直接引用并使用其中的類和方法,其具體實現主要是使用Matlab自帶的Deploy Tool工具。
Matlab的Deploy Tool支持Matlab工程編譯成各類結果,如一般的Windows應用程序、Matlab for .NET/COM、Matlab for Java、Matlab for Excel等等。其原理是通過MCC編譯器將m文件轉化為相應的c語言文件,包括數據文件,進而調用通用的C/C++編譯器將先前的文件編譯成控件庫或者可執(zhí)行文件。當目標機器沒有安裝Matlab運行環(huán)境時,該工具還提供Matlab運行環(huán)境功能,并且打包需要用到的資源文件,為其它語言直接使用提供便利。
2 混合編程實例
為了驗證混合編程方法在網絡運維效能評估中的應用,首先選用DEA評估方法,然后使用Matlab實現該算法并進行Jar打包發(fā)布,再利用Java程序進行調用,最后進行評估結論分析。
2.1 DEA評估方法
數據包絡分析(Data Envelopment Analysis,DEA)是由美國學者在“相對效率評價”基礎上發(fā)展起來的一種行之有效的系統(tǒng)分析方法,它的理論基礎是相對效益概念,主要工具是數學規(guī)劃,主要方法是優(yōu)化算法,根據多指標投入、產出數據,對相同類型單位的相對有效性進行評價。
DEA方法評估模型主要有CCR與BCC模型,其中,CCR模型主要針對在規(guī)模收益不變的情況下決策單元的效能評估,可分為分式規(guī)劃和線性規(guī)劃;BCC模型是基于CCR模型的擴展,涵蓋了規(guī)模收益,并建立在滿足凸性、錐性、無效性和最小性的假設基礎上。
使用DEA方法評估網絡運維效能,必須首先確定投入產出指標,然后選擇決策單元。根據已有研究成果,將投入人力作為輸入指標,設備數量、光纜長度、可用率作為輸出指標。網絡運維各單位可以作為DEA評估的決策單元,但是應遵守如下規(guī)則:若n為決策單元樣本容量,m和s分別為投入和產出指標的數量,則n≥max[m×s,3(m+s)]。
2.2 混合編程實現
為了輕量化設計以及核心算法重用,采用B/S結構實現網絡運維效能評估。其中,服務器端采用Web Sevice方式處理用戶請求,由Java調用Matlab算法程序進行計算并返回結果;客戶端使用網頁發(fā)送用戶請求(待評估數據),并接收計算結果,工作流程如圖1所示。
(1)Matlab程序實現。采用開源DEA法的Matlab實現,主要功能按照效率(綜合效率和純技術效率)、形式(包絡分析和乘數分析)、面向(面向投入和面向產出)等要素組合為8個模塊,分別為:①面向投入的綜合效率模型包絡分析(DEACRSEI);②面向產出的綜合效率模型包絡分析(DEACRSEO);③面向投入的綜合效率模型乘數分析(DEACRSMI);④面向產出的綜合效率模型乘數分析(DEACRSMO);⑤面向投入的純技術效率模型包絡分析(DEAVRSEI);⑥面向產出的純技術效率模型包絡分析(DEAVRSEO);⑦面向投入的純技術效率模型乘數分析(DEAVRSMI);⑧面向產出的純技術效率模型乘數分析(DEAVRSMO)。每個模塊均封裝為獨立函數,并帶有決策單元投入指標、產生指標矩陣參數,通過參數輸入進行計算并得出分析結果。
(2)Jar包生成。在Matlab中的輸入命令窗口鍵入“deploytool”命令后會出現Deployment Tool部署工具。首先,在部署工具中點擊new按鈕,選擇Matlab Builder for Java與Java Package,新建DEAAnalysis工程。然后,將Matlab設計的m文件從工作目錄面板拖拽到部署工具中的新建類文件夾中,添加Java需要調用的類和方法。最后點擊build按鈕生成與工程同名的文件夾,編譯成功后,即生成DEAAnalysis.jar文件。生成過程中需要注意的是,如果目標機器沒有Matlab運行環(huán)境時,需要勾選add MCR選項,將Matlab實時運行環(huán)境打包。
(3)Java程序設計。服務器端使用Jetty開源Web服務器提供訪問服務,接收客戶端httpClient發(fā)送的待評估數據。接收到評估數據后,進行解析并使用DEA分析類進行多次評估,直到達到評估要求。最后,填充http響應并返回客戶端,具體流程如圖2所示。
2.3 評估測試結果
使用混合編程方法驗證某年度網絡運維效能評估,評估結果如表1所示,達到了預期效果。
3 結語
混合編程方法是多種語言混合使用的開發(fā)方法,可充分發(fā)揮不同語言優(yōu)勢。針對網絡運維效能評估,可使用Matlab編程減少復雜算法設計和運算負載。使用Java編程,面向對象設計服務模式和相關界面,通過Java調用Matlab生成的Jar包的方式進行混合編程。通過實例驗證,使用混合編程方法可科學評價網絡運維,保障運維效能,及時發(fā)現網絡運維過程中出現的配置不好、設備分配不當、保障任務不均等問題,為調配各類資源提供合理建議。該方法降低了網絡運維效能評估復雜度,評估系統(tǒng)擴展性好、使用方便,具有較好的推廣價值。
參考文獻:
[1]翟軍紅,王紅宣. 基于VC與Matlab混合編程的研究[J]. 微計算機信息,2007,23(31):226-228.
[2]HANSELMAN D. 精通Matlab7[M]. 朱仁峰,譯. 北京:清華大學出版社,2006.
[3]敬人可,李建增. 混合編程在實時超聲無損檢測中的應用[J]. 國外電子測量技術,2012,31(6):63-66.
[4]劉維.精通Matlab與C/C++混合編程設計[M]. 北京 :北京航空航天大學出版社, 2012.
[5]陳龍,苑秉成,謝勇. 基于Matlab與VC的魚雷彈道三維可視化實現[J]. 艦船電子工程,2013,33(2):138-140.
(責任編輯:杜能鋼)