具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
参见图1,本发明实施例确定设备性能的***包括:多个机器10。
所述机器10,用于在确定自身为主机后,将确定设备性能需要的信息划分为多个维度,其中每个维度对应一类信息,每个维度的粒度是根据对应信息的内容划分的;将每个维度的粒度进行组合,得到多个任务,其中一个任务包括每个维度的一个粒度;将得到的多个任务分配给集群中的机器10,以使机器10根据任务确定设备性能指标。
本发明实施例集群内的机器10在确定自身为主机后,将用于确定设备性能的多个任务,分发给集群内的机器;集群内的机器根据获得的任务进行分析计算,得到相应的性能指标值。由于将原来一台机器的任务分发给了多台机器,每台机器所需负责的任务量相较于原来一台机器减少了很多,因此对于单台机器的计算能力的要求有所降低,因而能够完成对海量性能数据的处理。
其中,性能指标体现了目标设备自身的运行工作的能力,反映目标设备的工作状态。不同的工作状态或者不同的运行能力,对应的性能指标也不同。
例如:
CPU主要的性能指标主要有:主频、倍频、外频、内存总线速度、扩展总线速度工作电压地址总线宽度、数据总线宽度协处理器超标量采用回写(Write Back)结构的高速缓存、动态处理等;
硬盘的性能指标主要有:硬盘的转速、硬盘的数据传输率、硬盘缓存平均寻道时间、平均访问时间等;
内存条性能指标主要有:速度、容量、奇偶校验、内存电压等;
显卡性能指标主要有:显卡核心型号、核心频率、顶点阴影、象素阴影数量、渲染管道数量、显存型号、显存频率、显存位宽、显存容量、接口类型等;
网络性能指标主要有:带宽、时延、带宽时延积等。
上述中的维度是对性能数据分类的依据,其体现了设备性能数据的某一特性。维度包括但不限于下列中的部分或全部:
设备类型、确定设备性能使用的KPI公式、时间、空间。
针对不同的设备,设备类型也不同,比如:
设备类型包括但不限于下列中的部分或全部:
TD基站、GSM基站、LTE基站、TD网关、GSM网关、LTE网关、安全网关、信令网关、本地控制器、宏网基站、分布式设备。
而对于每一种设备类型又可分为多种业务场景;
例如:
对于GSM基站,其业务指标又分为GSM话务量、GSM接入类型、GSM保持类型、GSM资源类型、GSM分布式等。
由于每一个设备类型的每一个业务场景对应一套独立的KPI公式和相对独立的性能元数据,所以可以分成相对独立的计算任务。
此外,上述时间维度的时间定义为设备上传性能数据的时间间隔。例如,设备有一个指标叫话务量,设备每隔5分钟就会报一个话务量指标,则小时指的是一个小时内设备所有上报话务量指标的和。假设进行TD基站—话务量KPI1公式—小时—网元此任务计算,此任务是计算对应于公式话务量KPI1的TD基站的业务场景在某一个网元内设备上传的性能数据在一个小时内的总和。
此外,空间维度也是物理维度,网元—站点—区域间前后具有依赖性。
网元由一个或多个机盘或机框组成,能够独立完成一定的传输功能,简单理解就是网络中的元素或网络中的设备。网元是网络管理中可以监视和管理的最小单位。站点包含多个网元,区域又包含多个站点。对站点、区域的性能指标计算结果可以根据网元的计算结果,通过聚合运算得到。
粒度是维度内具体体现的内容,不同的维度具体的内容也不同。
如,设备类型划分为TD基站、GSM基站、家庭级基站,则TD基站为一个粒度;
时间可分为分钟、小时、天、周、月、季、年,则小时为一个粒度;
下面以一个详细的例子对本发明实施例确定多个任务的方案进行说明。
首先,分布式计算集群中的各个机器均参与设备性能数据的收集,以及随后对性能数据的解析。集群机器收集数据的方式有两种:
各个机器可以广泛的收集目标设备的性能数据,当其接收到任务时,再根据所分得的任务从上传的性能数据中调用所需要的数据,进行计算任务;
也可以集群内机器接先收到集群主机分发的计算任务,从而根据任务的要求对上传的数据进行有目的的收集,用于自身的计算需求。
本发明实施例采用了分布式计算集群,集群中的多台机器同时对设备性能数据进行收集、解析,如此使得计算集群收集、解析基础的性能数据的能力得到了很大的提高。
假设维度包括设备类型、确定设备性能使用的KPI公式、时间、空间。
设备类型包括TD基站、GSM基站、LTE基站;
确定设备性能使用的KPI公式包括KPI1、KPI2、KPI3;
时间包括分钟、小时、天;
空间包括网元、站点、区域;
如图2所示,本发明实施例多个任务形成时:
所述机器从设备类型维度里取出一个粒度,比如TD基站;接着从确定设备性能使用的KPI公式维度里取出一个粒度,比如KPI1;从时间维度里取出一个粒度,比如小时;由于空间维度具有依赖性,站点、区域的性能指标可以由网元的性能指标推算,故在空间维度不单独取粒度;从而组合成一个任务:TD基站—KPI1—小时—网元—站点—区域。如此操作,所述机器将复杂的计算流程进行分解,得到许多相对简单的计算任务。
下面举例说明任务划分后将得到的任务总数:
假设本组任务分为设备类型、确定设备性能使用的KPI公式、时间、空间这四个维度,其中,设备类型有10种,确定设备性能使用的KPI公式有1000种,时间维度有5个,则独立计算的任务有10*1000*5种。
上述为本发明实施例根据设备类型的业务场景所对应的KPI公式对计算任务的计算流程进行分解,得到多个任务。由于对复杂的计算流程进行了分解,得到了多个相对独立的计算任务,这些任务的计算复杂度较原来由一台机器处理时的计算复杂度难度有所降低,从而使得单台机器足以满足任务计算能力需求。
在实施中,可以预先设置集群中的一个机器作为主机,也可以采用设置优先级的方式由集群中的机器选举出一个主机。
如果采用设置优先级的方式,具体选取方式有很多,比如所述集群中的机器根据下列方式确定自身作为主机:
集群中的机器与优先级大于自身的集群中的其他机器进行连通,若确定无法与优先级大于自身的集群中的其他机器连通,确定自身作为主机。
优先级的设置方式有很多,比如可以人工根据机器性能进行设置。也可以为机器设置编号,根据编号确定优先级。如此,也可设定编号大的优先作为集群主机,集群内机器权重高的优先作为集群主机等。
下面将具体举出实例,假设设定编号小的优先级高:
对所述集群内机器进行编号,且每台机器编号唯一,分别为A1、A2、A3、A4、A5…,程序设定编号小的优先作为集群主机,承担任务分发的工作。
例如,在A1、A2、A3选举时,每台机器都通过程序接口去调用比它排序靠前的机器,比如A3通过程序接口调用A2、A1;A2通过程序接口调用A1。
若A1确认自身没有发生故障,则自动作为主机;同时A1接收到A2、A3的调通指令后,予以回复;
若A2调用A1的程序接口,发现无法调通,且确认自身正常工作,则A2自动作为主机,如果能调通,则不作为主机;同时A2接收到A3的机器的调通指令后,予以回复;
若A3调用A1、A2的程序接口,发现无法调通,且确认自身正常工作,则A3自动作为主机,如果能调通,则不作为主机;
每隔一段时间,集群内机器重复上述操作,以确定当前主机是否出现故障;如果出现故障,则及时选举出新的集群主机以代替原来的集群主机的工作。
本发明实施例中故障主机可以被及时替换,如此可以有效地避免因为集群主机出现故障而导致整个任务无法完成。
在实施例中,将得到的任务分发给集群中的机器时,可以随机分配,也可以采取一定的规则更优化的使用机器资源,比如所述集群主机将得到的多个任务按照如下方式分配给集群中的机器:
所述集群中的机器根据机器权重和/或集群中机器数量,确定分配给集群中的每个机器的任务数量;
所述集群中的机器根据确定的分配给集群中的每个机器的任务数量,将得到的多个任务进行分配。
在任务分发时,集群主机可以参与任务的计算,此时集群主机分发任务是要将自身负责的计算任务预先留下,将剩余的任务进行分发;集群主机不参与计算时,就将所有的任务按规则分发给集群内其他机器。
下面将具体举出实例:
1、设定集群内有三台机器,分别编号A、B、C,其中集群主机编号为A,假设最终得到了6条任务,只考虑机器数量,不考虑权重:
当集群主机参与计算,则集群主机将分解计算流程得到的任务均等的分给三台机器。每一台机器分别得到2条任务。
当集群主机不参与计算,则集群主机将分解计算流程得到的任务的分给集群机器B、C,两台机器分别得到的任务数均为3条。
2、设定集群内有三台机器,分别编号A、B、C,其中集群主机编号为A,权重分别为1、3、2,假设最终得到了7份任务,同时考虑机器数量和权重的情况下:
当集群主机参与计算时,集群主机会循环遍历各个集群机器,第一次循环A、B、C三台集群机器,三台集群机器分别获得的任务数为1条、3条、2条,然后集群主机又把剩余的1条任务遍历三台集群机器,因为遍历主机的先后顺序有一定的随机性,如果遍历顺序为A、B、C,则集群机器A得到一条任务,B、C则没有得到任务;如果第二轮遍历的顺序为:C、A、B,那么集群机器C得到一条任务,A、B则没有得到任务。
当集群主机不参与计算时,集群主机会循环遍历各个集群机器,第一次循环B、C两台集群机器,两台集群机器分别获得的任务数为3条、2条,然后集群主机又把剩余的2条任务遍历两台集群机器,因为遍历主机的先后顺序有一定的随机性,如果遍历顺序为B、C,则集群机器B得到两条任务,C则没有得到任务;如果第二轮遍历的顺序为:C、B,那么集群机器C得到两条任务,B则没有得到任务。
通过以上遍历的方法,把可以任务分发给各个不同权重的机器。
3、只考虑权重情况下,设定集群内若干台机器,分别编号A、B、C……,所有机器权重加一起为100,其中集群主机编号为A,假设最终得到了200条任务:
当集群主机参与计算时,假使集群主机A的权重为20,将所得的任务分为100份,集群主机得到总任务中的20份,即40条任务,其他机器依次类推。当集群主机不参与计算时,将所得的任务分为100份,假使集群机器B的权重为10,将所得的任务分为100份,集群机器B得到总任务中的10份,即20条,其他机器依次类推。
举例所述任务数量较少,正常情况下集群所得任务数量会比举例数量多。本发明实施例中任务分配时,机器数量和权重被考虑在内,如此可以更优化的利用机器资源,以及更快更好地完成任务。
可选的,在本发明实施例中,如果机器故障出现故障,给出了具体的处理方式如下:
所述集群中的机器将得到的多个任务分配给集群中的机器之后,还包括:
所述集群中的机器在确定集群中有其他机器出现故障后,将分发给出现故障的机器的任务重新进行分发。
下面将对机器出现故障的解决方案给出具体实例,假设***内有五台机器,集群内机器对应唯一编号为A1、A2、A3、A4、A5,程序设定编号小的优先作为集群主机,承担任务分发的工作。设定的上传心跳的间隔为一分钟。
例:A1作为集群主机正常工作,A1接收A2、A3、A4、A5上传心跳,T1时刻后,超过一分钟的时间A2未曾上传心跳,A1判定A2宕机;随后A1从数据库中取出对应交给A2处理的任务数据进行重新分发,交给A3、A4、A5处理。
本发明实施例中,集群主机监控集群内机器可以参见图3。
图3中,集群中的每个机器会周期向集群主机(即集群中确定自身为主机的机器)上报心跳;
集群主机根据是否能够收到机器的心跳判断机器当前是否有故障。
如果在设定时长内未收到某个或某些机器的心跳,则确定对应的机器宕机(即出现故障),则集群主机需要分发任务,如图4所示。
图4中,集群主机在设定时长内未收到机器二的心跳,确定机器二宕机,将分配给机器二的任务分发给集群中的其他机器。分发时可以只分发给一个机器,也可以分发给多个机器。
在本发明实施例中,采用上述方式出故障的机器的任务及时分发给其他未出故障的机器,如此可以有效地避免分布式计算集群中由于***内的机器宕机而导致分配的计算任务无法完成,确保了KPI计算的容错率。又因为各个机器的逻辑单元相对独立,所以可以根据业务的规模对集群中的机器资源合理分配,提高计算能力。
聚合运算指的是网元—站点—区域间的计算,网元—站点—区域是空间维度的分类,彼此间具有依赖性,因此该阶段需要运用聚合运算。基于此,可选的所述集群中的机器将得到的多个任务分配给集群中的机器之后,还包括:
所述集群中的机器将自身确定的设备性能指标和收到的集群中其他机器发送的设备性能指标,按照聚合规则进行聚合。
例如:对于TD基站—KPI1—小时—网元—站点—区域独立的计算任务,聚合运算就是:计算所有网元TD基站、KPI公式1的网元小时报,然后根据所有的小时报计算结果计算各个站点的KPI值,然后根据各个站点的值计算该区域的指标。
假设集群内的每台机器编号唯一,分别为A1、A2、A3、A4、A5,程序设定编号小的优先作为集群主机,承担任务分发的工作。设定A1正常工作,作为集群主机,A2、A3、A4、A5、接收A1分发的任务,计算得到结果。指标A是累加和的公式,如表1所示,TD基站—KPI1—小时—网元—站点—区域计算任务区域聚合计算;
站点1包含3个网元,站点2包含7个网元,区域1包含站点1和站点2,网元计算后得出各个网元指标A的值为1,则聚合运算得,站点1指标A的值为3,站点2指标A的值为7,区域1指标A的值为10。
表1
集群内机器计算所得各个网元指标A的值为1,此时集群内的机器将对站点、区域进行聚合运算。集群机器进行聚合运算可分为两种情况,可由集群主机独立完成,也可由集群内其他机器完成自身负责的任务内的聚合运算,再上传给集群主机,由集群主机完成剩余的集合运算。聚合运算的计算流程可如下面的例子所示:
假定集群内的每台机器编号唯一,分别为A1、A2、A3、A4、A5,程序设定编号小的优先作为集群主机,承担任务分发的工作。设定A1正常工作,作为集群主机,A2、A3、A4、A5接收A1分发的任务,计算得到结果。
例1:A2、A3、A4、A5将计算得到的各个网元指标A的值上传给A1,再由A1完成聚合运算。
例2:A2、A3、A4、A5完成计算得到各个网元指标A的值,并完成站点、区域的聚合运算,得到网元、站点、区域的指标A的值,再将得到的指标值上传给集群主机,再由集群主机完成聚合运算。
在本发明实施例中采用了上述方式对数据进行聚合运算后,如此可以更直观、实时的展现出区域内的设备性能指标。
如图5所示,本发明实施例第一种设备包括:
至少一个处理单元500、以及至少一个存储单元501,其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行下列过程:
在确定自身为主机后,将确定设备性能需要的信息划分为多个维度,其中每个维度对应一类信息,每个维度的粒度是根据对应信息的内容划分的;将每个维度的粒度进行组合,得到多个任务,其中一个任务包括每个维度的一个粒度;将得到的多个任务分配给集群中的机器,以使所述机器根据任务确定设备性能指标。
可选的,所述处理单元500用于根据下列方式确定自身作为主机:
与优先级大于自身的集群中的其他机器进行连通,若确定无法与优先级大于自身的集群中的其他机器连通,确定自身作为主机。
可选的,所述处理单元500用于根据机器权重和/或集群中机器数量,确定分配给集群中的每个机器的任务数量;并根据确定的分配给集群中的每个机器的任务数量,将得到的多个任务进行分配。
可选的,所述处理单元500还用于:
将得到的多个任务分配给集群中的机器之后,在确定集群中有其他机器出现故障后,将分发给出现故障的机器的任务重新进行分发。
可选的,所述处理单元500还用于:
将得到的多个任务分配给集群中的机器之后,将自身确定的设备性能指标和收到的集群中其他机器发送的设备性能指标,按照聚合规则进行聚合。
如图6所示,本发明实施例第二种设备包括:
划分模块600,用于在确定自身为主机后,将确定设备性能需要的信息划分为多个维度,其中每个维度对应一类信息,每个维度的粒度是根据对应信息的内容划分的;
组合模块601,用于将每个维度的粒度进行组合,得到多个任务,其中一个任务包括每个维度的一个粒度;
分配模块602,用于将得到的多个任务分配给集群中的机器,以使所述机器根据任务确定设备性能指标。
可选的,所述维度包括下列中的部分或全部:
设备类型、确定设备性能使用的KPI公式、时间、区域。
可选的,所述划分模块600具体用于,根据下列方式确定自身作为主机:
与优先级大于自身的集群中的其他机器进行连通,若确定无法与优先级大于自身的集群中的其他机器连通,确定自身作为主机。
可选的,所述分配模块602具体用于:
根据机器权重和/或集群中机器数量,确定分配给集群中的每个机器的任务数量;
根据确定的分配给集群中的每个机器的任务数量,将得到的多个任务进行分配。
可选的,所述分配模块602还用于:
将得到的多个任务分配给集群中的机器之后,在确定集群中有其他机器出现故障后,将分发给出现故障的机器的任务重新进行分发。
可选的,所述分配模块602还用于:
将得到的多个任务分配给集群中的机器之后,将自身确定的设备性能指标和收到的集群中其他机器发送的设备性能指标,按照聚合规则进行聚合。
如图7所示,本发明实施例中集群内机器工作环境逻辑如下:
目标设备上传自身的性能数据,计算集群内的机器接收这些上传的数据,进行解析;随后集群主机对集群计算任务的计算流程进行分解,以确定设备性能的KPI公式为依据进行划分,形成多个任务;随后集群主机再将所得的任务按着一定的规则分发给集群机器;集群机器完成自身得到的计算任务后,集群内的机器对计算结果进行简单聚合,得到所需性能指标;最后上传至数据库。
基于同一发明构思,本发明实施例中还提供了一种确定设备性能的方法,由于该方法对应的设备是本发明实施例处理任务的多个机器,并且该方法解决问题的原理与该设备相似,因此该方法的实施可以参见***的实施,重复之处不再赘述。
如图8所示,本发明实施例提供一种确定设备性能的方法,该方法包括:
步骤800:集群中的机器在确定自身为主机后,将确定设备性能需要的信息划分为多个维度,其中每个维度对应一类信息,每个维度的粒度是根据对应信息的内容划分的;
步骤801:集群中的机器将每个维度的粒度进行组合,得到多个任务,其中一个任务包括每个维度的一个粒度;
步骤802:集群中的机器将得到的多个任务分配给集群中的机器,以使所述机器根据任务确定设备性能指标。
可选的,所述维度包括下列中的部分或全部:
设备类型、确定设备性能使用的关键绩效指标KPI公式、时间、区域。
可选的,所述集群中的机器根据下列方式确定自身作为主机:
集群中的机器与优先级大于自身的集群中的其他机器进行连通,若确定无法与优先级大于自身的集群中的其他机器连通,确定自身作为主机。
可选的,所述集群主机将得到的多个任务分配给集群中的机器,包括:
所述集群中的机器根据机器权重和/或集群中机器数量,确定分配给集群中的每个机器的任务数量;
所述集群中的机器根据确定的分配给集群中的每个机器的任务数量,将得到的多个任务进行分配。
可选的,所述集群中的机器将得到的多个任务分配给集群中的机器之后,还包括:
所述集群中的机器在确定集群中有其他机器出现故障后,将分发给出现故障的机器的任务重新进行分发。
可选的,所述集群中的机器将得到的多个任务分配给集群中的机器之后,还包括:
所述集群中的机器将自身确定的设备性能指标和收到的集群中其他机器发送的设备性能指标,按照聚合规则进行聚合。
如图9所示,本发明实施例中集群机器处理任务的流程如下:
集群接到任务开始的指令后,集群主机将按着确定设备性能的KPI公式划分得到多个任务,这些任务之间不相互影响;随后集群主机将得到的任务分发给集群机器,由集群机器完成计算。同时集群主机将任务记录上传至数据库,并将任务状态记录为未完成状态。
集群机器得到集群主机分发的任务后,将任务提交线程池,多线程运行;随后进行网元级计算,所得结果放取缓存;最后从缓存中取网元级计算结果,聚合运算。
网元级计算和聚合运算都结束后,集群主机将网元级及聚合类型计算结果上传至数据库。任务结束,数据库中更新任务为完成状态。
本发明实施例中,确定设备性能的方法的详细流程示意图可以参见图10。
步骤1000:集群内机器收集目标设备上传的性能数据并解析
步骤1001:判断当前主机是否正常工作,如果是,则执行步骤1003;否则,执行步骤1002;
步骤1002:集群内机器运用设定重新选取集群主机;
步骤1003:集群主机根据确定设备性能所需的KPI公式对任务的计算流程进行划分,形成多个任务;并对集群机器进行监控,判断集群机器是否出现故障;
步骤1004:集群主机对得到的任务依次按既定的规则分发给集群内的机器;
步骤1005:集群内的机器接收集群主机分发的任务
步骤1006:集群机器对任务进行计算处理
步骤1007:集群机器将计算结果上传至集群主机;
步骤1008:集群主机进行简单的聚合运算,并将计算结果入库。以上参照示出根据本申请实施例的方法、装置(***)和/或计算机程序产品的框图和/或流程图描述本申请。应理解,可以通过计算机程序指令来实现框图和/或流程图示图的一个块以及框图和/或流程图示图的块的组合。可以将这些计算机程序指令提供给通用计算机、专用计算机的处理器和/或其它可编程数据处理装置,以产生机器,使得经由计算机处理器和/或其它可编程数据处理装置执行的指令创建用于实现框图和/或流程图块中所指定的功能/动作的方法。
相应地,还可以用硬件和/或软件(包括固件、驻留软件、微码等)来实施本申请。更进一步地,本申请可以采取计算机可使用或计算机可读存储介质上的计算机程序产品的形式,其具有在介质中实现的计算机可使用或计算机可读程序代码,以由指令执行***来使用或结合指令执行***而使用。在本申请上下文中,计算机可使用或计算机可读介质可以是任意介质,其可以包含、存储、通信、传输、或传送程序,以由指令执行***、装置或设备使用,或结合指令执行***、装置或设备使用。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。