1网管软件告警处理功能设计
电信网络管理软件,简称网管软件,完成网络中各种通信设备的管理,包括拓扑管理,告警管理,性能管理和配置管理等[2]。网管软件实时监控电信网络的运行状况,将运行中的业务流向,流量统计等数据及时反映给用户,以便于进行链路调度,流量控制等;在网络出现故障时,网管软件要根据告警信号,及时向用户报告故障等级,故障原因等信息,便于用户采取倒换、更换设备等手段将相关设备恢复。告警是通信设备出现故障时向管理软件发送的提示信息,网管软件通过对告警进行管理,协助客户完成设备故障定位,故障处理等维护功能[3]。告警管理模块是网管软件中的主要模块,其处理流程示意图如图3所示。本设计中将网管软件中的告警处理模块又分为三层体系结构:
(1)告警获取层:完成设备上报告警功能完成告警信息的获取,然后将告警信息提供给后续功能处理;该层主要完成各设备的链路层通信,将设备上报的告警信息传输到本地,并校验信息的有效性;同时该层还维护网管软件与设备的连接通道,在出现链路故障时能及时恢复。
(2)告警处理层:告警处理部分是告警处理模块的核心功能,首先将各种设备上报的数据进行适配,统一成相同的告警数据,屏蔽设备差异对上层的影响;还根据设备上报的告警信息对设备故障进行定位,给出故障严重等级,故障处理方法;处理完成后还需要对各种告警信息进行统计、分析,给出告警的分布情况。
(3)告警显示层:告警处理完后将告警数据提交到告警显示层,显示告警的级别、名称、发生原因、处理建议等。根据告警数据对拓扑对象告警灯进行显示,告警统计分析数据显示,必要时还需要给出曲线图等。
2告警处理功能模式实现分析
告警管理模块中,告警处理部分的逻辑比较复杂,尤其是告警数据适配部分。实际工程应用中,在同一个网管系统中需要管理多种设备类型,不同设备提供的告警信息获取和处理接口可能是有差异的,由于告警处理后的数据需要被上层模块使用,处理功能最好提供统一的接口供显示模块调用,因此需要对不同的设备告警处理进行接口适配。一般的软件实现中经常是增加转换处理函数,分别判断是那种设备,然后进行接口转换。这种实现方式逻辑较为简单,也容易理解,但也存在以下问题:①随着设备类型的增加,该函数可能会不断的膨胀,最终会导致内部逻辑越来越复杂,越来越难维护;②新设备类型的加入必须对原有代码进行修改,可能会引入新的问题,导致系统的不稳定;③各种类型设备之间的处理可复用性比较低,由于每个设备都是单独处理的,设备之间相同部分的处理也未能进行复用。经过深入研究,告警接口适配的需求场景比较符合适配器模式的使用要素,需要在多个接口之间进行适配,需要让不同的接口能在一起工作,因此考虑使用适配器模式完成该模块实现。结合实际需求场景分析类适配器模式和对象适配器模式在实现该功能时的优劣。在告警处理功能中,恰好是有多种设备类型告警需要处理,也就是说有多个Adaptee,通过上面的分析,确定使用对象适配器模式较适合告警处理的场景,同时也符合设计原则中“多用组合,少用继承”的原则。经过上述分析,设计告警处理接口模块的类分别为:
(1)告警处理(AlarmTreat),告警处理目标类,提供统一调用接口。
(2)告警适配(AlarmAdapter),告警适配类,完成不同设备告警处理的适配。
(3)设备告警(DeviceAlarm),设备告警类,是需要进行适配的类。这里设计为接口,不同的设备类型实现该接口,完成特定设备的实现。告警处理对象适配器模式类图如图4所示。对设备告警进行处理时,生成AlarmAdapter对象,向上层模块提供统一的AlarmTreat类的接口,内部调用了DeviceAlarm实现类的接口,完美的完成了告警处理接口的适配。使用适配器模式,对接口的适配在适配器中完成,每种设备的适配可以独立完成,相互之间没有影响,设备的增加对逻辑复杂性的增加影响比较小,便于后期的代码维护;增加新类型设备时,只需要增加相应的适配器,基本不需要修改原有的程序逻辑,不会引入新的不稳定因素;不同的设备之间具有相似性的,还可以进行类继承,复用已有实现。当设备类型不断增加,适配器增多时,还可以考虑配合使用工厂模式对适配器的生成进行管理。
3总结
通过使用适配器模式,完成了多种设备类型告警处理的接口统一,为上层模块调用提供了便利;也减少了由于设备告警处理变化而导致上层模块变化的问题,增强了系统稳定性;更重要的是,如果有新的设备类型加入,只需要增加新的对象类型,实现DeviceAlarm接口功能即可,系统的扩展性非常好。由此可见适配器模式在网管软件的告警处理模块中应用非常有效,是一次成功的设计模式实现。
作者:曹惠雅 王峰 单位:华中科技大学文华学院 烽火通信科技股份有限公司