基于插件技术的综合网管系统通用网元代理的分析与设计*

2012-03-26 08:52王萌朱晓民李炜
电信工程技术与标准化 2012年8期
关键词:网元网管插件

王萌,朱晓民,李炜

(1 北京邮电大学网络与交换技术国家重点实验室,北京 100876;2 东信北邮信息技术有限公司,北京 100191)

移动智能网是一种在移动网中快速、有效、经济、方便的提供新业务的网络体系结构[1]。随着移动智能网的发展成熟,部署在网络上的业务系统不断出现,软件和主机的数量也在相应的增多,网络和业务资源的管理问题也越来越突出[2]。综合网管系统可以通过一个控制操作台实现对互联的多个业务网络的管理,能够提供对多专业多厂家多个业务子网的透视、对所管业务的了解及对故障定位和故障排除的支持。

随着智能网业务的拓展[3],原有的业务系统需要进行修改或者升级,可能会增加或者修改网管监控数据,其自身的业务数据如KPI(关键绩效指标)等也可能会发生变化,而目前只能通过更新各个业务系统的网管代理来进行适应,导致现网维护的成本较高,业务系统网管代理开发者的开发负担和现网工程客服人员的升级维护负担较重,因此如何设计一种通用可扩展的网元代理,在业务系统功能变动或者扩展时,不需要对代理进行重新开发,以最小的代价适应智能网业务的发展,是一个亟需解决的问题。

插件式架构的应用系统具有良好的扩充性、可定制性和易维护性,本文即在论述插件设计思想的基础上提出了一种基于插件技术实现通用网元代理的设计思路。

1 基于插件的软件设计思想

插件是一种遵循统一的预定义应用接口规范编写出来的程序,主框架程序(宿主程序)在运行时通过接口规范对插件进行调用,以扩展应用程序的功能[4]。插件结构有助于应用程序功能的扩充和维护,许多著名的软件都运用了这一技术,例如火狐浏览器、微信、Eclipse、Adobe Photoshop等。

1.1 基于插件的软件开发框架

基于插件开发的软件可分为插件和宿主程序两部分,两者之间可以互相通信,宿主程序通过增删或者修改插件来扩充或者变更整个软件的功能。插件与调用它的宿主程序之间的结构关系如图1所示。

图1 插件和宿主程序UML关系图

可以看到宿主程序和插件之间需要事先约定好两种接口,其一是宿主程序接口,由宿主程序实现,插件调用这些接口获取宿主程序内部的各种资源和数据,宿主程序接口为插件提供了定制宿主程序所需的全部接口;其二从插件的角度,为了使宿主程序能够装载并成功调用,插件也必须遵循宿主程序提供的插件接口,它为宿主程序提供了装载和调度插件所需要的全部方法[5]。

1.2 插件技术的优势

基于插件的软件开发框架能够有效的减少系统各模块之间的耦合;同时软件新增加功能时不需要修改现有代码,只需新开发插件进行安装即可,增强了软件的可扩展性;另外由于具体的功能由插件来实现,也降低了系统的整体复杂度。

2 基于插件的通用网元代理分析与设计

2.1 通用网元代理总体架构

通用网元代理作为综合网管系统的重要组成部分,它运行于所有的被管理主机,其主要功能在于收集被管理主机的各种配置和运行数据。根据插件式架构设计思想,可以将通用网元代理划分为代理接口、插件管理、插件调度和插件库4大部分(如图2所示)。

代理接口模块实现与综合网管系统控制中心的通信、消息转发等功能;插件管理模块实现系统对插件的管理功能,包括插件的新增、删除、验证、已安装插件信息查询、插件运行状态查询等功能;插件调度模块实现了插件自动安装升级、网管数据采集等通用网元代理的核心功能。

图2 基于插件的通用网元代理结构

2.2 插件及接口设计

通用网元代理接收综合网管系统的命令调用相应插件获取网管数据,因此不需要宿主程序提供接口,只需设计插件接口规范即可。因为每个插件都单独实现获取某种网管数据的功能,所以这里将插件设计为单独的可执行程序,而宿主程序通过调用这些单独的可执行程序来实现具体的功能。

插件接口要提供宿主程序调用插件所需的所有方法,包括帮助信息、版本信息、测试信息、参数配置信息、能力信息,所有为通用网元代理开发的插件都需要实现这些接口,根据插件的设计,插件接口需要通过传递给插件的参数来实现,分别对应插件-help、-version、-test、-paraminfo、-dataindex参数。其中参数信息即实现插件的功能所需要的必须的参数,供插件调用的时候使用;能力信息即插件实现功能的描述,将插件获取的数据细化为数据指标,例如CPU占用率,内存剩余容量等,所有插件返回信息均使用XML格式化,例如插件返回版本信息如图 3所示。

图3 插件返回版本信息示例

根据具体需求,插件可以使用shell等脚本语言或者C/C++等高级语言编写,只需要符合上面所述的接口规范即可。

2.3 插件库设计

由于插件需要从综合网管系统安装到通用网元代理,因此需要在代理本地维护一个插件库,建立目录分别存储不同形式或状态的插件,如表1所示。

表1 插件库设计

2.4 插件管理设计

支持插件功能的应用程序都需要对已安装的插件进行管理。通用网元代理可以在一个配置文件中为每个已安装的插件维护一条记录,保存该插件的编号、版本、位置、状态、更新时间等信息,进而利用这些信息实现插件的安装、验证、卸载等管理功能。

根据实际情况,插件在通用网元代理侧的状态可划分为5种:初始、安装失败、安装成功、验证失败、有效。插件首次安装状态为初始,之后状态通过安装、卸载、验证3种操作进行迁移。插件状态之间的转换关系如图4所示,其中实线为安装操作,虚线为卸载操作,点划线为验证操作。

当且仅当插件处于有效状态时,才能被通用网元代理调度使用。

图4 插件状态转换关系

2.5 插件调度设计

插件调度模块需要根据综合网管系统的指令执行相应的插件实现数据采集功能,通用网元代理侧启动单独的进程负责插件调度。由于综合网管系统的数据获取指令可能存在并发,因此插件调度进程需要支持同时维护多个调度任务,每一个调度任务都是一个状态迁移过程(如图 5所示),包括4种状态:修复(插件未准备好,修复插件),就绪(插件就绪,等待调度)、运行(插件运行)、结束(插件执行结束)。

图5 插件调度状态迁移图

当插件状态非有效、插件不存在或者当前安装插件版本与接收的调度命令要求的不一致时,调度任务进入修复状态,此时通用网元代理从综合网管系统下载最新插件代码进行安装验证,插件状态变为有效后,调度任务才能进入就绪状态等待调度,从而实现了插件自动修复和自动升级的功能。

由于数据采集可能存在单次和定期两种情况,因此插件调度任务也需要支持两种模式:单次调度和周期调度。当处于周期调度模式时,调度任务进入结束状态后会再次迁移到就绪状态等待下次调度。

3 结语

本文提出的基于插件的通用网元代理的设计思路在功能与技术上都突破了传统的思维,为综合网管系统提供了智能化、可扩展、易维护的网管数据采集服务,业务功能的变更或者业务系统的扩展只需要修改相应的插件即可完成兼容,降低了业务侧网管功能开发人员的负担以及网络维护成本。本文提到的插件结构需要在综合网管系统控制中心提供对所有系统支持插件的管理功能,还需要进一步的研究。

[1]廖建新,王晶,郭力等.移动智能网[M].北京:北京邮电大学出版社,2000(11):1-10.

[2]吕献美,王晶.移动智能网自动例检系统的分析与设计[J].电信技术,2009(8):108-110.

[3]吕新荣,廖建新,朱晓民,武家春.无差别移动性管理网络[J].通信学报,2007,28(7):1-7.

[4]李延春.软件插件技术的原理与实现[J].计算机系统应用,2003(7):24-26.

[5]陈方明,陈奇.基于插件思想的可重用软件设计与实现[J],计算机工程与设计,2005(1):172-176.

猜你喜欢
网元网管插件
自编插件完善App Inventor与乐高机器人通信
一种全网时钟同步管理方法
给水网管的优化布置研究
基于jQUerY的自定义插件开发
MapWindowGIS插件机制及应用
“五制配套”加强网管
基于Revit MEP的插件制作探讨
Java EE平台在综合网元管理系统中的应用研究
网管支撑系统运行质量管控的研究与实现
S1字节和SDH网络时钟保护倒换原理