一种基于并行管道实现网管性能采集系统及其工作方法
技术领域
本发明属于网网管系统技术领域,尤其涉及到一种基于并行管道实现网管性能采集系统及其工作方法。
背景技术
网管系统包含多个业务领域,性能采集是其中一个比较重要的领域,在本专利方面所针对的网管系统中,网管系统主要采用SNMP系统对下级设备进行各种性能指标的采集。每一次采集都是一次很复杂、周期很长的历程,当对当规模的设备进行并发采集的时候(例如要在5分钟内完成对20万设备的所有指标采集一次),就会形成洪水的趋势,对网管系统的虚拟机内存和整体性能造成很大的破坏作用。
网管性能采集一般处理流程为采集调度->指标采集->采集转换->告警处理->入库处理。
采集调度:采集调度采用任务定时触发的方式(默认是5分钟),当任务触发时,采集调度首先去检查当前设备是否在线,同时当前采集的指标是否处于激活状态(如果设备离线、或者指标处用停止采集状态,则取消本次采集)。
指标采集通过SNMP协议到设备侧采集对应的性能指标,这一步设计到网络IO交互的过程,采集时间会受到当时网络环境以及设备差异的影响(比如正常情况下,采集时间在10毫秒左右的,如果网络阻塞或者震荡的情况下,可能会达到秒级别,或者超过设置的3秒超时时间,程序判断采集失败)。
采集转换:采集装换是将采集上来的具体值转换为网管需要的指标(类似计算某个设备速率指标值时,从设备端采集过来的是字节数,需要通过两个时间段的字节数差值和时间段差值相除)。
告警处理:告警处理流程是对经过采集转换后的指标进行分析,是否超过网管配置的告警阀值,如果超过则需要调用告警模块服务接口进行告警流程处理。然后进入下一环节。
入库处理:入库流程是性能采集指标经过层层处理后进入的最后一个环节,采集指标需要保存在网管数据库供业务查询和业务分析使用。
上述过程中,只要任何一个步骤失败,那么整个处理流程就会终止。同时,上面流程的主要问题是:每一步的处理都是按照顺序进行的,会导致整个流程走完需要花很长的时间,特别是某些步骤需要进行远程调用的时候,例如通过SNMP协议到设备侧采集对应的性能指标。同时,这种方式在设计上存在无法扩展的问题,在处理过程中,下一步都要依赖上一步的结果来执行,如果上一步失败,那么下一步就不走了。
发明内容
为解决上述问题,本发明提供了一种基于并行管道实现网管性能采集系统,包括性能采集模块、与性能采集模块连接的业务处理管道,所述业务处理管道包括通过服务端点顺次连接的采集调度管道、指标采集管道、告警分析管道、指标入库管道。
性能采集模块、采集调度管道、指标采集管道、告警分析管道、指标入库管道均设置有任务边界。
采集调度管道、指标采集管道、告警分析管道、指标入库管道均设置了任务队列、任务接收单、具有任务执行数量阈值的任务执行单元、任务流转单元。
任务边界为任务执行的起始位置及执行结果最终反馈的目的地,且用于在其对应任务队列达到阈值后对新传来的任务进行异常化处理,且将任务执行结果传递给下一个环节。
任务接收单元用于接收任务。
任务队列用于存放任务。
任务执行单元用于不断的读取对应任务列队中的任务并对已读取任务进行异步、同时执行,直到达到任务执行数量阈值。
任务流转单元用于将执行完成的任务的执行结果返回给对应的任务边界。
所述性能采集模块用于通过任务边界向采集调度管道定时发送初次信息采集任务,所述初次信息采集任务指定了网管系统需要采集的网络设备及需要采集的指标,并通过任务边界接收指标入库管道的反馈结果,将反馈结果传递到网管数据库中。
所述采集调度管道用于接收初次信息采集任务,将初次信息采集任务存放到其任务队列中,并不断根据任务要求去检查对应的网络设备是否在线,以及当前需要采集的指标是否处于激活状态,当网络设备是在线且指标处于激活状态时则将对应初次信息采集任务作为二次采集请求通过任务边界传递到指标采集管道。
所述指标采集管道用于接收二次信息采集任务,将二次信息采集任务存放到其任务队列中,并不断根据任务要求进行相关信息采集,转化为网管系统需要的指标数值,并将指标数值通过任务边界传递给告警分析管道。
所述告警分析管道用于将指标数值存到其任务队列中,不断读取,分析其是否超过网管系统配置的告警阈值,当未超过时,则通过任务边界传递给指标入库管道,当超过时则进行告警流程处理后再通过任务边界传递给指标入库管道。
所述指标入库管道用于将各个指标数值和/或经过处理后的指标数值作为任务存放到其任务队列中,其任务执行单元不断从任务队列中读取指标数值,并通过任务边界反馈给性能采集模块。
进一步的,各个任务队列中的各个任务按照优先级别高低顺序排列。
上述的基于并行管道实现网管性能采集系统的工作方法包括如下步骤:
步骤一:性能采集模块定时向采集调度管道发送初次信息采集任务,所述初次信息采集任务指定了该任务下网管系统需要采集的网络设备及需要采集的指标;
步骤二:采集调度管道接收初次信息采集任务,确定是否超过任务列队的阈值,如未超过,则将初次信息采集任务存放到其任务队列中,否则由任务边界进行异常化处理;任务执行单元不断根据任务要求去检查对应的网络设备是否在线,以及当前需要采集的指标是否处于激活状态,当网络设备是在线且指标处于激活状态时则将对应初次信息采集任务作为二次采集请求传递到指标采集管道;
步骤三:所述指标采集管道用于接收二次信息采集任务,确定是否超过任务列队的阈值,如未超过,则将二次信息采集任务存放到其任务队列中,否则由任务边界进行异常化处理;任务执行单元不断根据任务要求进行相关信息采集,转化为网管系统需要的指标数值,并将指标数值传递给告警分析管道;
步骤四:告警分析管道接收指标数值,确定是否超过任务列队的阈值,如未超过,则将指标数值作为任务放到其任务队列中,否则由任务边界进行异常化处理;任务执行单元不断读取任务,分析对应指标数值是否超过网管系统配置的告警阈值,如未超过,则通过任务边界传递给指标入库管道,否则进行告警流程处理后再通过任务边界传递给指标入库管道;
步骤五:指标入库管道将各个指标数值和/或经过处理后的指标数值作为任务存放到其任务队列中,其任务执行单元不断从任务队列中读取指标数值,通过任务边界反馈回性能采集模块;
步骤六:性能采集模块将反馈数据传输到网管系统数据库。
附图说明
图1为本发明所述系统的工作流程图。
具体实施方式
本发明的设计构思为:本发明利用并行管道的思想,将性能采集整个流程碎片化,分拆成多个子任务,然后将这些子任务之间用队列进行连接,并且把每个子任务的处理都放在单独的组件中。实现管道模式关键的是对业务流程的拆分,把一个业务流程拆分成多个子任务。拆分的核心思想是“搞清业务边界”和遵循“单一职责原则”,在数据传递方面采用队列的方式,实现“分流”和“临时存水”的效果。任务边界对并行管道模式来说很重要,是任务执行的起始位置,也是执行结果最终反馈的目的地。
任务边界需要有一定的异常处理机制,如果其对应任务队列已经满了,任务边界需要对后面进入的任务进行处理(常见的方法有持久化处理、拒绝接收任务、错误反馈等机制)。基于管道机制拆分后的多个子任务,在任何一个子任务执行出错后,都有可能会终止当前任务执行,从而返回到当前任务边界。
下面对本发明进行说明。
本发明所述基于并行管道实现网管性能采集系统,包括性能采集模块、与性能采集模块连接的业务处理管道,所述业务处理管道包括通过服务端点顺次连接的采集调度管道、指标采集管道、告警分析管道、指标入库管道。
性能采集模块、采集调度管道、指标采集管道、告警分析管道、指标入库管道均设置有任务边界。任务边界为任务执行的起始位置及执行结果最终反馈的目的地,且用于在其对应任务队列达到阈值后对新传来的任务进行异常化处理,且将任务执行结果传递给下一个环节
采集调度管道、指标采集管道、告警分析管道、指标入库管道均设置了任务队列、任务接收单、具有任务执行数量阈值的任务执行单元、任务流转单元。
任务接收单元用于接收任务。
任务队列用于存放任务。
任务执行单元用于不断的读取对应任务列队中的任务并对已读取任务进行异步、同时执行,直到达到任务执行数量阈值。执行任务是一个异步并发的过程,每一个子任务都有一批固定数量执行者(比如初始设置5个,最大不超过20个)。对超过阀值的情况需要做异常处理(拒绝接收或异常反馈)。
由于任务接收和任务执行是一个异步过程,任务接收了不一定马上执行,因此可以将任务队列中的各个任务按照优先级别高低顺序排列。优先级高的任务可以优先从任务队列获取并执行。
任务流转单元用于将执行完成的任务的执行结果返回给对应的任务边界。
所述性能采集模块用于通过任务边界向采集调度管道定时发送初次信息采集任务,所述初次信息采集任务指定了网管系统需要采集的网络设备及需要采集的指标,并通过任务边界接收指标入库管道的反馈结果,将反馈结果传递到网管数据库中。
所述采集调度管道用于接收初次信息采集任务,将初次信息采集任务存放到其任务队列中,并不断根据任务要求去检查对应的网络设备是否在线,以及当前需要采集的指标是否处于激活状态,当网络设备是在线且指标处于激活状态时则将对应初次信息采集任务作为二次采集请求通过任务边界传递到指标采集管道。
所述指标采集管道用于接收二次信息采集任务,将二次信息采集任务存放到其任务队列中,并不断根据任务要求进行相关信息采集,转化为网管系统需要的指标数值,并将指标数值通过任务边界传递给告警分析管道。
所述告警分析管道用于将指标数值存到其任务队列中,不断读取,分析其是否超过网管系统配置的告警阈值,当未超过时,则通过任务边界传递给指标入库管道,当超过时则进行告警流程处理后再通过任务边界传递给指标入库管道。
所述指标入库管道用于将各个指标数值和/或经过处理后的指标数值作为任务存放到其任务队列中,其任务执行单元不断从任务队列中读取指标数值,并通过任务边界反馈给性能采集模块。
上述基于并行管道实现网管性能采集系统的工作方法包括如下步骤(如图1所示):
步骤一:性能采集模块定时向采集调度管道发送初次信息采集任务,所述初次信息采集任务指定了该任务下网管系统需要采集的网络设备及需要采集的指标。
步骤二:采集调度管道接收初次信息采集任务,确定是否超过任务列队的阈值,如未超过,则将初次信息采集任务存放到其任务队列中,否则由任务边界进行异常化处理;任务执行单元不断根据任务要求去检查对应的网络设备是否在线,以及当前需要采集的指标是否处于激活状态,当网络设备是在线且指标处于激活状态时则将对应初次信息采集任务作为二次采集请求传递到指标采集管道。
步骤三:所述指标采集管道用于接收二次信息采集任务,确定是否超过任务列队的阈值,如未超过,则将二次信息采集任务存放到其任务队列中,否则由任务边界进行异常化处理;任务执行单元不断根据任务要求进行相关信息采集,转化为网管系统需要的指标数值,并将指标数值传递给告警分析管道。
步骤四:告警分析管道接收指标数值,确定是否超过任务列队的阈值,如未超过,则将指标数值作为任务放到其任务队列中,否则由任务边界进行异常化处理;任务执行单元不断读取任务,分析对应指标数值是否超过网管系统配置的告警阈值,如未超过,则通过任务边界传递给指标入库管道,否则进行告警流程处理后再通过任务边界传递给指标入库管道。
步骤五:指标入库管道将各个指标数值和/或经过处理后的指标数值作为任务存放到其任务队列中,其任务执行单元不断从任务队列中读取指标数值,通过任务边界反馈回性能采集模块。
步骤六:性能采集模块将反馈数据传输到网管系统数据库。
本发明的有益效果为:
1.将复杂的的性能采集处理流程拆分成多个子任务,每个子任务内部是一个异步执行过程,使得实现更加简单和灵活。
2.基于子任务封装不同的业务流程以满足多种业务场景,有利用代码重用和功能的扩展。
3.基于子任务设计有利于对资源进行精细化控制,比如并发数、任务队列控制等。
4.基于管道模式使得功能测试以及单元测试更加容易,对问题定位也变得简单。