混合编程方法在网络运维效能评估中的应用

2016-05-14 21:31苏耀峰
软件导刊 2016年5期

苏耀峰

摘要:介绍了混合编程方法原理,针对Matlab和Java混合编程进行了深入分析,使用Matlab的开源DEA算法,通过生成Jar包的方式,使用Java程序调用,得出某年度网络运维效能评估结论。评估方法具有通用性强、扩展性好等特点,可广泛应用于各类系统效能的量化评估。

关键词:混合编程;网络运维;网络效能评估

DOIDOI:10.11907/rjdk.161101

中图分类号:TP319

文献标识码:A 文章编号:1672-7800(2016)005-0145-02

0 引言

网络运行维护的主要任务是定期统计、分析和评估网络运行情况,及时发现和处置各类故障,确保网络及其承载的业务安全、稳定和可靠运行。运维效能评估是按照一定的评价标准,采用科学的方法检验和评定某一系统或某项活动的实施效果,用定性和定量指标判定其运作成效,同时寻找缺陷和弱点及其制约原因,从而改进运作和管理机制,优化资源配置,提升工作绩效,是实施科学管理的重要手段。网络运维效能评估的一个关键环节是选择恰当的评估方法,比如模糊评判法、数据包络分析法等,有时还需要综合多种方法才能得出较准确的评估结果。这些方法在系统建模、模型运算、数据整理等方面都较复杂,给效能评估工作带来了困难。

Matlab由美国MathWork公司研制,主要提供科学计算的基础环境,实现可视化与交互式程序设计,已经成为众多学科领域的计算与分析平台。Matlab实现了很多复杂算法,包含丰富的开源算法资源,这些算法资源给实现网络运维效能评估带来了便利,也为系统设计与实现提供了手段。但是,Matlab在用户界面设计方面表现较弱,若要发挥其计算功能强大的优点,还需要使用其它程序设计语言配合。本文拟通过混合编程方法,综合Matlab与Java两种语言特点来进行网络运维效能评估。

1 混合编程原理

混合编程是指使用两种或两种以上程序设计语言来开发应用程序的过程,如VC与Matlab、Java与Matlab、VC与Java等等。Java语言具有平台无关性和易扩展等优点,通过使用Java调用Matlab,可以充分发挥这两种语言的优势。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系统库。其核心是基于JNI技术实现的Variant、Dispatch等接口,使用Jacob的相关类库(Jacob.jar、Jacob.dll)搭设从Java到COM的交互桥梁。通过该方法可以方便地完成Word、Outlook等对象操作,并绕开操作这些对象所隐藏的细节部分。

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++编译器将先前的文件编译成控件库或者可执行文件。当目标机器没有安装Matlab运行环境时,该工具还提供Matlab运行环境功能,并且打包需要用到的资源文件,为其它语言直接使用提供便利。

2 混合编程实例

为了验证混合编程方法在网络运维效能评估中的应用,首先选用DEA评估方法,然后使用Matlab实现该算法并进行Jar打包发布,再利用Java程序进行调用,最后进行评估结论分析。

2.1 DEA评估方法

数据包络分析(Data Envelopment Analysis,DEA)是由美国学者在“相对效率评价”基础上发展起来的一种行之有效的系统分析方法,它的理论基础是相对效益概念,主要工具是数学规划,主要方法是优化算法,根据多指标投入、产出数据,对相同类型单位的相对有效性进行评价。

DEA方法评估模型主要有CCR与BCC模型,其中,CCR模型主要针对在规模收益不变的情况下决策单元的效能评估,可分为分式规划和线性规划;BCC模型是基于CCR模型的扩展,涵盖了规模收益,并建立在满足凸性、锥性、无效性和最小性的假设基础上。

使用DEA方法评估网络运维效能,必须首先确定投入产出指标,然后选择决策单元。根据已有研究成果,将投入人力作为输入指标,设备数量、光缆长度、可用率作为输出指标。网络运维各单位可以作为DEA评估的决策单元,但是应遵守如下规则:若n为决策单元样本容量,m和s分别为投入和产出指标的数量,则n≥max[m×s,3(m+s)]。

2.2 混合编程实现

为了轻量化设计以及核心算法重用,采用B/S结构实现网络运维效能评估。其中,服务器端采用Web Sevice方式处理用户请求,由Java调用Matlab算法程序进行计算并返回结果;客户端使用网页发送用户请求(待评估数据),并接收计算结果,工作流程如图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运行环境时,需要勾选add MCR选项,将Matlab实时运行环境打包。

(3)Java程序设计。服务器端使用Jetty开源Web服务器提供访问服务,接收客户端httpClient发送的待评估数据。接收到评估数据后,进行解析并使用DEA分析类进行多次评估,直到达到评估要求。最后,填充http响应并返回客户端,具体流程如图2所示。

2.3 评估测试结果

使用混合编程方法验证某年度网络运维效能评估,评估结果如表1所示,达到了预期效果。

3 结语

混合编程方法是多种语言混合使用的开发方法,可充分发挥不同语言优势。针对网络运维效能评估,可使用Matlab编程减少复杂算法设计和运算负载。使用Java编程,面向对象设计服务模式和相关界面,通过Java调用Matlab生成的Jar包的方式进行混合编程。通过实例验证,使用混合编程方法可科学评价网络运维,保障运维效能,及时发现网络运维过程中出现的配置不好、设备分配不当、保障任务不均等问题,为调配各类资源提供合理建议。该方法降低了网络运维效能评估复杂度,评估系统扩展性好、使用方便,具有较好的推广价值。

参考文献:

[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.

(责任编辑:杜能钢)