多终端的任务分配方法、装置、电子设备及可读存储介质
技术领域
本发明运维
技术领域
,尤其涉及一种多终端的任务分配方法、装置、电子设备及可读存储介质。背景技术
在互联网领域多终端的任务分配应用场景十分广泛,在多终端的任务分配过程中,合理的分配资源,对任务完成进度及完成质量都有很大的影响。
目前,任务的分配常采用平均分配,忽略了终端本身的的处理能力及终端的工作负载量,常常导致任务完成超期,处理任务的效率低下。
发明内容
本发明提供一种多终端的任务分配方法、装置、电子设备及计算机可读存储介质,其主要目的在于提高任务处理的效率。
为实现上述目的,本发明提供的一种多终端的任务分配方法,包括:
获取多个终端的总任务清单及待分配至所述多个终端的总任务量,利用所述总任务清单,确定所述多个终端的历史任务执行时间;
根据所述总任务量确定所述多个终端的最低任务及所述多个终端的总需求任务;
根据所述终端的总数和预设分配比例确定分配所述总需求任务的需求终端的数量;
确定向所述需求终端迭代分配所述总需求任务时的迭代轮次和每轮迭代对应的待分配任务数量;
根据所述多个终端的历史任务执行时间确定向所有所述需求终端分配的分配顺序;
将所述最低任务分配至所述多个终端,以及根据所述分配顺序将所述每轮迭代对应的待分配任务数量迭代分配至所述需求终端。
可选地,所述根据所述分配顺序将所述每轮迭代对应的待分配任务数量迭代分配至所述需求终端,包括:
执行第i轮迭代分配时,判断所述i的值是否达到所述迭代轮次,其中i的初始值为1;
当所述i的值未达到所述迭代轮次时,确定在所述分配顺序中第i个需求终端为待分配终端,按照所述分配顺序将第i轮迭代对应的待分配任务数量分配至所述待分配终端;
令i的值增加1,再次执行所述判断所述i的值是否达到所述迭代轮次的操作,直至所述i的值大于所述迭代轮次时,停止迭代分配。
可选地,所述根据所述分配顺序将所述每轮迭代对应的待分配任务数量迭代分配至所述需求终端,包括:
执行第i轮迭代分配时,判断所述i的值是否达到所述迭代轮次,其中i的初始值为1;
当所述i的值未达到所述迭代轮次时,将第i轮迭代对应的待分配任务数量按照所述分配顺序平均分配至所有所述需求终端;
若分配之后第i轮迭代对应的待分配任务数量还有剩余,则再将剩余的所述第i轮迭代对应的待分配任务数量按照所述分配顺序依次分配至所述需求终端;
令i的值增加1,再次执行所述判断所述i的值是否达到所述迭代轮次的操作,直至所述i的值大于所述迭代轮次时,停止迭代分配。
可选地,所述确定向所述需求终端迭代分配所述总需求任务时的迭代轮次和每轮迭代对应的待分配任务数量,包括:
确定所述总需求任务的最低分配数量与所述最低任务的数量相等;
根据所述需求终端的数量与所述最低分配数量,确定每个需求终端的平均分配任务数量;
将所述平均分配任务数量与所述最低分配数量进行算数运算,得到所述总需求任务的初始最高分配数量;
确定所述初始最高分配数量为第一轮迭代对应的待分配任务数量;
将所述初始最高分配数量依次递减预设间隔数量的任务数量,直到递减所得到的分配数量等于所述最低分配数量时,确定递减次数加一为迭代分配的迭代轮次,以及获取每次递减后的分配数量为第一轮迭代以外的每轮迭代对应的待分配任务数量。
可选地,所述根据所述多个终端的历史任务执行时间确定向所有所述需求终端分配的分配顺序,包括:
获取所述多个终端的工作列表,基于所述工作列表,查询所有所述需求终端完成任务的总数及花费的时间,确定每个所述需求终端的历史任务执行时间;
将所有所述需求终端按照所述历史任务执行时间从长至短的顺序排序,确定所述排序为向所有所述需求终端分配的分配顺序。
可选地,所述根据所述总任务量确定所述多个终端的最低任务及所述多个终端的总需求任务,包括:
根据所述多个终端的总数从所述总任务量中选取预设任务数量作为总最低计划完成任务;
将所述总任务量减去所述总最低计划完成任务得到所述多个终端的总需求任务;
将所述总最低计划除以所述多个终端的总数,得到多个终端的最低任务。
可选地,所述获取多个终端的总任务清单及待分配至所述多个终端的总任务量,包括:
获取所述总任务清单,其中,所述总任务清单包括任务名称及任务完成进度;
根据所述任务名称和所述任务完成进度,确定历史时间段内的历史任务完成总数;
根据所述历史任务完成总数确定待分配至所述多个终端的总任务量。
为了解决上述问题,本发明还提供一种多终端的任务分配装置,所述装置包括:
总任务划分模块,用于获取多个终端的总任务清单及待分配至所述多个终端的总任务量,利用所述总任务清单,确定所述多个终端的历史任务执行时间,根据所述总任务量确定所述多个终端的最低任务及所述多个终端的总需求任务;
需求任务划分模块,用于根据所述终端的总数和预设分配比例确定分配所述总需求任务的需求终端的数量,确定向所述需求终端迭代分配所述总需求任务时的迭代轮次和每轮迭代对应的待分配任务数量,根据所述多个终端的历史任务执行时间确定向所有所述需求终端分配的分配顺序;
多终端任务分配模块,用于将所述最低任务分配至所述多个终端,以及根据所述分配顺序将所述每轮迭代对应的待分配任务数量迭代分配至所述需求终端。
为了解决上述问题,本发明还提供一种电子设备,所述电子设备包括:
存储器,存储至少一个计算机程序;及
处理器,执行所述存储器中存储的计算机程序以实现上述所述的多终端的任务分配方法。
为了解决上述问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个计算机程序,所述至少一个计算机程序被电子设备中的处理器执行以实现上述所述的多终端的任务分配方法。
本发明实施例在分配过程中确定所有终端的最低任务以及总需求任务,再向所有终端分配最低任务,向需求终端迭代分配总需求任务,实现了任务分配时根据终端差异进行分配,任务分配更加合理,避免了任务分配过多或者过少的问题,使任务分配之后能够被终端尽快执行,从而能够提高任务处理的效率。因此本发明实施例提出的多终端的任务分配方法、装置、电子设备及可读存储介质可以实现提高任务处理的效率的目的。
附图说明
图1为本发明一实施例提供的多终端的任务分配方法的流程示意图;
图2为本发明一实施例提供的多终端的任务分配装置的模块示意图;
图3为本发明一实施例提供的实现多终端的任务分配方法的电子设备的内部结构示意图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例提供一种多终端的任务分配方法。所述多终端的任务分配方法的执行主体包括但不限于服务端、终端等能够被配置为执行本申请实施例提供的该方法的电子设备中的至少一种。换言之,所述多终端的任务分配方法可以由安装在终端设备或服务端设备的软件或硬件来执行,所述软件可以是区块链平台。所述服务端包括但不限于:单台服务器、服务器集群、云端服务器或云端服务器集群等。
参照图1所示的本发明一实施例提供的多终端的任务分配方法的流程示意图,在本发明实施例中,所述多终端的任务分配方法包括:
S1、获取多个终端的总任务清单及待分配至所述多个终端的总任务量,利用所述总任务清单,确定所述多个终端的历史任务执行时间。
本实施例中,所述多个终端为待分配任务的终端。其中,多个终端可以为相同或不同的电子设备,比如,多个终端都为电脑,或者有的终端为电脑,有的终端为服务器。
本实施例中,所述总任务清单和总任务量以及历史任务执行时间可以存储在本地,例如,存储在本地的处理单元的存储空间中。所述处理单元指的是可以对指令执行一系列操作的单元,例如,取出指令、分析指令和执行指令。
所述总任务清单包含至少两个预设时间段内(历史时间段内和当前时间段内,如上个季度和这个季度内)已执行和计划执行的所有任务的名称、和任务总数以及这些任务的完成进度。
例如,总任务清单包含从上个季度至这个季度的200个计划执行的任务,其中有的任务已执行完毕,有的任务正在执行中,有的任务还未开始执行。
本实施例中,所述总任务量为当前时间段内,比如本季度内计划分配至多个终端,由多个终端完成的所有任务的数量。
例如,总任务量为本季度内计划分配至多个终端的所有任务数量,具体的,总任务量为100个计划执行的任务。
本实施例中,所述终端的历史任务执行时间可以为终端完成历史时间段内自身工作列表中的所有任务所花费的时间,其中,所述自身工作列表可以是每个终端在历史时间段内计划执行的所有任务数量及花费的时间,包括完成的任务花费的具体时间和未完成的任务将来所需要花费的具体时间。
详细地,所述获取多个终端的总任务清单及待分配至所述多个终端的总任务量,包括:
获取所述总任务清单,其中,所述总任务清单包括任务名称及任务完成进度;
根据所述任务名称和所述任务完成进度,确定历史时间段内的历史任务完成总数;
根据所述历史任务完成总数确定待分配至所述多个终端的总任务量。
本实施例中,历史时间段内的历史任务完成总数为多个终端一共完成的任务的数量。
例如,若上个季度的所述任务完成总数没有达标,则下个季度需完成的所述总任务量增多;若上个季度的所述任务完成总数超标,则下个季度需完成的所述总任务量减少。
本实施例中,可选的,所述总任务清单中还可以包括终端的名称。
进一步地,所述利用所述总任务清单,确定所述多个终端的历史任务执行时间,包括:
获取所述多个终端的工作列表;
根据所述多个终端的工作列表获取所述多个终端完成自身工作列表中的所有任务所花费的时间,根据每个所述终端的所述自身工作列表,确定所有终端的历史任务执行时间。
本实施例中,终端的工作列表是指与终端所执行任务相关的列表。终端的工作列表可包括所有终端计划执行的所有任务的数量及花费的时间,具体的,终端的工作列表包括已完成的任务花费的具体时间和未完成的任务将来所需要花费的具体时间。
本实施例中,可以根据每个终端的自身工作列表中每个终端计划执行的所有任务数量及花费的时间,包括完成的任务花费的具体时间和未完成的任务将来所需要花费的具体时间确定终端的历史任务执行时间。
S2、根据所述总任务量确定所述多个终端的最低任务及所述多个终端的总需求任务。
本实施例中,所述总需求任务指的是从所述总任务量扣除所述总最低计划完成任务的数量后,剩余的任务数量。
详细地,根据所述总任务量确定所述多个终端的最低任务及所述多个终端的总需求任务,包括:
根据所述多个终端的总数从所述总任务量中选取预设任务数量作为总最低计划完成任务;
将所述总任务量减去所述总最低计划完成任务得到所述多个终端的总需求任务;
将所述总最低计划除以所述多个终端的总数,得到多个终端的最低任务。
本实施例中,预设任务数量可以为预设值,具体的,预设任务数量为总任务量的40%~60%。
本实施例中,所述最低任务是将所述总最低计划完成任务数量按照终端总数进行均分得到每个终端需要完成的最低数量。
例如,若总任务量为100个,终端的总数为10个,若将所述总最低计划完成任务的数量占总任务量的比例为40%,则总最低计划完成任务为40个;每个所述终端的最低任务的计算为将所述总最低计划完成任务的40个均分至10个终端得到的任务额度,即每个终端分配的最低任务为4个;从总任务量100中扣除总最低计划完成任务的40,则可得到总需求任务为60个。
S3、根据所述终端的总数和预设分配比例确定分配所述总需求任务的需求终端的数量。
本实施例中,所述需求终端的数量为总需求任务需要分配至终端的个数,所述预设分配比例为预先设定的。例如预设分配比例为80%,则需求终端数量为终端总数的80%。
例如,所述需求终端的数量占终端的总数(如为总数为10个)的比例为80%,则所述需求终端数量为8个。
S4、确定向所述需求终端迭代分配所述总需求任务时的迭代轮次和每轮迭代对应的待分配任务数量。
详细地,所述确定对总需求任务执行迭代分配时迭代轮次和每轮迭代对应的待分配任务数量,包括:
确定所述总需求任务的最低分配数量与所述最低任务的数量相等;
根据所述需求终端的数量与所述最低分配数量,确定每个需求终端的平均分配任务数量;
将所述平均分配任务数量与所述最低分配数量进行算数运算,得到所述总需求任务的初始最高分配数量;
确定所述初始最高分配数量为第一轮迭代对应的待分配任务数量;
将所述初始最高分配数量依次递减预设间隔数量的任务数量,直到递减所得到的分配数量等于所述最低分配数量时,确定递减次数加一为迭代分配的迭代轮次,以及获取每次递减后的分配数量为第一轮迭代以外的每轮迭代对应的待分配任务数量。
本实施例中,所述总需求任务的最低分配数量为总需求任务分配至需求终端的最低任务数量,且与所述最低任务的数量相等。
所述平均分配任务数量为总需求任务分配至所有需求终端的任务数量,可通过总需求任务/需求终端数量求商得到,也可通过(最高分配数量+最低分配数量)/2得到。
所述初始最高分配数量为初次将总需求任务分配至需求终端的最高任务数量,可通过所述平均分配数量乘以2得到,且所述最高分配数量可以为非固定值。
本实施例中,所述最低分配数量为最后一轮的分配任务数量。
例如,所述最低分配数量等于所述最低任务(如为4个任务),则所述平均分配任务数量为总需求任务/需求终端数量=60/8,即为7.5个任务,且所述初始最高分配数量为所述平均分配任务数量*2-所述最低分配数量=7.5*2-4,即为11个任务。
将所述初始最高分配数量按照依次递减预设间隔数量(若为一个任务)任务数量进行分配,直到所述最高分配数量等于所述最低分配数量,停止分配,则将11依次递减1,直到递减后的数值等于最低分配数量4时,得到迭代分配的迭代轮次为8轮;且分配至所有需求终端的每轮迭代对应的待分配任务数量分别为11、10、9、8、7、6、5和4个任务。
S5、根据所述多个终端的历史任务执行时间确定向所有所述需求终端分配的分配顺序。
详细地,所述根据所述多个终端的历史任务执行时间确定向所有所述需求终端分配的分配顺序,包括:
获取所述多个终端的工作列表,基于所述工作列表,查询所有所述需求终端完成任务的总数及花费的时间,确定每个所述需求终端的历史任务执行时间;
将所有所述需求终端按照所述历史任务执行时间从长至短的顺序排序,确定所述排序为向所有所述需求终端分配的分配顺序。
具体地,本实施例中,若需求终端个数为8个,将8个需求终端按照历史任务执行时间从长至短的顺序排序,可以得到历史任务执行时间最长为A终端,其次为B终端,以此类推得到C、D、E、F、G和H终端,即所述需求终端分配的分配顺序为A、B、C、D、E、F、G和H。
S6、将所述最低任务分配至所述多个终端,以及根据所述分配顺序将所述每轮迭代对应的待分配任务数量迭代分配至所述需求终端。
详细地,所述根据所述分配顺序将所述每轮迭代对应的待分配任务数量迭代分配至所述需求终端,包括:
执行第i轮迭代分配时,判断所述i的值是否达到所述迭代轮次,其中i的初始值为1;
当所述i的值未达到所述迭代轮次时,确定在所述分配顺序中第i个需求终端为待分配终端,按照所述分配顺序将第i轮迭代对应的待分配任务数量分配至所述待分配终端;
令i的值增加1,再次执行所述判断所述i的值是否达到所述迭代轮次的操作,直至所述i的值大于所述迭代轮次时,停止迭代分配。
具体地,本实施例中,分配至所有需求终端的每轮迭代对应的待分配任务数量分别为11、10、9、8、7、6、5和4个任务;所有所述需求终端为按照所述历史任务执行时间由长到短进行排序,得到所述需求终端分配的分配顺序可为A、B、C、D、E、F、G和H。即将第一轮迭代对应的待分配任务数量为11分配至A终端,将第二轮迭代对应的待分配任务数量为10分配至B终端,以此类推,C终端分配的任务数量为9,D终端分配的任务数量为8,E终端分配的任务数量为7,F终端分配的任务数量为6,G终端分配的任务数量为5,H终端分配的任务数量为4。
另一可选实施例中,所述根据所述分配顺序将所述每轮迭代对应的待分配任务数量迭代分配至所述需求终端,包括:
执行第i轮迭代分配时,判断所述i的值是否达到所述迭代轮次,其中i的初始值为1;
当所述i的值未达到所述迭代轮次时,将第i轮迭代对应的待分配任务数量按照所述分配顺序平均分配至所有所述需求终端;
若分配之后第i轮迭代对应的待分配任务数量还有剩余,则再将剩余的所述第i轮迭代对应的待分配任务数量按照所述分配顺序依次分配至所述需求终端;
令i的值增加1,再次执行所述判断所述i的值是否达到所述迭代轮次的操作,直至所述i的值大于所述迭代轮次时,停止迭代分配。
具体地,本实施例中,分配至所有需求终端的每轮迭代对应的待分配任务数量分别为11、10、9、8、7、6、5和4个任务,所有所述需求终端为按照所述历史任务执行时间由长到短进行排序,得到所述需求终端分配的分配顺序可为A、B、C、D、E、F、G和H。将第一轮迭代对应的待分配任务数量为11平均分配一个任务至A、B、C、D、E、F、G和H终端,此时,还剩余3个任务,并将3个任务按照顺序分配至A、B和C终端;将第二轮迭代对应的待分配任务数量为10分配至A、B、C、D、E、F、G和H终端还剩余2个任务,再将这两个任务分配至A和B终端;以此类推,将第三轮迭代对应的待分配任务数量为9分配至A、B、C、D、E、F、G和H终端及A终端;将第四轮迭代对应的待分配任务数量为8分配至A、B、C、D、E、F、G和H终端;将第五轮迭代对应的待分配任务数量为7分配至A、B、C、D、E、F和G终端;将第六轮迭代对应的待分配任务数量为6分配至A、B、C、D、E和F终端;将第七轮迭代对应的待分配任务数量为5分配至A、B、C、D和E终端;将最后一轮迭代对应的待分配任务数量为4分配至A、B、C和D终端。最终分配至A终端的任务为11个、B终端为10个、C终端为9个、D终端为8个、E终端为7个、F终端为6个、G终端为5个及H终端为4个。
本发明实施例在分配过程中确定所有终端的最低任务以及总需求任务,再向所有终端分配最低任务,向需求终端迭代分配总需求任务,实现了任务分配时根据终端差异进行分配,任务分配更加合理,避免了任务分配过多或者过少的问题,使任务分配之后能够被终端尽快执行,从而能够提高任务处理的效率。因此本发明实施例提出的多终端的任务分配方法可以实现提高任务处理的效率的目的。
如图2所示,是本发明多终端的任务分配装置的功能模块图。
发明所述多终端的任务分配装置100可以安装于电子设备中。根据实现的功能,所述多终端的任务分配装置可以包括总任务划分模块101、需求任务划分模块102和多终端任务分配模块103,本发所述模块也可以称之为单元,是指一种能够被电子设备处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备的存储器中。
在本实施例中,关于各模块/单元的功能如下:
所述总任务划分模块101,用于获取多个终端的总任务清单及待分配至所述多个终端的总任务量,利用所述总任务清单,确定所述多个终端的历史任务执行时间,根据所述总任务量确定所述多个终端的最低任务及所述多个终端的总需求任务。
本实施例中,所述多个终端为待分配任务的终端。其中,多个终端可以为相同或不同的电子设备,比如,多个终端都为电脑,或者有的终端为电脑,有的终端为服务器。
本实施例中,所述总任务清单和总任务量以及历史任务执行时间可以存储在本地,例如,存储在本地的处理单元的存储空间中。所述处理单元指的是可以对指令执行一系列操作的单元,例如,取出指令、分析指令和执行指令。
所述总任务清单包含至少两个预设时间段内(历史时间段内和当前时间段内,如上个季度和这个季度内)已执行和计划执行的所有任务的名称、和任务总数以及这些任务的完成进度。
例如,总任务清单包含从上个季度至这个季度的200个计划执行的任务,其中有的任务已执行完毕,有的任务正在执行中,有的任务还未开始执行。
本实施例中,所述总任务量为当前时间段内,比如本季度内计划分配至多个终端,由多个终端完成的所有任务的数量。
例如,总任务量为本季度内计划分配至多个终端的所有任务数量,具体的,总任务量为100个计划执行的任务。
本实施例中,所述终端的历史任务执行时间可以为终端完成历史时间段内自身工作列表中的所有任务所花费的时间,其中,所述自身工作列表可以是每个终端在历史时间段内计划执行的所有任务数量及花费的时间,包括完成的任务花费的具体时间和未完成的任务将来所需要花费的具体时间。
具体地,所述总任务划分模块101通过执行下述操作获取多个终端的总任务清单及待分配至所述多个终端的总任务量,包括:
获取所述总任务清单,其中,所述总任务清单包括任务名称及任务完成进度;
根据所述任务名称和所述任务完成进度,确定历史时间段内的历史任务完成总数;
根据所述历史任务完成总数确定待分配至所述多个终端的总任务量。
本实施例中,历史时间段内的历史任务完成总数为多个终端一共完成的任务的数量。
例如,若上个季度的所述任务完成总数没有达标,则下个季度需完成的所述总任务量增多;若上个季度的所述任务完成总数超标,则下个季度需完成的所述总任务量减少。
本实施例中,可选的,所述总任务清单中还可以包括终端的名称。
进一步地,所述利用所述总任务清单,确定所述多个终端的历史任务执行时间,包括:
获取所述多个终端的工作列表;
根据所述多个终端的工作列表获取所述多个终端完成自身工作列表中的所有任务所花费的时间,根据每个所述终端的所述自身工作列表,确定所有终端的历史任务执行时间。
本实施例中,终端的工作列表是指与终端所执行任务相关的列表。终端的工作列表可包括所有终端计划执行的所有任务的数量及花费的时间,具体的,终端的工作列表包括已完成的任务花费的具体时间和未完成的任务将来所需要花费的具体时间。
本实施例中,可以根据每个终端的自身工作列表中每个终端计划执行的所有任务数量及花费的时间,包括完成的任务花费的具体时间和未完成的任务将来所需要花费的具体时间确定终端的历史任务执行时间。本实施例中,所述总需求任务指的是从所述总任务量扣除所述总最低计划完成任务的数量后,剩余的任务数量。
详细地,所述总任务划分模块101通过执行下述操作根据所述总任务量确定所述多个终端的最低任务及所述多个终端的总需求任务,包括:
根据所述多个终端的总数从所述总任务量中选取预设任务数量作为总最低计划完成任务;
将所述总任务量减去所述总最低计划完成任务得到所述多个终端的总需求任务;
将所述总最低计划除以所述多个终端的总数,得到多个终端的最低任务。
本实施例中,预设任务数量可以为预设值,具体的,预设任务数量为总任务量的40%~60%。
本实施例中,所述最低任务是将所述总最低计划完成任务数量按照终端总数进行均分得到每个终端需要完成的最低数量。
例如,若总任务量为100个,终端的总数为10个,若将所述总最低计划完成任务的数量占总任务量的比例为40%,则总最低计划完成任务为40个;每个所述终端的最低任务的计算为将所述总最低计划完成任务的40个均分至10个终端得到的任务额度,即每个终端分配的最低任务为4个;从总任务量100中扣除总最低计划完成任务的40,则可得到总需求任务为60个。
所述需求任务划分模块102,用于根据所述终端的总数和预设分配比例确定分配所述总需求任务的需求终端的数量,确定向所述需求终端迭代分配所述总需求任务时的迭代轮次和每轮迭代对应的待分配任务数量,根据所述多个终端的历史任务执行时间确定向所有所述需求终端分配的分配顺序。
本实施例中,所述需求终端的数量为总需求任务需要分配至终端的个数,所述预设分配比例为预先设定的。例如预设分配比例为80%,则需求终端数量为终端总数的80%。
例如,所述需求终端的数量占终端的总数(如为总数为10个)的比例为80%,则所述需求终端数量为8个。
详细地,所述需求任务划分模块102通过执行下述操作确定对总需求任务执行迭代分配时迭代轮次和每轮迭代对应的待分配任务数量,包括:
确定所述总需求任务的最低分配数量与所述最低任务的数量相等;
根据所述需求终端的数量与所述最低分配数量,确定每个需求终端的平均分配任务数量;
将所述平均分配任务数量与所述最低分配数量进行算数运算,得到所述总需求任务的初始最高分配数量;
确定所述初始最高分配数量为第一轮迭代对应的待分配任务数量;
将所述初始最高分配数量依次递减预设间隔数量的任务数量,直到递减所得到的分配数量等于所述最低分配数量时,确定递减次数加一为迭代分配的迭代轮次,以及获取每次递减后的分配数量为第一轮迭代以外的每轮迭代对应的待分配任务数量。
本实施例中,所述总需求任务的最低分配数量为总需求任务分配至需求终端的最低任务数量,且与所述最低任务的数量相等。
所述平均分配任务数量为总需求任务分配至所有需求终端的任务数量,可通过总需求任务/需求终端数量求商得到,也可通过(最高分配数量+最低分配数量)/2得到。
所述初始最高分配数量为初次将总需求任务分配至需求终端的最高任务数量,可通过所述平均分配数量乘以2得到,且所述最高分配数量可以为非固定值。
本实施例中,所述最低分配数量为最后一轮的分配任务数量。
例如,所述最低分配数量等于所述最低任务(如为4个任务),则所述平均分配任务数量为总需求任务/需求终端数量=60/8,即为7.5个任务,且所述初始最高分配数量为所述平均分配任务数量*2-所述最低分配数量=7.5*2-4,即为11个任务。
将所述初始最高分配数量按照依次递减预设间隔数量(若为一个任务)任务数量进行分配,直到所述最高分配数量等于所述最低分配数量,停止分配,则将11依次递减1,直到递减后的数值等于最低分配数量4时,得到迭代分配的迭代轮次为8轮;且分配至所有需求终端的每轮迭代对应的待分配任务数量分别为11、10、9、8、7、6、5和4个任务。
详细地,所述需求任务划分模块102通过执行下述操作根据所述多个终端的历史任务执行时间确定向所有所述需求终端分配的分配顺序,包括:
获取所述多个终端的工作列表,基于所述工作列表,查询所有所述需求终端完成任务的总数及花费的时间,确定每个所述需求终端的历史任务执行时间;
将所有所述需求终端按照所述历史任务执行时间从长至短的顺序排序,确定所述排序为向所有所述需求终端分配的分配顺序。
具体地,本实施例中,若需求终端个数为8个,将8个需求终端按照历史任务执行时间从长至短的顺序排序,可以得到历史任务执行时间最长为A终端,其次为B终端,以此类推得到C、D、E、F、G和H终端,即所述需求终端分配的分配顺序为A、B、C、D、E、F、G和H。
所述多终端任务分配模块103,多终端任务分配模块,用于将所述最低任务分配至所述多个终端,以及根据所述分配顺序将所述每轮迭代对应的待分配任务数量迭代分配至所述需求终端。
详细地,所述多终端任务分配模块103通过执行下述操作根据所述分配顺序将所述每轮迭代对应的待分配任务数量迭代分配至所述需求终端,包括:
执行第i轮迭代分配时,判断所述i的值是否达到所述迭代轮次,其中i的初始值为1;
当所述i的值未达到所述迭代轮次时,确定在所述分配顺序中第i个需求终端为待分配终端,按照所述分配顺序将第i轮迭代对应的待分配任务数量分配至所述待分配终端;
令i的值增加1,再次执行所述判断所述i的值是否达到所述迭代轮次的操作,直至所述i的值大于所述迭代轮次时,停止迭代分配。
具体地,本实施例中,分配至所有需求终端的每轮迭代对应的待分配任务数量分别为11、10、9、8、7、6、5和4个任务;所有所述需求终端为按照所述历史任务执行时间由长到短进行排序,得到所述需求终端分配的分配顺序可为A、B、C、D、E、F、G和H。即将第一轮迭代对应的待分配任务数量为11分配至A终端,将第二轮迭代对应的待分配任务数量为10分配至B终端,以此类推,C终端分配的任务数量为9,D终端分配的任务数量为8,E终端分配的任务数量为7,F终端分配的任务数量为6,G终端分配的任务数量为5,H终端分配的任务数量为4。
另一可选实施例中,所述多终端任务分配模块103通过执行下述操作根据所述分配顺序将所述每轮迭代对应的待分配任务数量迭代分配至所述需求终端,包括:
执行第i轮迭代分配时,判断所述i的值是否达到所述迭代轮次,其中i的初始值为1;
当所述i的值未达到所述迭代轮次时,将第i轮迭代对应的待分配任务数量按照所述分配顺序平均分配至所有所述需求终端;
若分配之后第i轮迭代对应的待分配任务数量还有剩余,则再将剩余的所述第i轮迭代对应的待分配任务数量按照所述分配顺序依次分配至所述需求终端;
令i的值增加1,再次执行所述判断所述i的值是否达到所述迭代轮次的操作,直至所述i的值大于所述迭代轮次时,停止迭代分配。
具体地,本实施例中,分配至所有需求终端的每轮迭代对应的待分配任务数量分别为11、10、9、8、7、6、5和4个任务,所有所述需求终端为按照所述历史任务执行时间由长到短进行排序,得到所述需求终端分配的分配顺序可为A、B、C、D、E、F、G和H。将第一轮迭代对应的待分配任务数量为11平均分配一个任务至A、B、C、D、E、F、G和H终端,此时,还剩余3个任务,并将3个任务按照顺序分配至A、B和C终端;将第二轮迭代对应的待分配任务数量为10分配至A、B、C、D、E、F、G和H终端还剩余2个任务,再将这两个任务分配至A和B终端;以此类推,将第三轮迭代对应的待分配任务数量为9分配至A、B、C、D、E、F、G和H终端及A终端;将第四轮迭代对应的待分配任务数量为8分配至A、B、C、D、E、F、G和H终端;将第五轮迭代对应的待分配任务数量为7分配至A、B、C、D、E、F和G终端;将第六轮迭代对应的待分配任务数量为6分配至A、B、C、D、E和F终端;将第七轮迭代对应的待分配任务数量为5分配至A、B、C、D和E终端;将最后一轮迭代对应的待分配任务数量为4分配至A、B、C和D终端。最终分配至A终端的任务为11个、B终端为10个、C终端为9个、D终端为8个、E终端为7个、F终端为6个、G终端为5个及H终端为4个。
本发明实施例在分配过程中确定所有终端的最低任务以及总需求任务,再向所有终端分配最低任务,向需求终端迭代分配总需求任务,实现了任务分配时根据终端差异进行分配,任务分配更加合理,避免了任务分配过多或者过少的问题,使任务分配之后能够被终端尽快执行,从而能够提高任务处理的效率。因此本发明实施例提出的多终端的任务分配装置可以实现提高任务处理的效率的目的。
如图3所示,是本发明实现多终端的任务分配方法的电子设备的结构示意图。
所述电子设备可以包括处理器10、存储器11、通信总线12和通信接口13,还可以包括存储在所述存储器11中并可在所述处理器10上运行的计算机程序,如多终端的任务分配程序。
其中,所述存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:SD或DX存储器等)、磁性存储器、磁盘、光盘等。所述存储器11在一些实施例中可以是电子设备的内部存储单元,例如该电子设备的移动硬盘。所述存储器11在另一些实施例中也可以是电子设备的外部存储设备,例如电子设备上配备的插接式移动硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(SecureDigital,SD)卡、闪存卡(Flash Card)等。进一步地,所述存储器11还可以既包括电子设备的内部存储单元也包括外部存储设备。所述存储器11不仅可以用于存储安装于电子设备的应用软件及各类数据,例如多终端的任务分配程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
所述处理器10在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述处理器10是所述电子设备的控制核心(Control Unit),利用各种接口和线路连接整个电子设备的各个部件,通过运行或执行存储在所述存储器11内的程序或者模块(例如多终端的任务分配程序等),以及调用存储在所述存储器11内的数据,以执行电子设备的各种功能和处理数据。
所述通信总线12可以是外设部件互连标准(perIPheral componentinterconnect,简称PCI)总线或扩展工业标准结构(extended industry standardarchitecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。所述通信总线12总线被设置为实现所述存储器11以及至少一个处理器10等之间的连接通信。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
图3仅示出了具有部件的电子设备,本领域技术人员可以理解的是,图3示出的结构并不构成对所述电子设备的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
例如,尽管未示出,所述电子设备还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与所述至少一个处理器10逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子设备还可以包括多种传感器、蓝牙模块、Wi-Fi模块等,在此不再赘述。
可选地,所述通信接口13可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该电子设备与其他电子设备之间建立通信连接。
可选地,所述通信接口13还可以包括用户接口,用户接口可以是显示器(Display)、输入单元(比如键盘(Keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备中处理的信息以及用于显示可视化的用户界面。
应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
所述电子设备中的所述存储器11存储的多终端的任务分配程序是多个计算机程序的组合,在所述处理器10中运行时,可以实现:
获取多个终端的总任务清单及待分配至所述多个终端的总任务量,利用所述总任务清单,确定所述多个终端的历史任务执行时间;
根据所述总任务量确定所述多个终端的最低任务及所述多个终端的总需求任务;
根据所述终端的总数和预设分配比例确定分配所述总需求任务的需求终端的数量;
确定向所述需求终端迭代分配所述总需求任务时的迭代轮次和每轮迭代对应的待分配任务数量;
根据所述多个终端的历史任务执行时间确定向所有所述需求终端分配的分配顺序;
将所述最低任务分配至所述多个终端,以及根据所述分配顺序将所述每轮迭代对应的待分配任务数量迭代分配至所述需求终端。
具体地,所述处理器10对上述计算机程序的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。
进一步地,所述电子设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。所述计算机可读介质可以是非易失性的,也可以是易失性的。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)。
本发明实施例还可以提供一种计算机可读存储介质,所述可读存储介质存储有计算机程序,所述计算机程序在被电子设备的处理器所执行时,可以实现:
获取多个终端的总任务清单及待分配至所述多个终端的总任务量,利用所述总任务清单,确定所述多个终端的历史任务执行时间;
根据所述总任务量确定所述多个终端的最低任务及所述多个终端的总需求任务;
根据所述终端的总数和预设分配比例确定分配所述总需求任务的需求终端的数量;
确定向所述需求终端迭代分配所述总需求任务时的迭代轮次和每轮迭代对应的待分配任务数量;
根据所述多个终端的历史任务执行时间确定向所有所述需求终端分配的分配顺序;
将所述最低任务分配至所述多个终端,以及根据所述分配顺序将所述每轮迭代对应的待分配任务数量迭代分配至所述需求终端。
进一步地,所述计算机可用存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。