任务分配方法、装置和服务器
技术领域
本说明书属于互联网技术领域,尤其涉及一种任务分配方法、装置和服务器。
背景技术
在分布式数据处理***中,通常会分布有多个处理节点。其中,上述处理节点分别负责处理***分配的数据处理任务,从而可以对待处理的数据处理任务进行批量处理。
现有的任务分配方法大多是预先对***中的处理节点的处理能力进行压力测试,根据测试结果确定出处理节点的处理速度(例如处理节点每秒完成的数据处理任务的数量),以及折扣比例;再根据上述处理节点的处理速度以及折扣比例,计算出固定任务分配量,进而可以按照上述固定的任务分配量每隔一段时间,向处理节点分配待处理的数据处理任务。
通过上述方法分配处理节点的数据处理任务时,往往只能按照基于静态测试所确定的固定任务分配量,为处理节点分配待处理的数据处理任务。然而在具体进行数据处理时,***整体的资源使用情况、运行环境,以及处理节点的自身情况等都是在动态变化的(例如当前的***可使用的资源变少,或者***中的某几个处理节点暂时无法正常工作等),上述变化都会对处理节点具体的数据处理任务的处理能力造成影响。因此,按照现有方法根据基于静态测试所确定的固定的任务分配量来分配处理节点的数据处理任务,往往不够准确、合理,容易存在误差,导致无法有效地利用***资源,甚至造成***运行的不稳定。因此,亟需一种更加准确、合理的任务分配方法,能精确地为处理节点分配数据处理任务,从而提高的资源的利用率,使得数据处理高效、稳定。
发明内容
本说明书目的在于提供一种任务分配方法、装置和服务器,以结合***以及处理节点的具体情况,准确、合理地为处理节点分配任务,从而提高的资源的利用率,使得数据处理高效、稳定。
本说明书提供的一种任务分配方法、装置和服务器是这样实现的:
一种任务分配方法,包括:获取第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据;根据所述第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据,确定目标处理节点的任务承载量;向所述目标处理节点分配第二时间段的与所述任务承载量匹配的数据处理任务。
一种任务分配装置,包括:获取模块,用于获取第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据;确定模块,用于根据所述第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据,确定目标处理节点的任务承载量;分配模块,用于向所述目标处理节点分配第二时间段的与所述任务承载量匹配的数据处理任务。
一种服务器,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现获取第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据;根据所述第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据,确定目标处理节点的任务承载量;向所述目标处理节点分配第二时间段的与所述任务承载量匹配的数据处理任务。
一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现获取第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据;根据所述第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据,确定目标处理节点的任务承载量;向所述目标处理节点分配第二时间段的与所述任务承载量匹配的数据处理任务。
本说明书提供的一种任务分配方法、装置和服务器,通过获取并利用第一时间段中多个处理节点所依赖资源的使用数据、处理节点的运行数据以及任务处理数据,精细地确定出处理节点的具体任务承载量,再根据任务承载量向处理节点分配第二时间段的数据处理任务,从而能综合数据处理过程中***整体资源的使用情况以及处理节点自身的具体情况等因素,准确、合理地为处理节点分配相适应的数据处理任务,以提高资源的利用率,使得处理节点能够高效、稳定地进行数据处理。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是应用本说明书实施例提供的任务分配方法的***的结构组成的一种实施例的示意图;
图2是在一个场景示例中,应用本说明书实施例提供的任务分配方法分配处理节点的数据处理任务的一种实施例的示意图;
图3是是在一个场景示例中,应用本说明书实施例提供的任务分配方法分配处理节点的数据处理任务的一种实施例的示意图;
图4是本说明书实施例提供的任务分配方法的流程的一种实施例的示意图;
图5是本说明书实施例提供的服务器的结构的一种实施例的示意图;
图6是本说明书实施例提供的任务分配装置的结构的一种实施例的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
考虑到现有的任务分配方法在确定分配给处理节点的任务量时,往往没有考虑到***以及处理节点具体情况(例如***资源的使用情况,处理节点的运行情况,处理节点累积未处理的任务量等)对处理节点的处理能力的影响,而是通过静态测试的方式确定出处理节点的处理速度,即预先对处理节点的处理能力进行压力测试,根据测试结果确定出处理节点的处理速度,进而确定出固定的任务分配量,再按照上述固定的任务分配量为处理节点分配每次的处理任务。
但是,处理节点实际的处理能力会受到处理节点所处的***环境、所使用的***资源,以及处理节点本身情况的影响。例如,处理节点所依赖的下游处理***发生抖动会降低处理节点的处理能等。因此,基于现有方法依靠通过静态测试所确定的固定任务分配量来分配数据处理任务,往往不够准确,导致无法有效地利用***资源,甚至造成***的不稳定。
针对上述情况,本说明书提出可以获取并利用能够反映出***资源(即多个处理所依赖的资源)使用情况以及处理节点自身的具体情况(包括处理节点的运行情况和上一个时间段的任务处理情况)的数据,再根据上述数据确定出能够适合当前***资源以及处理节点情况的任务承载量,再按照上述任务承载量合理地给处理节点分配数据处理任务。从而能根据***以及处理节点的具体情况,准确、合理地为处理节点分配任务,提高资源的利用率,使得处理节点能高效、稳定地进行数据处理。
本说明书实施方式提供了一种任务分配方法,所述任务分配方法可以应用于包括:调度服务器、感知模块、处理器集群的***架构中。
可以参阅图1所示。所述处理器集群具体可以为包括有多个处理器的集合。其中,处理器集群中的每一个处理器可以理解为是一个处理节点,用于处理所分配的待处理的数据处理任务。所述感知模块具体可以设置于上述***构架中,用于每隔一个时间段(例如每隔30秒)采集上一个时间段中处理集群中的处理器所依赖的资源(例如***整体的CPU、数据库等资源)的使用数据,以及处理集群中各个处理器个体的运行数据和任务处理数据,并将上述数据发送至调度服务器。所述调度服务器具体可以用于对所接收到的上一个时间段的上述数据进行处理、分析,确定出当前***的整体资源,以及处理器个体的具体运行情况;并基于上述情况,在兼顾资源利用率和运行稳定性的要求下,计算出下一个时间段处理器的任务承载量(即下一个时间段处理器所能处理的数据处理任务的最大任务量),再根据上述任务承载量,合理地为处理器分配下一个时间段的数据处理任务。
在本实施方式中,所述服务器可以为一个具有数据运算、存储,以及网络交互功能的电子设备;也可以为运行于该电子设备中,为数据处理、存储,以及网络交互提供支持的软件。在本实施方式中并不具体限定所述服务器的数量。所述服务器可以为一个服务器,也可以为几个服务器,或者,由若干服务器形成的服务器集群。
在本实施方式中,所述处理器可以为一种能够解读计算机指令,并能进行具体的数据处理的集成电路模块。例如,上述处理器可以是中央处理器(CPU)等。将多个上述处理器组合,可以得到上述处理器集群,用于进行批量的数据处理。
在本实施方式中,所述感知模块具体可以为一种布设于上述***构建中,用于监测并采集指定的处理器所依赖的***资源的使用情况,以及处理器自身的运行情况、任务处理情况等相关数据的采集设备。对于上述感知模块的具体形式类型,本说明书不作限定。
在一个场景示例中,可以应用本说明书实施例提供的任务分配方法为处理器集群中的各个处理器分配下一个时间段待处理的数据处理任务。
在本场景示例中,考虑到处理器集群中各个处理器具体的处理能力是受到处理器所依赖的***资源的使用情况,以及处理器自身运行情况和上一个时间段的任务处理情况等多种因素影响的。因此,具体实施时,可以通过预设在***中的感知模块监测并采集得到上一个时间段(即第一时间段)中处理节器所依赖资源的使用数据、上一个时间段中处理器集群中各个处理器的运行数据,以及上一个时间段中处理器的任务处理数据。
其中,上述处理器所依赖资源具体可以是为处理器在进行数据处理过程中所要使用的,除处理器自身以外的***资源。例如,可以是处理器在进行数据处理时调用的***的CPU,或者访问的***的数据库,还或者是使用的***的I/O接口等等。对于上述处理器所依赖资源的具体类型本说明书不作限定。上述上一个时间段中处理节器所依赖资源的使用数据具体可以理解为用于表征上一个时间段中除处理器自身以外的***资源整体使用情况的参数数据。具体的,上述处理器所依赖资源的使用数据可以包括:上一个时间段中***CPU的使用率、上一个时间段中***数据库的访问量、上一个一时间段中***内存的占用率等。当然,需要说明的是,上述所列举的处理器所依赖资源的使用数据只是一种示意性说明,具体实施时,可以根据具体场景选择使用其他合适的参数数据作为上述处理器所依赖资源的使用数据。对此,本说明书不作限定。
上述上一个时间段中处理器的运行数据具体可以理解为用于表征上一个时间段中处理器的运行情况的参数数据。具体的,上述上一个时间段中处理器的运行数据可以包括:上一个时间段中处理器的资源数据(例如各个处理器上一个时间段进行数据处理时所占用处理器自身的处理资源量)、上一个时间段中处理器的运行状态(例如运行正常或者运行异常)等。当然,需要说明的是,上述所列举的处理器的运行数据只是一种示意性说明,具体实施时,可以根据具体场景选择使用其他合适的参数数据作为上述处理器的运行数据。对此,本说明书不作限定。
上述上一个时间段中处理器的任务处理数据具体可以理解为用于表征上一个时间段中处理器数据处理任务的处理情况的参数数据。具体的,上述上一个时间段中处理器的任务处理数据可以包括:上一个时间段中处理器的数据处理任务的分配数量、上一个时间段中处理器未完成的数据处理任务的数量、上一个时间段中处理器处理失败的数据处理任务的数量、上一个时间段中处理器处理数据处理任务的处理时长等。当然,需要说明的是,上述所列举的处理器的任务处理数据只是一种示意性说明,具体实施时,可以根据具体场景选择使用其他合适的参数数据作为上述处理器的任务处理数据。对此,本说明书不作限定。
具体实施时,感知模块可以是预先布设在***中,并且能够与***中的各个处理器,以及***中除上述处理器以外的其他资源模块进行数据交互。具体的,上述感知模块可以通过数据交互,获取处理器集群中各个处理器,以及***除处理器之外的其他资源模块的日志记录;进而可以对上述日志记录进行解析,得到具体的上述上一个时间段中处理节器所依赖资源的使用数据、上一个时间段中处理器的运行数据、上一个时间段中处理器的任务处理数据等。
感知模块在获取得到了上述数据后,可以通过有线或无线的方式将上述数据发送至调度服务器。调度服务器在接收到上述数据后,可以通过数据分析,确定出上一个时间段中处理器的任务处理情况,以及基于上一个时间段的任务处理,处理器的运行情况和***中除处理器之外的资源使用情况;进而可以综合上述多种情况信息,在兼顾***整体运行稳定的同时,确定出各个处理器在下一个时间段的可处理完成的最大数据处理任务量,即处理器的任务承载量;再根据上述任务承载量为处理器集群中的处理器分配与任务承载量匹配的数据处理任务作为下一个时间段的处理器要处理的数据处理任务,从而使得处理器集群能够较有效地利用***资源,提高处理器集群整体的数据处理效率。
具体的,可以参阅图2所示,调度服务器可以先根据上一个时间段中处理器的运行数据、上一个时间段中处理器的任务处理数据,确定出符合数据处理任务的处理要求的处理器。
其中,上述符合数据处理任务的处理要求的处理器,具体可以理解为能够正常运行,且还能够接收并处理新的数据处理任务(即下一时间段的数据处理任务)的处理器。
具体实施时,例如,调度服务器可以根据上一个时间段中处理器的运行数据,先从处理器集群中的多个处理器筛选出运行状态为正常的多个处理器作为第一处理器;再根据上一个时间段中处理器的任务处理数据,从第一处理器中进一步筛选出处理器未完成的数据处理任务的数量小于等于剩余任务数量阈值的处理器作为第二处理器,即所述符合数据处理任务的处理要求的处理器。当然,需要说明的是,上述所列举的确定符合数据处理任务的处理要求的处理器的方式只是一种示意性说明,不应构成对本说明书的不当限定。
进一步,调度服务器可以根据所述上一个时间段中处理器所依赖资源的使用数据、上一个时间段中处理器的任务处理数据,确定出下一个时间段(即第二时间段)中待分配的数据处理任务的数量。
具体的,调度服务器可以根据上一个时间段中处理器所依赖资源的使用数据和上一个时间段中处理器的任务处理数据,确定出基于上一个时间段处理器所分配的任务总量以及实际完成的数据处理任务量,和为完成上一个时间段的数据处理任务***中除处理器以外处理器所依赖资源的使用情况;再根据所确定的上述情况信息,以及下一个时间段的具体时长,在兼顾***运行稳定性的前提下,计算出下一个时间段处理器所能处理完成的数据处理任务的数量,即上述待分配的数据处理任务数量。
例如,可以根据上一个时间段中处理器集群中各个处理器的数据处理任务的分配数量计算出上一个时间段处理器集群所分配的任务总量;再通过比较上一个时间段处理器所依赖的资源中的***数据库的访问量,以及基于***整体稳定性所确定的数据库访问量的阈值,确定上一个时间段处理器集群所分配的任务总量是否合适,以及基于上述任务总量***是否能够稳定运行。进一步可以根据上一个时间段中***数据库的访问量和数据库访问量的阈值的比较结果,对上一个时间段处理器集群所分配的任务总量进行调整,得到调整后的任务总量作为下一个时间段可分配的数据处理任务量。
例如,如果上一个时间段中***数据库的访问量和数据库访问量的阈值的比较结果是上一个时间段中***数据库的访问量大于数据库访问量的阈值,则可以在上一个时间段处理器集群所分配的任务总量的基础上,适当地减少待分配的任务量,以保证***整体的运行稳定;如果上一个时间段中***数据库的访问量和数据库访问量的阈值的比较结果是上一个时间段中***数据库的访问量远小于数据库访问量的阈值,则可以在上一个时间段处理器集群所分配的任务总量的基础上,适当地增加待分配的任务量,以进一步提高***资源的利用率,以提高处理器集群整体的数据处理效率。
调度服务器在确定出符合数据处理任务的处理要求的处理器,以及下一个时间段中待分配的数据处理任务的数量后,进一步可以根据所述符合数据处理任务的处理要求的处理器、所述下一个时间段中待分配的数据处理任务的数量,计算处理器的平均任务量,作为所述处理器集群中的各个处理器的任务承载量(即目标处理器的任务承载量)。具体的,可以将上述下一个时间段中待分配的数据处理任务的数量除以所述符合数据处理任务的处理要求的处理器的数量,得到的平均值作为处理器的任务承载量。
其中,上述处理器的任务承载量具体可以理解为综合上一个时间段中处理器所依赖的资源整体使用情况,以及处理器自身的运行情况和任务处理情况,所确定出的在处理器集群整体保持稳定运行的前提下,处理器下一个时间段中所能处理完成的最大数据处理任务量。
在确定出处理器集群中处理器的任务承载量后,调度服务器可以从存储介质中获取满足上述下一个时间段中待分配的数据处理任务的数量的数据处理任务,并按照处理器的任务承载量,平均将上述数据处理任务分配给处理器集群中的各个处理器作为下一个时间段的待处理的数据处理任务,其中,上述处理器集群中的各个处理器所分配得到的数据处理任务与处理器的任务承载量相匹配。
服务器集群中的各个处理器在接收到所分配的数据处理任务后,下一个时间段会分别对所分配的数据处理任务进行具体的数据处理,从而可以达到对待处理的数据处理任务进行批量处理的效果。在处理器处理数据处理任务的同时,处理器还会与感知模块进行数据交互,从而可以及时地将处理器的运行数据、任务处理数据及时地反馈至感知模块,感知模块同时还会监测并采集处理器所依赖的资源的使用数据。
在另一场景示例中,在调度服务器根据上述一个时间段中处理器的运行数据、上一个时间段中处理器的任务处理数据,确定符合数据处理任务的处理要求的处理器后,为了能够针对各个处理器的具体情况,更加精细地分配数据处理任务,还可以先统计***中所述符合数据处理任务的处理要求的处理器的数量。再检测所述符合数据处理任务的处理要求的处理器的数量是否小于预设的处理器数量阈值;其中,上述处理器数量阈值可以根据***资源的整体性能确定。在所述符合数据处理任务的处理要求的处理器的数量小于处理器数量阈值的情况下,可以从上述上一个时间段中多个处理器的运行数据、任务处理数据和所依赖资源的使用数据中提取上一个时间段中目标处理器的任务处理数据和所依赖资源的使用数据;再根据所述上一个时间段中目标处理器的任务处理数据和所依赖资源的使用数据,有针对性地根据目标处理器的具体情况,确定所述目标处理器的任务承载量。而不是将处理器集群中处理器的平均任务量作为目标处理器的任务承载量。这样能够更加有效地根据处理器的个体情况,利用处理器,以及处理器所依赖的其他***资源,使得数据处理任务的分配更加合理、准确,进一步提高数据处理效率。
具体的,例如,参阅图3所示。调度服务器在确定所述符合数据处理任务的处理要求的处理器的数量小于处理器数量阈值的情况下,根据所述上一个时间段中处理器所依赖资源的使用数据、上一个时间段中处理器的任务处理数据以及符合数据处理任务的处理要求的处理器的具体情况,针对各个处理器的单个的具体情况,分别确定出1号处理器的下一个时间段能完成的最大数据处理任务量为5,即1号处理器的任务承载量为5;2号处理器的下一个时间段能完成的最大数据处理任务量为3,即2号处理器的任务承载量为3;N号处理器的任务承载量为7等。进而可以对不同处理器的任务分配区别对待,例如,可以向1号处理器分配5个数据处理任务;向2号处理器分配3个数据处理任务,向N号处理器分配7个数据处理任务。
由上述场景示例可见,本说明书提供的任务分配方法,由于通过获取并利用第一时间段中处理器所依赖资源的使用数据、处理节点的运行数据以及任务处理数据,精细、合理地确定出处理器的具体任务承载量,再根据任务承载量向处理器分配第二时间段的数据处理任务,从而能结合处理器,以及处理器所依赖的其他***资源的具体情况,准确地为处理器分配任务,提高资源的利用率,使得处理器能够高效、稳定地进行数据处理。
参阅图4所示,本说明书实施例提供了一种任务分配方法,其中,该方法具体实施时,可以包括以下内容:
S41:获取第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据。
在本实施方式中,上述第一时间段具体可以理解为历史上的某个指定时间段。具体的,上述第一时间段可以是指与当前(或者待分配任务的下一个时间段)的时间间隔最近的一个时间段,例如,上一个时间段;也可以是指根据具体情况和要求,从历史中选出的满足预设要求的一个时间段,例如,从历史中选中的所处理的数据处理任务与当前待处理的数据处理任务情况相似的一个时间段。当然,上述所列举的第一时间段只是为了更好地说明本说明书实施方式。不应构成对本说明书的不当限定。
在本实施方式中,上述***具体可以理解为包含有多个处理节点的分布式集群***。其中,上述***中分布式部署有多个处理节点。上述处理节点相互独立,各自负责处理所分配的数据处理任务。具体的,当***接收到大量待处理的数据处理任务时,***可以通过调度服务器按照一定的分配量,每隔一段时间,逐步将上述数据处理任务分配给***中的各个处理节点。处理节点在接收到所分配的数据处理任务后,各自对所分配数据处理任务进行具体的数据处理,从而***可以对待处理的数据处理任务进行批量处理,以提高数据处理效率,提高资源利用率。
在本实施方式中,上述处理节点具体可以是指具备一定数据运算、存储等功能的电子设备,例如,上述处理节点的具体可以是处理器、服务器等。也可以是指运行于上述电子设备中,为数据处理、存储等提供支持的软件,例如,上述处理节点具体还可以是对应某些数据处理任务的应用程序等。对于处理节点的具体形式,本说明书不作限定。
在本实施方式中,上述第一时间段中处理节点所依赖资源的使用数据具体可以理解为用于表征第一时间段中除处理器自身以外的***资源整体使用情况的参数数据。具体的,上述处理节点所依赖资源的使用数据可以包括:第一时间段中***CPU的使用率、第一时间段中***数据库的访问量、上一个一时间段中***内存的占用率等。当然,需要说明的是,上述所列举的处理节点所依赖资源的使用数据只是一种示意性说明,具体实施时,可以根据具体场景选择使用其他合适的参数数据作为上述处理节点所依赖资源的使用数据。对此,本说明书不作限定。
在本实施方式中,上述第一时间段中处理节点的运行数据具体可以理解为用于表征第一时间段中处理节点的运行情况的参数数据。具体的,上述第一时间段中处理节点的运行数据可以包括:第一时间段中处理节点的资源数据(例如各个处理节点第一时间段进行数据处理时所占用处理节点自身的资源量)、第一时间段中处理节点的运行状态(例如运行正常或者运行异常)等。当然,需要说明的是,上述所列举的处理节点的运行数据只是一种示意性说明,具体实施时,可以根据具体场景选择使用其他合适的参数数据作为上述处理节点的运行数据。对此,本说明书不作限定。
在本实施方式中,上述第一时间段中处理节点的任务处理数据具体可以理解为用于表征第一时间段中处理节点数据处理任务的处理情况的参数数据。具体的,上述第一时间段中处理节点的任务处理数据可以包括:第一时间段中处理节点的数据处理任务的分配数量、第一时间段中处理节点未完成的数据处理任务的数量、第一时间段中处理节点处理失败的数据处理任务的数量、第一时间段中处理节点处理数据处理任务的处理时长等。当然,需要说明的是,上述所列举的处理节点的任务处理数据只是一种示意性说明,具体实施时,可以根据具体场景选择使用其他合适的参数数据作为上述处理节点的任务处理数据。对此,本说明书不作限定。
在本实施方式中,上述获取第一时间段中处理节点所依赖资源的使用数据、第一时间段中处理节点的运行数据、第一时间段中处理节点的任务处理数据,具体实施时,可以包括:通过预设在***中的感知模块采集并获取上述第一时间段中处理节点所依赖资源的使用数据、第一时间段中处理节点的运行数据、第一时间段中处理节点的任务处理数据等数据。
在本实施方式中,需要说明的是,通过对上述第一时间段中处理节点所依赖资源的使用数据、第一时间段中处理节点的运行数据、第一时间段中处理节点的任务处理数据进行分析处理,可以确定出第一时间段中***所分配的数据处理任务的处理情况,以及对应上述数据处理任务的处理情况,处理节点个体,以处理节点所依赖的***资源的具体情况。进而后续能够可以参考上述所确定的第一时间段的情况信息,在兼顾运行稳定性与资源利用率的前提下,可以精细地确定出各个处理节点的任务分配方案。当然,需要说明的是,上述方案只列举了获取第一时间段中处理节点所依赖资源的使用数据、第一时间段中处理节点的运行数据、第一时间段中处理节点的任务处理数据等数据,具体实施时,根据具体的应用场景和要求,还可以获取除上述所列举的数据以外其他的历史数据。对此,本说明书不作限定。
S43:根据所述第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据,确定目标处理节点的任务承载量。
在本实施方式中,上述目标处理节点具体可以理解为多个处理节点中的任意一个处理节点。上述任务承载量具体可以理解为综合(基于所述第一时间段中处理节点所依赖资源的使用数据、处理节点的运行数据、处理节点的任务处理数据所确定的)第一时间段中处理节点个体情况(包括处理节点的运行情况和任务处理情况),以及处理节点所依赖的资源的整体情况,所确定出的在保持稳定运行的前提下,处理节点在第二时间段(即当前下一个时间段)中所能处理完成的最大数据处理任务量。
在本实施方式中,上述根据所述第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据,确定目标处理节点的任务承载量,具体实施时,调度服务器可以根据第一时间段中处理节点所依赖资源的使用数据、第一时间段中处理节点的运行数据、第一时间段中处理节点的任务处理数据,确定出第一时间段中,基于所分配的数据处理任务和所完成的数据处理任务的处理情况,处理节点个体,以及处理节点所依赖的***资源整体的情况数据;再根据上述情况数据,在兼顾***、处理节点的运行稳定性,和资源利用率的前提下,按照一定的策略确定出第二时间段中处理节点的所能完成的任务量,即目标处理节点的任务承载量。
S45:向所述目标处理节点分配第二时间段的与所述任务承载量匹配的数据处理任务。
在本实施方式中,上述第二时间具体可以理解为区别第一时间段的一个时间段。例如,可以是下一个时间段,或者未来某个指定时间段等。
在本实施方式中,上述向所述目标处理节点分配第二时间段的与所述任务承载量匹配的数据处理任务,具体实施时,调度服务器在获取了第二时间段待处理的数据处理任务后,可以按照各个处理节点任务承载量,将上述第二时间段待处理的数据处理任务分配给***中各个处理节点。其中,每一个处理节点所分配得到的数据处理任务与处理节点的任务承载量匹配。例如,1号处理节点的任务承载量为3,则分配给1号处理节点的第二时间段的数据处理任务量可以为3,或者小于3的任务量。通过上述任务分配方式各个处理节点所分配得到的第二时间段的数据处理任务是符合处理节点个体,以及处理节点所依赖的***资源整体情况的,因此,基于上述分配的数据处理任务,可以有效地利用***资源和***中的处理节点,从而能稳定且高效地进行数据处理,提高数据处理效率。
由上可见,本说明书提供的任务分配方法,由于通过获取并利用第一时间段中处理节点所依赖资源的使用数据、处理节点的运行数据以及任务处理数据,精细地确定出处理节点的具体任务承载量,再根据任务承载量向处理节点分配第二时间段的数据处理任务,从而能根据处理节点个体,以及处理节点所依赖的***资源整体的具体情况,合理、准确地为处理节点分配任务,提高资源的利用率,使得多个处理节点能高效、稳定地进行数据处理。
在一个实施方式中,所述第一时间段中处理节点所依赖资源的使用数据具体可以包括以下至少之一:第一时间段中***CPU的使用率、第一时间段中***数据库的访问量、第一时间段中***内存的占用率等。当然,需要说明的是,上述所列举的处理节点所依赖资源的使用数据只是一种示意性说明,具体实施时,可以根据具体场景选择使用其他合适的参数数据作为上述处理节点所依赖资源的使用数据。对此,本说明书不作限定。
在一个实施方式中,所述第一时间段中处理节点的运行数据包括以下至少之一:第一时间段中处理节点的资源数据、第一时间段中处理节点的运行状态等。当然,需要说明的是,上述所列举的处理节点的运行数据只是一种示意性说明,具体实施时,可以根据具体场景选择使用其他合适的参数数据作为上述处理节点的运行数据。对此,本说明书不作限定。
在一个实施方式中,所述第一时间段中处理节点的任务处理数据包括以下至少之一:第一时间段中处理节点的数据处理任务的分配数量、第一时间段中处理节点未完成的数据处理任务的数量、第一时间段中处理节点处理失败的数据处理任务的数量、第一时间段中处理节点处理数据处理任务的处理时长等。当然,需要说明的是,上述所列举的处理节点的任务处理数据只是一种示意性说明,具体实施时,可以根据具体场景选择使用其他合适的参数数据作为上述处理节点的任务处理数据。对此,本说明书不作限定。
在一个实施方式中,上述获取第一时间段中处理节点所依赖资源的使用数据、第一时间段中处理节点的运行数据、第一时间段中处理节点的任务处理数据,具体实施时可以包括以下内容:通过预设在***中的感知模块采集所述多个处理节点在第一时间段中处理所分配的数据处理任务时的第一时间段中的处理节点的运行数据、任务处理数据和所依赖资源的使用数据。
在本实施方式中,上述感知模块具体可以理解为一种预先布设于***中,能够与***中的各个处理器,以及***中除上述处理节点以外的其他资源模块进行数据交互,采集相关的情况数据的装置或设备。具体的,上述感知模块可以通过数据交互,获取集群中各个处理节点,以及***除处理节点之外的其他资源模块的日志记录;进而可以对上述日志记录进行解析,得到第一时间段中处理节点所依赖资源的使用数据、第一时间段中处理节点的运行数据、第一时间段中处理节点的任务处理数据等情况数据。
在一个实施方式中,上述根据所述第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据,确定目标处理节点的任务承载量,具体实施时,可以包括以下内容:
S1:根据所述第一时间段中多个处理节点的运行数据、任务处理数据,确定多个符合数据处理任务的处理要求的处理节点;
S2:根据所述第一时间段中多个处理节点所依赖资源的使用数据、任务处理数据,确定第二时间段中待分配的数据处理任务的数量;
S3:根据所述多个符合数据处理任务的处理要求的处理节点、所述第二时间段中待分配的数据处理任务的数量,计算处理节点的平均任务量,作为所述目标处理节点的任务承载量。
在本实施方式中,上述符合数据处理任务的处理要求的处理节点,具体可以理解为能够正常运行,且基于历史的数据处理任务的处理情况,以及处理节点个体运行情况和处理节点所依赖资源的情况,在第二时间段还还能够接收处理的新的数据处理任务的处理节点。
在本实施方式中,上述根据所述第一时间段中多个处理节点的运行数据、任务处理数据,确定多个符合数据处理任务的处理要求的处理节点,具体的,可以是调度服务器根据第一时间段中处理节点的运行数据、第一时间段中处理节点的任务处理数据,确定出第一时间段中处理节点的运行状态(例如运行正常或运行异常等),以及各个处理节点的数据处理任务的处理情况(例如未完成的数据处理任务的数量或数据处理任务的处理失败量等);进而可以根据上述情况数据,从处理节点中先筛选出运行状态正常的处理节点;再从上述运行状态正常的处理节点中筛选出未完成数据处理任务的数量小于等于剩余任务数量阈值(或者数据处理任务的处理失败量小于等于失败数量阈值)的处理节点作为上述符合数据处理任务的处理要求的处理节点。
在本实施方式中,上述根据所述第一时间段中多个处理节点所依赖资源的使用数据、任务处理数据,确定第二时间段中待分配的数据处理任务的数量,具体实施时,调度服务器可以根据第一时间段中处理节点所依赖资源的使用数据、第一时间段中处理节点的任务处理数据,确定出针对第一时间段中***处理节点所分配的数据处理任务总量以及实际完成的数据处理任务量,处理节点所依赖的***资源的具体使用情况(例如***剩余的使用资源等),并基于***整体性能确定出***资源的使用阈值;再根据上述第一时间段中***处理节点所分配的数据处理任务总量以及实际完成的数据处理任务量,***资源的具体使用情况,结合***资源的使用阈值,以及第二时间段的具体时长确定出能够在保证***能稳定运行的前提所能处理的数据处理任务量的最大值作为第二时间段中待分配的数据处理任务的数量。
在本实施方式中,上述根据所述多个符合数据处理任务的处理要求的处理节点、所述第二时间段中待分配的数据处理任务的数量,计算处理节点的平均任务量,作为所述目标处理节点的任务承载量。具体实施时,考虑到***中处理节点数量较大,不同处理节点个体的运行情况和任务处理情况可能会存在差异,如果针对每一个处理节点个体的运行情况和任务处理情况分别计算每一个处理节点的任务承载量的话,势必需要占用大量的运算资源,影响确定效率。因此,调度服务器可以将上述第二时间段中待分配的数据处理任务的数量除以符合数据处理任务的处理要求的处理节点的数量,得到商值,作为处理节点的平均任务量;并将上述平均任务量统一作为目标处理节点的任务承载量,即各个处理节点第二时间段中能够处理完成的最大任务量。这样可以保证所确定的目标处理节点的任务承载量对集群中的大部分处理节点是合理、准确的,同时能够有效地降低确定目标处理节点的任务承载量的所要耗费的资源和时间,提高处理效率。
在一个实施方式中,在***中的处理节点的数量相对较少或者调度服务器的计算能力较强的情况,为了提高所确定的目标处理节点的任务承载量的精确度、可靠性,还可以根据每一个处理节点的具体情况,针对每一个处理节点的具体情况分别计算对应的任务承载量。
在本实施方式中,上述根据所述第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据,确定目标处理节点的任务承载量,具体实施时,还可以包括以下内容:
S1:根据所述第一时间段中多个处理节点的运行数据、任务处理数据,确定多个符合数据处理任务的处理要求的处理节点;
S2:统计***所述多个符合数据处理任务的处理要求的处理节点的数量;
S3:检测所述多个符合数据处理任务的处理要求的处理节点的数量是否小于预设的节点数量阈值;
S4:在所述符合数据处理任务的处理要求的处理节点的数量小于预设的节点数量阈值的情况下,从所述第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据中获取第一时间段中目标处理节点的任务处理数据和所依赖资源的使用数据;
S5:根据所述第一时间段中目标处理节点的任务处理数据和所依赖资源的使用数据,确定所述目标处理节点的任务承载量。
在本实施方式中,上述预设的节点数量阈值的具体数值可以根据***中调度服务器的数据处理能力、***中处理节点的数量,以及精确度要求灵活确定。
在本实施方式中,在所述符合数据处理任务的处理要求的处理节点的数量小于预设的节点数量阈值的情况下,可以从所获取的所述第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据中依次提取符合数据处理任务的处理要求的处理节点(即目标处理节点)的运行数据、任务处理数据和所依赖资源的使用数据;并根据目标处理节点的运行数据、任务处理数据和所依赖资源的使用数据,逐个确定出所对应的目标处理节点的任务承载量。这样确定出的不同处理节点的任务承载量根据处理节点的不同情况,可以是不相同的,不一定是统一的数值。进而后续调度服务器可以分别根据各个处理节点的任务承载量,为不同的处理节点分配不同数量的数据处理任务作为第二时间段的待处理的数据处理任务。这样可以更好地发挥出每一个处理节点的处理能力,进一步提高了任务分配的准确和合理性,使得基于上述分配数据处理更加高效、稳定。
在一个实施方式中,为了使得确定任务承载量高效、精确,上述根据所述第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据,确定目标处理节点的任务承载量,具体实施时,还可以包括以下内容:通过预设的任务承载量的预测模型,根据所述第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据,确定目标处理节点的任务承载量。
在本实施方式中,上述预设的任务承载量的预测模型具体可以是一种通过对历史数据(包括历史上处理节点所依赖资源的使用数据、处理节点的运行数据,以及历史上任务处理数据)进行学习训练,所建立的能够对未来某一个时间段中处理节点所能处理完成的数据处理任务量进行预测的模型。
在本实施地方时中,具体实施时,可以将上述第一时间段中处理节点所依赖资源的使用数据、第一时间段中处理节点的运行数据、第一时间段中处理节点的任务处理数据作为模型输入数据,输入至已经训练好的预设的任务承载量的预测模型,得到模型输出的结果数据,即第二时间段中各个处理节点的任务承载量。
在一个实施方式中,所述预设的任务承载量的预测模型具体可以按照以下方式建立:获取预设时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据,作为样本数据;利用所述样本数据进行训练,建立所述预设的任务承载量的预测模型。
在本实施方式中,上述预设时间段具体可以是指历史上的某一个或多个时间段。例如,可以是历史上***所处理的数据处理任务与第二时间段将要处理的数据处理任务相近的多个时间段。
在本实施方式中,具体实施时,可以利用上述样本数据对神经网络模型进行训练、学习,以建立得到上述预设的任务承载量的预测模型。
在本实施方式中,需要补充的是,上述所列举的多种实现根据所述第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据,确定目标处理节点的任务承载量的实施方式都是示意性说明。具体实施时,也可以根据具体的应用场景和实施要求,选择其他合适的实施方式来确定目标处理节点的任务承载量。对此,本说明书不作限定。
在一个实施方式中,具体实施时,调度服务器在为各个处理节点分配完第二时间段的数据处理任务后,还可以通过感知模块获取***中各个处理节点第二时间段中处理数据处理任务时的任务处理数据、处理节点的运行数据,以及处理节点所依赖资源的使用数据;根据上述数据确定出第二时间段中处理节点的运行和任务处理情况,以及处理节点所依赖的***资源的使用情况;并根据上述情况数据,对处理节点所分配的第二时间段的数据处理任务进行相应的调整。例如,根据上述数据发现第二时间段中处理节点Y的运行状态较差,第二时间段尚未处理的数据处理任务较多,可以将处理节点Y之前所分配的第二时间段的数据处理任务中的一部分分配给运行状态较好,第二时间段的数据处理任务已经处理完毕,已经处于空闲状态的处理节点X进行处理。这样可以有效地降低处理节点Y的处理压力,同时有效地利用处于空闲状态的处理节点X,进一步提高了资源利用率,避免了处理节点Y由于处理压力过高导致出现处理失败,使得数据处理更加的高效、稳定。
由上可见,本说明书提供的任务分配方法,由于通过获取并利用第一时间段中处理节点所依赖资源的使用数据、处理节点的运行数据以及任务处理数据,精细地确定出处理节点的具体任务承载量,再根据任务承载量向处理节点分配第二时间段的数据处理任务,从而能根据处理节点,以及处理节点所依赖的资源的具体情况,合理、准确地为各个处理节点分配任务,提高资源的利用率,使得集群能高效、稳定地进行数据处理;还通过利用预先训练好的预设的任务承载量的预测模型根据第一时间段中处理节点所依赖资源的使用数据、处理节点的运行数据以及任务处理数据确定用于任务分配的处理节点的任务承载量,提高了所确定的任务承载量的准确度和合理性,使得任务分配更加的准确、合理。
本说明书实施例还提供了一种服务器,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器具体实施时可以根据指令执行以下步骤:获取第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据;根据所述第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据,确定目标处理节点的任务承载量;向所述目标处理节点分配第二时间段的与所述任务承载量匹配的数据处理任务。
为了能够更加准确地完成上述指令,参阅图5所示,本说明书还提供了另一种具体的服务器,其中,所述服务器包括网络通信端口501、处理器502以及存储器503,上述结构通过内部线缆相连,以便各个结构可以进行具体的数据交互。
其中,所述网络通信端口501,具体可以用于获取第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据。
所述处理器502,具体可以用于根据所述第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据,确定目标处理节点的任务承载量;向所述目标处理节点分配第二时间段的与所述任务承载量匹配的数据处理任务。
所述存储器503,具体可以用于存储经网络通信端口501获取的多种数据,以及相应的指令程序。
在本实施方式中,所述网络通信端口501可以是与不同的通信协议进行绑定,从而可以发送或接收不同数据的虚拟端口。例如,所述网络通信端口可以是负责进行web数据通信的80号端口,也可以是负责进行FTP数据通信的21号端口,还可以是负责进行邮件数据通信的25号端口。此外,所述网络通信端口还可以是实体的通信接口或者通信芯片。例如,其可以为无线移动网络通信芯片,如GSM、CDMA等;其还可以为Wifi芯片;其还可以为蓝牙芯片。
在本实施方式中,所述处理器502可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application SpecificIntegratedCircuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。本说明书并不作限定。
在本实施方式中,所述存储器503可以包括多个层次,在数字***中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在***中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。
本说明书实施例还提供了一种基于上述任务分配方法的计算机存储介质,所述计算机存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现:获取第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据;根据所述第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据,确定目标处理节点的任务承载量;向所述目标处理节点分配第二时间段的与所述任务承载量匹配的数据处理任务。
在本实施方式中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard DiskDrive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
在本实施方式中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
参阅图6所示,在软件层面上,本说明书实施例还提供了一种任务分配装置,该装置具体可以包括以下的结构模块:
获取模块601,具体可以用于获取第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据;
确定模块602,具体可以用于根据所述第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据,确定目标处理节点的任务承载量;
分配模块603,具体可以用于向所述目标处理节点分配第二时间段的与所述任务承载量匹配的数据处理任务。
在一个实施方式中,所述第一时间段中处理节点所依赖资源的使用数据具体可以包括以下至少之一:第一时间段中***CPU的使用率、第一时间段中***数据库的访问量、第一时间段中***内存的占用率等。
在一个实施方式中,所述第一时间段中处理节点的运行数据具体可以包括以下至少之一:第一时间段中处理节点的资源数据、第一时间段中处理节点的运行状态等。
在一个实施方式中,所述第一时间段中处理节点的任务处理数据具体可以包括以下至少之一:第一时间段中处理节点的数据处理任务的分配数量、第一时间段中处理节点未完成的数据处理任务的数量、第一时间段中处理节点处理失败的数据处理任务的数量、第一时间段中处理节点处理数据处理任务的处理时长等。
在一个实施方式中,所述获取模块601具体可以具体通过预设在***中的感知模块采集所述多个处理节点在第一时间段中处理所分配的数据处理任务时的第一时间段中的处理节点的运行数据、任务处理数据和所依赖资源的使用数据。
在一个实施方式中,所述确定模块602,具体可以包括以下结构单元:
第一确定单元,具体可以用于根据所述第一时间段中多个处理节点的运行数据、任务处理数据,确定多个符合数据处理任务的处理要求的处理节点;
第二确定单元,具体可以用于根据所述第一时间段中多个处理节点所依赖资源的使用数据、任务处理数据,确定第二时间段中待分配的数据处理任务的数量;
计算单元,具体可以用于根据所述多个符合数据处理任务的处理要求的处理节点、所述第二时间段中待分配的数据处理任务的数量,计算处理节点的平均任务量,作为所述目标处理节点的任务承载量。
在一个实施方式中,所述确定模块602具体可以包括以下结构单元:
第一确定单元,具体可以用于根据所述第一时间段中多个处理节点的运行数据、任务处理数据,确定多个符合数据处理任务的处理要求的处理节点;
统计单元,具体可以用于统计***所述多个符合数据处理任务的处理要求的处理节点的数量;
检测单元,具体可以用于检测所述多个符合数据处理任务的处理要求的处理节点的数量是否小于预设的节点数量阈值;
第三确定单元,具体可以用于在所述符合数据处理任务的处理要求的处理节点的数量小于预设的节点数量阈值的情况下,从所述第一时间段中多个处理节点的运行数据、任务处理数据和所依赖资源的使用数据中获取第一时间段中目标处理节点的任务处理数据和所依赖资源的使用数据;
第四确定单元,具体可以用于根据所述第一时间段中目标处理节点的任务处理数据和所依赖资源的使用数据,确定所述目标处理节点的任务承载量。
需要说明的是,上述实施例阐明的单元、装置或模块等,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
由上可见,本说明书实施例提供的任务分配装置,通过获取模块获取第一时间段中处理节点所依赖资源的使用数据、处理节点的运行数据以及任务处理数据,通过确定模块根据上述数据精细地确定出处理节点的具体任务承载量,再通过分配模块根据任务承载量向处理节点分配第二时间段的数据处理任务,从而能根据***以及处理节点的具体情况,合理、准确地为处理节点分配任务,提高资源的利用率,高效、稳定地进行数据处理。
虽然本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本说明书可用于众多通用或专用的计算机***环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器***、基于微处理器的***、置顶盒、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何***或设备的分布式计算环境等等。
虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书的精神。