分布式分配方法及系统与流程

文档序号:11216076阅读:480来源:国知局
分布式分配方法及系统与流程

本发明涉及分布式系统技术领域,特别涉及一种分布式分配方法及系统。



背景技术:

分布式系统中,通过将任务分解为多个子任务,并将这些子任务分配到多个服务器中执行,从而实现任务的分布式执行。例如,分布式分配方案中,目标任务存在对应的多个子任务,通过将目标任务对应的子任务分配至多个执行服务器中,实现任务的分布式执行。

然而,目标任务的测试时间取决于测试时间最长的执行服务器,只有在所有的子任务执行完成后,目标任务才执行完成。而目前的分布式分配方案中,均是对目标任务对应的子任务随机分配。由于目标任务对应的各子任务的执行时长不同,造成各执行服务器分配到的子任务的执行时长存在较大的差异,导致目标任务的执行时间大大增大,从而大大影响了分布式分配的整体测试效率。



技术实现要素:

为了解决相关技术中分布式分配时任务的执行时长较大的技术问题,本发明提供了一种分布式分配方法及系统。

本发明实施例提供了一种分布式分配方法,包括:

接收目标任务,确定所述目标任务对应的子任务;

获取所述子任务的历史执行时长及执行服务器的数量;

根据各子任务的历史执行时长,将所述子任务分组为组数与所述数量相同的子任务集;

耦合所述执行服务器与所述目标任务,将所述子任务按照所述子任务集分别分配至各执行服务器中。

另外,本发明实施例提供了一种分布式分配系统,包括:

用例确定模块,用于接收目标任务,确定所述目标任务对应的子任务;

用例分组模块,用于根据各子任务的历史执行时长,将所述子任务分组为组数与执行服务器数量相同的子任务集;

用例集分配模块,用于耦合所述执行服务器与所述目标任务,将所述子任务按照所述子任务集分别分配至各执行服务器中执行。

此外,本发明实施例还提供了一种系统,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为执行:

接收目标任务,确定所述目标任务对应的子任务;

获取所述子任务的历史执行时长及执行服务器的数量;

根据各子任务的历史执行时长,将所述子任务分组为组数与所述数量相同的子任务集;

耦合所述执行服务器与所述目标任务,将所述子任务按照所述子任务集分别分配至各执行服务器中。

本发明的实施例提供的技术方案可以包括以下有益效果:

在分布式处理时,接收目标任务,确定目标任务对应的子任务,获取所述子任务的历史执行时长及执行服务器的数量,根据各子任务的历史执行时长,将所述子任务分组为组数与所述数量相同的子任务集,耦合所述执行服务器与所述目标任务,将所述子任务按照所述子任务集分别分配至各执行服务器中,由于各执行服务器分配的子任务集是根据各子任务的历史执行时长而分配的,因而各执行服务器对子任务的执行时长的差异较小,减短了目标任务的执行时间,从而大大提高了分布式处理时对任务的执行效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

图1是根据一示例性实施例示出的一种分布式分配方法流程图。

图2是根据图1对应实施例示出的另一种分布式分配方法流程图。

图3是图1对应实施例示出的分布式分配方法中步骤s120的一种具体实现流程图。

图4是根据图1对应实施例示出的另一种分布式分配方法流程图。

图5是zookeeper中进行分布式分配的具体应用场景示意图。

图6是根据一示例性实施例示出的一种分布式分配系统框图。

图7是根据图6对应实施例示出的另一种分布式分配系统框图。

图8是图6对应实施例示出的分布式分配系统中用例分组模块120的框图。

图9是根据图6对应实施例示出的另一种分布式分配系统框图。

图10是根据一示例性实施例示出的一种系统的结构框图。

具体实施方式

这里将详细地对示例性实施例执行说明,其示例表示在附图中。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

图1是根据一示例性实施例示出的一种分布式分配方法流程图。如图1所示,该分布式分配方法可以包括以下步骤。

在步骤s110中,接收目标任务,确定所述目标任务对应的子任务。

目标任务是当前需执行的任务。子任务为对目标任务进行分解后对应的分任务。

在一具体的示例性实施例中,目标任务为测试任务,通过对目标对象进行测试,判断目标对象是否满足预期要求的工作内容;子任务是为执行目标任务而编制的一组测试输入、执行条件以及预期结果,以便测试目标对象是否满足某个特定需求。

需要说明的是,目标任务对应有一个或多个子任务。

通过执行目标任务对应的子任务,实现对该目标任务的执行,进而获取相应的执行结果。

在步骤s120中,获取所述子任务的历史执行时长及执行服务器的数量;

历史执行时长是过去执行子任务时的执行时长。

需要说明的是,执行每一个子任务时,将对子任务的执行时间进行记录,进而获取子任务的历史执行时长。

执行服务器是对执行子任务的服务器。

可以理解的是,在分布式系统中,执行服务器的数量是有限的。

分布式系统运行中,将对各执行服务器的运行状态进行监控,进而根据各执行服务器的运行状态分配任务。

在步骤s130中,根据各子任务的历史执行时长,将所述子任务分组为组数与所述数量相同的子任务集。

通过多个执行服务器并行执行目标任务对应的子任务,实现目标任务的分布式执行,从而减小对该目标任务的执行时间。

因此,在目标任务对应的子任务为多个时,需对子任务进行分组,进而分配到执行服务器执行。

子任务集是对子任务分组后的子任务集合。

可以理解的是,目标任务的执行时间与对应的所有子任务的执行时长相关,即在目标任务对应的子任务全部执行完毕后,该目标任务才执行完成。

因此,在将子任务分组为多个子任务集时,若不考虑各子任务的执行时长而随机进行子任务的分配,将可能导致部分子任务集的执行时长过大,从而延长了目标任务的执行时间,大大降低了任务执行效率。

例如,目标任务a对应的子任务分别为子任务a1、a2、a3、a4,子任务a1、a2、a3、a4的历史执行时长分别为3秒、4秒、5秒、12秒。将子任务a1、a2、a3、a4分组为2个子任务集时,若随机对子任务进行分配,将子任务a1、a2分为一个子任务集x,将子任务a3、a4分为一个子任务集y,很明显,子任务集x的执行时长为7秒,而子任务集y的执行时长为17秒。

而在对子任务分组时,按照各子任务的历史执行时长进行分组,使分组后的各子任务集的执行时长趋于一致,将大大减少目标任务的执行时间。

例如,目标任务a对应的子任务分别为子任务a1、a2、a3、a4,子任务a1、a2、a3、a4的历史执行时长分别为3秒、4秒、5秒、12秒。将子任务a1、a2、a3、a4分组为2个子任务集时,根据子任务a1、a2、a3、a4的历史执行时长,将子任务a1、a2、a3分为一个子任务集m,将子任务a4单独分为一个子任务集n,很明显,子任务集m的执行时长为12秒,而子任务集n的执行时长为12秒,从而大大减短了目标任务a的执行时间。

实现根据各子任务的历史执行时长进行分组的方式有多种。可以按照历史执行时长对各子任务进行排序,进而根据排序将子任务分组为数量与执行服务器数量相等的子任务集,并且各子任务集的执行时长趋于一致;也可以预先将历史执行时长最大的子任务分为一个子任务集,进而再将其余的子任务分组为数量比执行服务器数量少一个的子任务集;也可以先根据执行服务器的数量,计算将子任务平均分为该数量的子任务集时每一个子任务集的执行时长,进而该执行时长进行子任务的分组;也可以预先选取多组方式,在按照各分组方式进行子任务的分组后,选取各分组方式中执行时长最大的子任务集,进而比较这些执行时长最大的子任务集的数值大小,按照数值最小的子任务集对应的分组方式进行子任务的分组;还可以采用其它的分组方式,根据各子任务的执行时长进行分组,使分组后各子任务集的执行时长尽可能趋于一致。

在步骤s140中,耦合所述执行服务器与所述目标任务,将所述子任务按照所述子任务集分别分配至各执行服务器中。

耦合是在执行服务器与目标任务之间建立连接。

在执行服务器与目标任务耦合后,将目标任务对应的子任务分配至各执行服务器,进而各执行服务器分别执行分配的子任务。

按照子任务集将子任务分配至服务器时,可以按照子任务集随机一一分配至各服务器,也可以按照各子任务集执行时长的大小顺序,将子任务集依次分配至各执行服务器中,还可以通过其他方式将子任务集分配至各服务器,在此不作限定。

在各执行服务器分别执行完分配的子任务时,完成目标任务的执行。

通过如上所述的方法,在接收目标任务后,根据目标任务对应的各子任务的历史执行时长,对子任务进行分组,从而更合理地对子任务进行分配,减短了目标任务的执行时间,大大提高了任务分布式执行的效率。

图2是根据一示例性实施例示出的一种分布式分配方法流程图。如图2所示,子任务为测试用例,在图1对应实施例中的步骤s110之前,该分布式分配方法还可以包括以下步骤。

在步骤s210中,监听代码库中的测试用例代码更新。

目标任务为测试任务时,对应的子任务为测试用例,而测试用例代码存储于代码库中。

需要说明的是,对测试用例不定期进行代码更新,使测试用例的测试功能更加完善。

在一个具体的示例性实施例中,测试用例的代码存储于git(一种开源的分布式版本控制系统)代码服务器中,通过监控git代码服务器中的代码提交情况,实现对测试用例代码更新的监控。

在步骤s220中,根据更新进行测试用例的预编译。

预编译又称为预处理,是在测试用例编译之前最先做的工作,例如,代码的下载、编译环境的安装包准备等。

可以理解的是,计算机无法直接识别以测试用例代码编写的测试用例,通过编译将测试用例代码编译成二进制语言,以便计算机识别运行。

需要说明的是,目标任务为测试任务时,测试任务的执行时间包括测试环境的准备时间及相应测试用例的执行时间,而测试环境的准备时间包括测试用例的代码下载、编译环境的安装包准备、编译等时间。

因此,在监听到测试用例代码的更新时,即进行测试用例代码的下载、编译环境的安装包准备等工作,从而缩短测试环境的准备时间。

通过如上所述的方法,在接收目标任务之前,根据测试用例代码更新,提前进行测试用例代码的下载、编译环境的安装包准备等测试环境准备工作,大大缩短了测试环境的准备时间,并且在接收目标任务后,根据目标任务对应的各测试用例的历史执行时长,对测试用例进行分组,使分组后的各测试用例集的执行时长趋于一致,更合理地对测试用例进行分配,从而使测试环境的准备时间和测试用例的执行时间均大大缩短,减短了目标任务的执行时间,大大提高了整体测试效率。

图3是根据一示例性实施例示出的对步骤s130进一步的细节的描述。该步骤s130可以包括以下步骤。

在步骤s131中,根据各子任务的历史执行时长,计算所有子任务的历史执行时长之和。

如前所述的,各执行服务器执行子任务后,将对子任务进行执行时长的记录。

因而通过各子任务的历史执行时长,计算出目标任务对应的所有子任务的历史执行时长之和。

在步骤s132中,计算将所述子任务分组为所述数量的组数时的平均执行时长。

很明显,分布式分配系统中,参与测试的执行服务器的数量时有限的。

在一具体的示例性实施例中,执行服务器的数量为5,目标任务对应的所有子任务的历史执行时长之和为100秒,则将子任务分组为5组时每一组的平均执行时长为20秒。

在步骤s133中,根据所述平均执行时长对所述子任务进行分组,得到组数与所述数量相同的子任务集。

根据平均执行时长将子任务分组得到组数与执行服务器数量相同的子任务集时,可以先选取一组或多种子任务,使选取的子任务的历史执行时长之和最接近于平均执行时长,进而依照同样的方式对剩余的子任务分组,得到组数与执行服务器数量相同的子任务集;也可以先对子任务进行历史执行时长的排序,进而根据排序,选取历史执行时长最小的一个或多个子任务,使选取的子任务的历史执行时长之和最接近于平均执行时长,进而采用同样的方式依照历史执行时长从小到大对剩余子任务分组,得到组数与执行服务器数量相同的子任务集;还可以采用其它的方式根据平均执行时长将子任务分组得到组数与执行服务器数量相同的子任务集,在此不作限定。

通过如上所述的方法,在接收目标任务后,计算将子任务分组为执行服务器数量的组数时的平均执行时长,进而根据平均执行时长对子任务进行分组,使分组后的各子任务集的执行时长趋于一致,更合理地对子任务进行分配,减短了目标任务的执行时间,大大提高了任务的整体执行效率。

图4是根据一示例性实施例示出的一种分布式分配方法流程图。如图4所示,在图1对应实施例中到步骤s140之后,该分布式分配方法还可以包括以下步骤。

在步骤s310中,针对每一个子任务,记录所述子任务的实际执行时长。

执行服务器在执行每一个子任务时,将进行子任务执行时长的统计,从而为后续执行该子任务时提供执行时长的参考。

在步骤s320中,根据所述实际执行时长,对所述子任务的历史执行时长进行更新。

可以理解是,当一子任务被多次执行时,由于执行服务器不同等因素,每一次执行的实际执行时长或多或少地存在些许差异。

因此,根据子任务的实际执行时长,通过对子任务的历史执行时长更新,在以后的子任务分配中参考子任务最新的实际执行时长,使子任务的分配更加合理。

根据实际执行时长对子任务的历史执行时长进行更新时,可以将该实际执行作为该子任务的历史执行时长;也可以根据该子任务以往的所有实际执行时长,计算平均实际执行时长作为该子任务的历史执行时长;还可以通过其他的方式根据实际执行时长进行子任务的历史执行时长更新,在此不作限定。

通过如上所述的方法,通过记录每一个子任务的实际执行时长,对子任务的历史执行时长进行更新,从而在以后的子任务分组时能够参考最新的实际执行时长,大大提高了进行子任务分配的合理性,减短了目标任务的执行时间。

可选的,根据一示例性实施例示出的一种分布式分配方法流程图。在图1对应实施例中到步骤s140之后,该分布式分配方法还可以包括以下步骤。

在步骤中,针对每一个执行服务器,在所述执行服务器将分配的子任务集中的子任务执行完毕后,将所述执行服务器与所述目标任务解耦合。

如前所述的,执行服务器执行分配的子任务时之前,须与对应的目标任务耦合。

在执行服务器执行完分配的子任务后,即使目标任务对应其它子任务仍未执行完毕,仍将该执行服务器与目标任务解耦合,从而释放该执行服务器,避免该执行服务器无子任务执行时仍被占用,从而避免服务器资源的浪费,为目标任务提供更多的执行服务器,减短了目标任务的执行时间,大大提高了任务的分布式执行的效率。

下面结合具体的应用场景来详细阐述如上的分布式分配方法。如图5所示,在该具体的应用场景中,分布式分配方法运行于zookeeper(一种分布式服务系统)中。

在zookeeper中,用例集调度中心s520实时监控git代码服务器s510中的代码更新,在监控到代码更新后,从git代码服务器s510中下载测试用例代码,预先准备编译环境的安装包。

用例执行调度中心s530接收测试任务后,将任务信息写入zookeepers550中,从zookeepers550中获取测试任务对应的测试用例信息后,发送给用例集调度中心s520;并选取测试任务对应的用例执行环境s540,控制用例执行环境s540进行测试安装包的下载。

用例集调度中心s520根据测试用例信息从zookeepers550中获取各测试用例的执行耗时及相应的可用执行服务器,进而根据各测试用例的执行耗时及可用执行服务器的数量进行测试用例的分配,得到测试用例集。

用例执行调度中心s530从用例集调度中心s520获取相应的测试用例集,进而将分配至相应的执行服务器中执行。

用例执行环境s540对测试用例的执行情况进行记载,并发送至zookeepers550中。

下述为本发明系统实施例,可以用于执行上述分布式分配方法实施例。对于本发明系统实施例中未披露的细节,请参照本发明分布式分配方法实施例。

图6是根据一示例性实施例示出的一种分布式分配系统框图,该系统包括但不限于:用例确定模块110、用例分组模块120及用例集分配模块130。

用例确定模块110,用于接收目标任务,确定所述目标任务对应的子任务;

用例分组模块120,用于根据各子任务的历史执行时长,将所述子任务分组为组数与执行服务器数量相同的子任务集;

用例集分配模块130,用于耦合所述执行服务器与所述目标任务,将所述子任务按照所述子任务集分别分配至各执行服务器中执行。

上述系统中各个模块的功能和作用的实现过程具体详见上述分布式分配方法中对应步骤的实现过程,在此不再赘述。

图7是根据图6对应实施例示出的一种分布式分配系统框图,该系统还包括但不限于:代码更新监听模块210及预编译模块220。

代码更新监听模块210,用于监听代码库中的子任务代码更新;

预编译模块220,用于根据所述更新进行子任务的预编译。

可选的,如图8所示,图6中的用例分组模块120包括但不限于:测试信息获取单元121、平均执行时长计算单元122和用例分组单元123。

测试信息获取单元121,用于获取执行服务器数量及所有子任务的历史执行时长之和;

平均执行时长计算单元122,用于计算将所述子任务分组为所述执行服务器数量的组数时每一组的平均执行时长;

用例分组单元123,用于根据所述平均执行时长对所述子任务进行分组,得到组数与所述执行服务器数量相同子任务集。

图9是根据图6对应实施例示出的一种分布式分配系统框图,该系统还包括但不限于:实际执行时长获取模块310及历史执行时长更新模块320。

实际执行时长获取模块310,用于针对每一个子任务,获取所述子任务的实际执行时长;

历史执行时长更新模块320,用于根据所述实际执行时长,对所述子任务的历史执行时长进行更新。

可选的,在一示例性实施例中,图6对应实施例示出的分布式分配系统还可以包括:解耦合模块。

解耦合模块,用于针对每一个执行服务器,在所述执行服务器将分配的子任务集中的子任务执行完毕后,将所述执行服务器与所述目标任务解耦合。

图10是根据一示例性实施例示出的一种系统100的框图。参考图10,系统100可以包括以下一个或者多个组件:处理组件101,存储器102,电源组件103,多媒体组件104,音频组件105,传感器组件107以及通信组件108。其中,上述组件并不全是必须的,系统100可以根据自身功能需求增加其他组件或减少某些组件,本实施例不作限定。

处理组件101通常控制系统100的整体操作,诸如与显示,电话呼叫,数据通信,相机操作以及记录操作相关联的操作等。处理组件101可以包括一个或多个处理器109来执行指令,以完成上述操作的全部或部分步骤。此外,处理组件101可以包括一个或多个模块,便于处理组件101和其他组件之间的交互。例如,处理组件101可以包括多媒体模块,以方便多媒体组件104和处理组件101之间的交互。

存储器102被配置为存储各种类型的数据以支持在系统100的操作。这些数据的示例包括用于在系统100上操作的任何应用程序或方法的指令。存储器102可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如sram(staticrandomaccessmemory,静态随机存取存储器),eeprom(electricallyerasableprogrammableread-onlymemory,电可擦除可编程只读存储器),eprom(erasableprogrammablereadonlymemory,可擦除可编程只读存储器),prom(programmableread-onlymemory,可编程只读存储器),rom(read-onlymemory,只读存储器),磁存储器,快闪存储器,磁盘或光盘。存储器102中还存储有一个或多个模块,该一个或多个模块被配置成由该一个或多个处理器109执行,以完成图2、图3、图4、图5和图6任一所示方法中的全部或者部分步骤。

电源组件103为系统100的各种组件提供电力。电源组件103可以包括电源管理系统,一个或多个电源,及其他与为系统100生成、管理和分配电力相关联的组件。

多媒体组件104包括在所述系统100和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括lcd(liquidcrystaldisplay,液晶显示器)和tp(touchpanel,触摸面板)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。

音频组件105被配置为输出和/或输入音频信号。例如,音频组件105包括一个麦克风,当系统100处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器102或经由通信组件108发送。在一些实施例中,音频组件105还包括一个扬声器,用于输出音频信号。

传感器组件107包括一个或多个传感器,用于为系统100提供各个方面的状态评估。例如,传感器组件107可以检测到系统100的打开/关闭状态,组件的相对定位,传感器组件107还可以检测系统100或系统100一个组件的位置改变以及系统100的温度变化。在一些实施例中,该传感器组件107还可以包括磁传感器,压力传感器或温度传感器。

通信组件108被配置为便于系统100和其他设备之间有线或无线方式的通信。系统100可以接入基于通信标准的无线网络,如wifi(wireless-fidelity,无线网络),2g或3g,或它们的组合。在一个示例性实施例中,通信组件108经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件108还包括nfc(nearfieldcommunication,近场通信)模块,以促进短程通信。例如,在nfc模块可基于rfid(radiofrequencyidentification,射频识别)技术,irda(infrareddataassociation,红外数据协会)技术,uwb(ultra-wideband,超宽带)技术,bt(bluetooth,蓝牙)技术和其他技术来实现。

在示例性实施例中,系统100可以被一个或多个asic(applicationspecificintegratedcircuit,应用专用集成电路)、dsp(digitalsignalprocessing,数字信号处理器)、pld(programmablelogicdevice,可编程逻辑器件)、fpga(field-programmablegatearray,现场可编程门阵列)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。

该实施例中的系统的处理器执行操作的具体方式已经在有关该数据传输的控制方法的实施例中执行了详细描述,此处将不再做详细阐述说明。

可选的,本发明还提供一种系统,执行图1、图2、图3和图4任一所示的分布式分配方法的全部或者部分步骤。所述系统包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为执行:

接收目标任务,确定所述目标任务对应的子任务;

获取所述子任务的历史执行时长及执行服务器的数量;

根据各子任务的历史执行时长,将所述子任务分组为组数与所述数量相同的子任务集;

耦合所述执行服务器与所述目标任务,将所述子任务按照所述子任务集分别分配至各执行服务器中。

该实施例中的系统的处理器执行操作的具体方式已经在有关该分布式分配方法的实施例中执行了详细描述,此处将不做详细阐述说明。

在示例性实施例中,还提供了一种存储介质,该存储介质为计算机可读存储介质,例如可以为包括指令的临时性和非临时性计算机可读存储介质。该存储介质例如包括指令的存储器102,上述指令可由系统100的处理器109执行以完成上述分布式分配方法。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,本领域技术人员可以在不脱离其范围执行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1