发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种故障文件处理方法及系统,实现对故障文件的高效处理。
本发明提供一种故障文件处理方法,其包括:
接收分析指令,分析指令包括网络拓扑信息和网络拓扑中故障链路的数量n;
根据网络拓扑信息获取网络拓扑中的所有链路,并基于网络拓扑中所有链路的组合方法生成内容为空的n组故障文件,其中,第i组故障文件的文件名包括i个链路的名称,1≤i≤n;
根据预设的调度算法将故障文件调度至处理机集群中的处理机,处理机生成故障分析数据并写入故障文件中。
在上述技术方案的基础上,所述调度算法包括优先级调度算法、平均分配算法和资源状况指标的排序算法中的至少一种。
在上述技术方案的基础上,根据所述优先级调度算法,将所述故障文件按照优先级从高到低的顺序依次调度至所述处理机进行处理;
当所述第i组故障文件的优先级高于所述第i+1组故障文件时,所述处理机基于所述第i组故障文件生成所述第i+1组故障文件。
在上述技术方案的基础上,所述资源状况指标根据每个所述处理机的CPU使用率、可用RAM的大小和当前处理的所述故障文件数量中的至少一种确定。
在上述技术方案的基础上,所述获取网络拓扑中的所有链路,并基于组合方法生成内容为空的n组故障文件包括:
获取网络拓扑中的所有链路,按照数字顺序一一生成所述链路的名称;
基于所述组合方法和预设的文件模板生成所述n组故障文件,其中,在所述第i组故障文件的文件名中,i个链路的名称按照从小到大的顺序排列。
本发明还提供一种故障文件处理系统,所述系统包括相连的文件调度模块和处理机集群,文件调度模块包括控制单元、文件生成器和文件调度器,处理机集群包括管理模块和多个处理机;
控制单元用于接收分析指令,分析指令包括网络拓扑信息和网络拓扑中故障链路的数量n;
文件生成器用于根据网络拓扑信息获取网络拓扑中的所有链路,并基于网络拓扑中所有链路的组合方法生成内容为空的n组故障文件,其中,第i组故障文件的文件名包括i个链路的名称,1≤i≤n;
文件调度器用于根据预设的调度算法将故障文件调度至处理机;
处理机用于生成故障分析数据并写入故障文件中;
管理模块包括存储单元,存储单元用于保存包括故障分析数据的故障文件。
在上述技术方案的基础上,所述调度算法包括优先级调度算法、平均分配算法和资源状况指标的排序算法中的至少一种。
在上述技术方案的基础上,所述管理模块还包括获取单元和资源计算单元;
获取单元用于获取每个所述处理机的CPU使用率、可用RAM的大小和当前处理的所述故障文件数量;
资源计算单元用于根据CPU使用率、可用RAM的大小和当前处理的所述故障文件数量中的至少一种计算所述资源状况指标;
所述控制单元用于从资源计算单元获取所述资源状况指标并排序,基于排序结果指示所述文件调度器将所述故障文件调度至处理机。
在上述技术方案的基础上,所述文件调度器用于根据所述优先级调度算法,将所述故障文件按照优先级从高到低的顺序依次调度至所述处理机进行处理;
所述处理机用于当所述第i组故障文件的优先级高于所述第i+1组故障文件时,从所述存储单元获取所述第i组故障文件,基于所述第i组故障文件生成所述第i+1组故障文件。
在上述技术方案的基础上,所述文件生成器用于获取网络拓扑中的所有链路,按照数字顺序一一生成所述链路的名称;以及基于所述组合方法和预设的文件模板生成所述n组故障文件,其中,在所述第i组故障文件的文件名中,i个链路的名称按照从小到大的顺序排列。
与现有技术相比,本发明实施例的故障文件处理方法,其包括:接收分析指令,分析指令包括网络拓扑信息和网络拓扑中故障链路的数量n;获取网络拓扑中的所有链路,并基于组合方法生成内容为空的n组故障文件,其中,第i组故障文件的文件名包括i个链路的名称,1≤i≤n;根据预设的调度算法将故障文件调度至处理机集群中的处理机,处理机生成故障分析数据并写入故障文件中,实现对故障文件的高效处理。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述。
参见图1所示,本发明实施例提供一种故障文件处理方法,其包括:
S110接收分析指令,分析指令包括网络拓扑信息和网络拓扑中故障链路的数量n。
S120根据网络拓扑信息获取网络拓扑中的所有链路,并基于网络拓扑中所有链路的组合方法生成内容为空的n组故障文件,其中,第i组故障文件的文件名包括i个链路的名称,1≤i≤n。
S130根据预设的调度算法将故障文件调度至处理机集群中的处理机,处理机生成故障分析数据并写入故障文件中。
故障分析数据包括受影响的业务、业务路径、以及故障后计算出的恢复路径等,根据实际情况确定。
分析指令包括网络拓扑信息,例如网络拓扑的名称。
具体的,分析指令可以是网络性能分析指令,例如,假设n条链路发生故障的情况下,对网络的可用性进行分析。分析指令也可以是故障分析指令,例如,在n条链路假设或者实际发生故障的情况下,确定保护倒换路径。分析指令可以是用户通过命令行界面(Command-Line Interface,CLI),也可以是网管下发的。网络拓扑中的所有链路数量为N,N和n均为正整数,且1≤n<N。
在步骤S120中,组合的定义为:从N个不同元素中,任取i(i≤N)个元素并成一组,叫做从N个不同元素中取出i个元素的一个组合;从N个不同元素中取出i个元素的所有组合的个数,叫做从N个不同元素中取出i个元素的组合数
即:
具体的,在第i组故障文件中,即第i组故障文件的总数量为
例如,当N=7,且n=3时,基于组合方法生成内容为空的3组故障文件,其中,第1组故障文件的总数量为
第1组故障文件的文件名包括1个链路的名称,即对网络拓扑中的每个链路均生成一个故障文件;第2组故障文件的文件名包括2个链路的名称,第2组故障文件的总数量为
第3组故障文件的文件名包括3个链路的名称,第3组故障文件的总数量为
按照组合方式生成n组故障文件,故障文件的文件名不会重复。如果采用任意的链路排列生成n组故障文件,可能导致几个故障文件的文件名均包括相同的链路的名称(即重名),对于故障分析方面来说,这几个故障文件都是针对相同的故障分析处理,因此需要进行去重名处理,参见后文举例说明。
在步骤S130中,处理机获取故障文件后,解析文件名得到链路的名称,启动线程对故障文件进行故障分析,同时开启另外的线程以存储中间数据和生成报表数据,将故障分析数据写入故障文件中。
本发明实施例对故障文件进行分步处理,首先根据分析指令中故障链路的数量n生成内容为空的n组故障文件,然后根据预设的调度算法将故障文件调度至处理机,从文件名中提取链路的名称并进行故障分析处理,最后将故障分析数据写入各个故障文件中。通过上述分步处理,实现对故障文件的模块化和并行化处理,提高故障文件处理的自动化程度,提高故障分析的效率,适应增量式的故障文件处理。
在一种可选的实施方式中,步骤S120包括:
S121获取网络拓扑中的所有链路,按照数字顺序一一生成所述链路的名称。
S122基于组合方法和预设的文件模板生成n组故障文件,其中,在第i组故障文件的文件名中,i个链路的名称按照从小到大的顺序排列。
进一步的,文件模板可以基于可扩展标记语言(Extensive Markup Language,XML),或者其他的格式,不作限定。故障文件的格式与预设的文件模板的格式相同。
具体的,故障文件的格式可根据实际需要对故障文件中的相关参数进行调整,在尽量少的信息冗余的情况下可以较为完整地记录所有故障分析数据。
无论网络拓扑中的链路的名称是否为数字编号的形式,在文件名文件生成之前,可以根据现有链路数量生成link1,……,linkN的链路名称。具体的,可以采用广度优先算法(Breadth-First-Search,BFS)对网络拓扑进行遍历,将所找到的链路与生成的link1,……,linkN链路名称建立一一映射关系,存入映射关系表中。
以下以图2为例进行说明,参见图2所示为网络拓扑的一个示意图,该网络拓扑包括编号为1至5的5个网元,以及网元之间的链路link1,link2,link3,link4,link5,link6和link7。
可以按递归方法确定故障文件的文件名,例如,当故障链路的数量n=3时,即故障文件的文件名包括3个链路的名称,确定故障文件的文件名的递归方法为:文件名中的第一个链路的名称为link1,第二个链路的名称大于第一个链路的名称,且小于N-(3-2),如图2拓扑所示,则第二个故障名称范围为link2到link7,依此类推,则第3个链路的名称的范围为其前一条链路加1且小于N-(3-3),即link3到link7,即文件名中的链路的名称按照从小到大的顺序排列,这样就可以保证文件名不重复。
当故障链路的数量n=1时,基于组合方法生成内容为空的第1组故障文件包括link1.xml,link2.xml,link3.xml,link4.xml,link5.xml,link6.xml和link7.xml。
当故障链路的数量n=2时,除了上述第1组故障文件,根据上面组合方法的故障文件数的计算公式还可得第2组故障文件共有21个,分别为link1_link2.xml,link1_link3.xml,link1_link4.xml,link1_link5.xml,link1_link6.xml,link1_link7.xml,link2_link3.xml,link2_link4.xml,link2_link5.xml,link2_link6.xml,link2_link7.xml,link3_link4.xml,link3_link5.xml,link3_link6.xml,link3_link7.xml,link4_link5.xml,link4_link6.xml,link4_link7.xml,link5_link6.xml,link5_link7.xml,link6_link7.xml。
同样的,当故障链路的数量n=3时,除了上述第1组故障文件和第2组故障文件,第3组故障文件有35个文件,其命名规则为link1_link2_link3.xml的形式。
如果采用任意的链路组合,例如,对于文件名包括3个链路的名称的故障文件,虽然link1_link2_link3.xml与link1_link3_link2.xml的文件名不同,但文件名包括相同的链路的名称,对于故障分析来说,其所指的是相同的故障分析处理,因此需要进行去重名处理。
n组故障文件生成后,将每组故障文件调度至同一个队列中,n组故障文件则存在n个队列,如将单个链路的文件link1.xml,link2.xml,......,linkN.xml分配至一个队列中。
在一种可选的实施方式中,调度算法包括优先级调度算法、平均分配算法和资源状况指标的排序算法中的至少一种。
具体的,平均分配算法是指将故障文件平均分配给各个处理机。
进一步的,根据优先级调度算法,将故障文件按照优先级从高到低的顺序依次调度至处理机进行处理。
当第i组故障文件的优先级高于第i+1组故障文件时,处理机基于第i组故障文件生成第i+1组故障文件。
具体的,在优先级高的队列未处理完之前,优先级低的队列为挂起状态,只有当处理至当前的队列时其才会变为激活状态,状态转换的过程使用信号量进行管理。
优先级低的队列的故障文件处理仅依赖于之前优先级高的队列的故障文件处理结果,例如处理4个节点的故障文件时,处理机可以基于其中任意三个链路组合的故障文件进行故障分析处理,例如link1_link2_link3_link4.xml可以基于link1_link2_link3.xml或link1_link3_link4.xml进行故障分析处理,这样对于每一次优先级低的队列中的故障文件时都可以看作对一个故障链路的分析,这种方式大大降低了对于处理机集群中单个处理机的性能要求。
当故障文件的文件名中的链路的名称按照从小到大的顺序排列时,优先级低的队列的故障文件与优先级高的队列的故障文件的文件名匹配处理更容易,从而进一步提高故障分析的效率。
在一种可选的实施方式中,资源状况指标根据每个处理机的CPU使用率、可用RAM的大小和当前处理的故障文件数量中的至少一种确定。
在一种实施方式中,根据资源状况指标对上述队列进行处理调度。由于故障分析是在处理机集群的处理机中完成的,而各个处理机在同一时刻资源状况不同,因此,可以获取每个处理机中的可用RAM的大小和CPU使用率,根据可用RAM的大小和CPU使用率得到资源状况指标,例如,资源状况指标=a×CPU使用率+b×可用RAM的大小,其中,0<a<1,0<b<1,例如a=0.6,b=0.4。按资源状况指标对处理机进行排序,将故障文件依次分配至资源状况指标最高的处理机中。资源状况指标的排序算法可以是冒泡算法,不作限定。
在另一种实施方式中,调度算法可以包括优先级调度算法和资源状况指标的排序算法中。具体的,在处理机集群中,按资源状况指标对处理机进行排序,并将优先级高的队列中的一个故障文件分配至资源状况指标最高的处理机中,并更新此处理机的资源状况指标,使用排序算法再次进行排序,再将队列中的一个故障文件分配至资源状况指标最高的处理机中进行故障分析处理。重复上述过程直到所有队列中的故障文件都分配完毕。
可以等待该队列中的最后一个故障文件分析完后才进行下一队列的故障文件处理。也可以在该队列中的最后一个故障文件未全部完成情况下,将下一队列的故障文件调度至相应的处理机进行故障分析处理,但是可能会出现下一队列中的故障文件分析处理所依赖的故障文件还未处理完毕的情况。
参见图3所示,本发明实施例还提供一种故障文件处理系统,故障文件处理系统包括相连的文件调度模块和处理机集群,文件调度模块包括控制单元、文件生成器和文件调度器,处理机集群包括管理模块和多个处理机,其中,管理模块可以是一个管理节点,每个处理机均是一个计算节点。
处理机的数量根据实际需要配置,作为一个示例,图3仅显示出3个处理机,每个处理机包括k个线程。
具体的,文件调度模块和处理机集群还均与硬件存储输入/输出(Input/Output,I/O)相连,通过硬件存储I/O读、写数据。
控制单元用于接收分析指令,分析指令包括网络拓扑信息和网络拓扑中故障链路的数量n。
文件生成器用于根据网络拓扑信息获取网络拓扑中的所有链路,并基于网络拓扑中所有链路的组合方法生成内容为空的n组故障文件,其中,第i组故障文件的文件名包括i个链路的名称,1≤i≤n。
文件调度器用于根据预设的调度算法将故障文件调度至处理机。
处理机用于生成故障分析数据并写入故障文件中。
管理模块包括存储单元,存储单元用于保存包括故障分析数据的故障文件。
具体的,每个处理机均包括故障处理接口、故障分析接口和资源处理接口。故障分析接口是处理机提供的对外应用编程接口(Application Programming Interface,API),供管理模块调用。计算完成后,处理机通过故障处理接口将故障分析数据写入到存储单元的相应故障文件中,管理模块调用资源处理接口将处理机新增的中继资源写入存储单元的主网络文件中。
参见图4所示,每个处理机均包括CPU和RAM,处理机获取故障文件后,解析文件名得到链路的名称,如根据故障文件的文件名link1_link2,则解析得到链路的名称为link1和link2,启动线程对故障文件进行分析,同时开启另外的线程以存储中间数据和生成报表数据。
在一种可选的实施方式中,调度算法包括优先级调度算法、平均分配算法和资源状况指标的排序算法中的至少一种。
在一种可选的实施方式中,管理模块还包括获取单元和资源计算单元。
获取单元用于获取每个处理机的CPU使用率、可用RAM的大小和当前处理的故障文件数量。
资源计算单元用于根据CPU使用率、可用RAM的大小和当前处理的故障文件数量中的至少一种计算资源状况指标。
控制单元用于从资源计算单元获取资源状况指标并排序,基于排序结果指示文件调度器将故障文件调度至处理机。
具体的,控制单元用于对所有处理机的资源状况指标进行整理和排序后,确定资源空余度最高的处理机,通过接口指示该处理机与文件调度器的接口通信,同时通过文件调度器向外提供的接口通知与之对接的处理机,只有文件调度器侧和处理机侧有相同的信号量(参见图4)时,文件调度器才将相应的故障文件调度至该处理机中。
在一种可选的实施方式中,文件调度器用于根据优先级调度算法,将故障文件按照优先级从高到低的顺序依次调度至处理机进行处理。
处理机用于当第i组故障文件的优先级高于第i+1组故障文件时,从存储单元获取第i组故障文件,基于第i组故障文件生成第i+1组故障文件。
参见图5所示,文件调度器包括调度单元和队列单元,队列单元包括具有不同优先级的多个队列,例如,每个队列保存一组故障文件。调度单元包括优先级调度算法单元和平均分配算法单元,根据实际情况,调度单元中的优先级调度算法单元将故障文件按照优先级从高到低的顺序依次调度至处理机进行处理;或者,调度单元中的平均分配算法单元将故障文件平均分配给各个处理机。
在一种可选的实施方式中,文件生成器用于获取网络拓扑中的所有链路,按照数字顺序一一生成链路的名称;以及基于组合方法和预设的文件模板生成n组故障文件,其中,在第i组故障文件的文件名中,i个链路的名称按照从小到大的顺序排列。
文件生成器还可以包括去重单元,去重单元用于删除重名的故障文件。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。