1.本技术涉及计算机技术领域,特别是涉及一种任务转移方法、系统、装置、设备、存储介质和程序产品。
背景技术:2.随着经济水平的提高,出现了越来越多的游戏以满足人们的精神需求。但随着游戏的发行,需要通过多次迭代更新来对游戏进行调整,来满足游戏用户的需求。
3.相关技术中,在现有的游戏迭代更新过程中,定时任务的转移方式有两种,第一种转移方式是将逻辑处理的服务器和实际执行的服务器分开,实际执行的服务器通过逻辑处理的服务器远程调度。第二种转移方式则是通过多个执行服务器同时执行同一个转移任务。
4.然而,相关技术中任务的转移方式会导致实际执行时间不准确,导致定时任务的抖动较大。
技术实现要素:5.基于此,有必要针对上述技术问题,提供一种能够使定时任务的实际执行时间更加准确,避免定时任务存在抖动现象的任务转移方法、系统、装置、设备、存储介质和程序产品。
6.第一方面,本技术提供了一种任务转移方法,该方法包括:
7.响应于目标任务的转移指令,获取目标任务的当前剩余执行时长和转移时长;
8.若目标任务的当前剩余执行时长和转移时长之间满足预设的转移条件,则将目标任务和目标任务对应的任务信息转移至任务队列;任务队列中存储的任务和对应的任务信息为执行服务器待处理的任务。
9.在其中一个实施例中,转移条件包括以下至少一种:
10.目标任务的当前剩余执行时长与转移时长之间为预设的倍数关系;
11.目标任务的当前剩余执行时长与转移时长之间为差值处于预设范围内。
12.在其中一个实施例中,获取目标任务的当前剩余执行时长和转移时长,包括:
13.根据当前时间和目标任务的下一执行时刻,确定目标任务的当前剩余执行时长;以及向任务队列发送多个测试请求,获取多个测试请求的响应时长;根据响应时长,确定目标任务的转移时长。
14.在其中一个实施例中,任务信息至少包括:目标任务发送至任务队列的任务转移开始时刻、任务转移开始时刻对应的任务队列的时刻、本地时间与任务队列时间之间的差值、任务转移开始时刻到目标任务的下一执行时刻之间的差值、目标任务的转移时长。
15.第二方面,本技术实施例提供一种任务转移方法,该方法包括:
16.获取任务队列中的目标任务和目标任务对应的任务信息;
17.其中,目标任务和目标任务对应的任务信息为本地服务器响应于目标任务的转移
指令,获取目标任务的当前剩余执行时长和转移时长,在目标任务的当前剩余执行时长和转移时长之间满足预设的转移条件时,将目标任务和目标任务对应的任务信息转移至任务队列中的;
18.获取目标任务的恢复信息,根据任务信息和目标任务的恢复信息,计算目标任务的精确执行时间。
19.在其中一个实施例中,获取目标任务的恢复信息,包括:
20.将执行服务器的时间和任务队列的时间之间的时间差值、执行服务器领取目标任务的领取时刻和领取时长、领取时刻对应的任务队列的时刻,确定为目标任务的恢复信息。
21.在其中一个实施例中,根据任务信息和目标任务的恢复信息,计算目标任务的精确执行时间,包括:
22.根据任务信息和目标任务的恢复信息,通过预设时差补偿公式计算目标任务的精确执行时间。
23.第三方面,本技术实施例提供一种任务转移系统,该系统包括:本地服务器、任务队列和执行服务器;
24.本地服务器,用于响应于目标任务的转移指令,获取目标任务的当前剩余执行时长和转移时长,在目标任务的当前剩余执行时长和转移时长之间满足预设的转移条件时,将目标任务和目标任务对应的任务信息转移至任务队列中;
25.执行服务器,用于获取任务队列中的目标任务和目标任务对应的任务信息,并获取目标任务的恢复信息,根据任务信息和目标任务的恢复信息,计算目标任务的精确执行时间。
26.第四方面,本技术还提供了一种装置,该装置包括:
27.信息获取模块,用于响应于目标任务的转移指令,获取目标任务的当前剩余执行时长和转移时长;
28.任务转移模块,用于若目标任务的当前剩余执行时长和转移时长之间满足预设的转移条件,则将目标任务和目标任务对应的任务信息转移至任务队列;任务队列中存储的任务和对应的任务信息为执行服务器待处理的任务。
29.第五方面,本技术实施例提供一种任务转移装置,该装置包括:
30.队列信息获取模块,用于获取任务队列中的目标任务和目标任务对应的任务信息;其中,目标任务和目标任务对应的任务信息为本地服务器响应于目标任务的转移指令,获取目标任务的当前剩余执行时长和转移时长,在目标任务的当前剩余执行时长和转移时长之间满足预设的转移条件时,将目标任务和目标任务对应的任务信息转移至任务队列中的;
31.执行时间计算模块,用于获取目标任务的恢复信息,根据任务信息和目标任务的恢复信息,计算目标任务的精确执行时间。
32.第六方面,本技术还提供了一种计算机设备,该计算机设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
33.响应于目标任务的转移指令,获取目标任务的当前剩余执行时长和转移时长;
34.若目标任务的当前剩余执行时长和转移时长之间满足预设的转移条件,则将目标任务和目标任务对应的任务信息转移至任务队列;任务队列中存储的任务和对应的任务信
息为执行服务器待处理的任务。
35.第七方面,本技术还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
36.响应于目标任务的转移指令,获取目标任务的当前剩余执行时长和转移时长;
37.若目标任务的当前剩余执行时长和转移时长之间满足预设的转移条件,则将目标任务和目标任务对应的任务信息转移至任务队列;任务队列中存储的任务和对应的任务信息为执行服务器待处理的任务。
38.第八方面,本技术还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
39.响应于目标任务的转移指令,获取目标任务的当前剩余执行时长和转移时长;
40.若目标任务的当前剩余执行时长和转移时长之间满足预设的转移条件,则将目标任务和目标任务对应的任务信息转移至任务队列;任务队列中存储的任务和对应的任务信息为执行服务器待处理的任务。
41.本技术提供一种任务转移方法、系统、装置、设备、存储介质和程序产品,本地服务器通过响应于目标任务的转移指令,获取目标任务的当前剩余执行时长和转移时长,在目标任务的当前剩余执行时长和转移时长之间满足预设的转移条件时,将目标任务和目标任务对应的任务信息转移至任务队列。该方法中,由于本地服务器是以目标任务的当前剩余执行时间和转移该目标任务的转移时长为依据,确定出是否将目标任务转移到执行服务器去执行,且转移时是将目标任务的任务信息一并进行了转移,这样,可以保证转移到执行服务器后,执行服务器从任务队列获取目标任务进行执行的时间可以与目标任务在本地服务器中的实际执行时间偏差变小,从而使得目标任务在执行服务器中的实际执行时间更准确,避免了目标任务的执行出现抖动现象。
附图说明
42.图1为一个实施例中任务转移方法的应用环境图;
43.图2为一个实施例中任务转移方法的流程示意图;
44.图3为另一个实施例中任务转移方法的流程示意图;
45.图4为一个实施例中任务转移方法的架构图;
46.图5为一个实施例中任务转移方法应用于本地服务器的流程示意图;
47.图6为一个实施例中任务转移方法应用于执行服务器的流程示意图;
48.图7为一个实施例中任务转移装置的结构框图;
49.图8为一个实施例中计算机设备的内部结构图。
具体实施方式
50.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
51.本技术实施例提供的任务转移方法,可以应用于如图1所示的应用环境中。其中,本地服务器与任务队列进行通信,任务队列与执行服务器进行通信。本地服务器响应于目
标任务的转移指令,获取目标任务的当前剩余执行时长和转移时长;若本地服务器确定目标任务的当前剩余执行时长和转移时长之间满足预设的转移条件,则将目标任务和目标任务对应的任务信息转移至任务队列;任务队列中存储的任务和对应的任务信息为执行服务器待处理的任务。其中,本地服务器和执行服务器都可以用独立的服务器或者是多个服务器组成的服务器集群来实现。任务队列可以满足对目标任务的存储和管理功能即可,例如,任务队列为redis或关系型数据库mysql。
52.本技术实施例提供的任务转移方法,分别从本地服务器和执行服务器的角度介绍任务转移方法的过程。
53.下面先对执行主体为本地服务器的一侧任务转移方法进行说明。
54.在一个实施例中,如图2所示,提供了一种任务转移方法,以该方法应用于图2进行说明,包括以下步骤:
55.步骤102,响应于目标任务的转移指令,获取目标任务的当前剩余执行时长和转移时长。
56.其中,目标任务是指用户想要处理的任务。转移指令,将目标任务的执行主体或执行目标任务的位置进行转移的指令。当前剩余执行时长是指从响应于目标任务的转移指令的时刻至本地真正执行时刻之间的时间段,其中目标任务的本地真正执行时刻是指目标任务若不进行转移,目标任务在本地的原计划执行时刻。其中,转移时长是指目标任务的转移过程所耗费的时间。
57.具体地,本地服务器周期性的对转移指令进行监听,若本地服务器基于触发信息触发目标任务的转移指令,本地服务器对监听到的目标任务的转移指令进行响应。本地服务器获取响应于目标任务的转移指令的时刻和本地真正执行时刻以及转移时长,并根据这两个时刻获得当前剩余执行时长。
58.在具体地游戏运行开发过程中,服务器端需要执行海量的定时任务,若需要执行系统更新等不适合定时任务在本地服务器继续进行执行的操作时,则触发定时任务转移指令。本地服务器周期性的对转移指令进行监听,当监听到定时任务的转移指令时,本地服务器对监听到的定时任务的转移指令进行响应。本地服务器获取转移时长和响应于定时任务的转移指令的时刻和本地真正执行时刻,并根据这两个时刻获得当前剩余执行时长。其中,获取的定时任务的转移时长可以在监听到定时任务的转移指令之前。
59.步骤104,若目标任务的当前剩余执行时长和转移时长之间满足预设的转移条件,则将目标任务和目标任务对应的任务信息转移至任务队列;任务队列中存储的任务和对应的任务信息为执行服务器待处理的任务。
60.其中,预设的转移条件为预先根据目标任务的当前剩余执行时长和转移时长设置的目标任务的转移条件,以实现目标任务的转移。任务信息为与目标任务的转移和执行时间相关联的时间信息。
61.本地服务器根据定时任务的当前剩余执行时长和转移时长判断是否满足预设的转移条件,若目标任务的当前剩余执行时长和转移时长之间满足预设的转移条件,则确定执行转移目标任务的操作,将目标任务和目标任务对应的与目标任务的转移和执行时间相关联的时间信息转移至任务队列。任务队列中存储的任务为执行服务器待处理的任务。
62.优选地,任务队列为redis服务器,本技术并不对任务队列的类型做限定,满足对
目标任务的存储和管理功能即可。可选地,任务队列为关系型数据库mysql。
63.在具体地实施过程中,本地服务器判断当前剩余执行时长是否是转移时长的四倍,若前剩余执行时长大于转移时长的四倍,执行转移目标任务的操作,将目标任务和与目标任务的转移和执行时间相关联的时间信息转移至redis服务器。任务队列中存储的任务为执行服务器待处理的任务。若前剩余执行时长小于等于转移时长的四倍,则不执行转移目标任务的操作,将目标任务在本地服务器执行。
64.上述任务转移方法中,通过响应于目标任务的转移指令,获取目标任务的当前剩余执行时长和转移时长,在目标任务的当前剩余执行时长和转移时长之间满足预设的转移条件时,将目标任务和目标任务对应的任务信息转移至任务队列。该方法中,由于本地服务器是以目标任务的当前剩余执行时间和转移该目标任务的转移时长为依据,确定出是否将目标任务转移到执行服务器去执行,且转移时是将目标任务的任务信息一并进行了转移,这样,可以保证转移到执行服务器后,执行服务器从任务队列获取目标任务进行执行的时间可以与目标任务在本地服务器中的实际执行时间偏差变小,从而使得目标任务在执行服务器中的实际执行时间更准确,避免了目标任务的执行出现抖动现象。
65.在其中一个实施例中,转移条件包括以下至少一种:目标任务的当前剩余执行时长与转移时长之间为预设的倍数关系;目标任务的当前剩余执行时长与转移时长之间为差值处于预设范围内。
66.其中,预设的倍数关系为根据经验总结的,能够执行完目标任务的最少时间,本技术并不对具体地倍数关系做限定,随着技术的进步,倍数关系可能会更改。
67.优选地,目标任务的当前剩余执行时长大于4倍转移时长。
68.其中,预设范围为根据经验总结的,能够执行完目标任务的最少时间,本技术并不对具体地预设范围做限定,随着技术的进步,预设范围可能会更改。
69.优选地,目标任务的当前剩余执行时长与转移时长之间为差值为10ms。
70.上述任务转移方法中对转移条件进行了具体限定,增加了目标任务的转移成功率,降低了转移过程超出目标任务的精确执行时间的可能。
71.在其中一个实施例中,获取目标任务的当前剩余执行时长和转移时长,包括:根据当前时间和目标任务的下一执行时刻,确定目标任务的当前剩余执行时长;以及向任务队列发送多个测试请求,获取多个测试请求的响应时长;根据响应时长,确定目标任务的转移时长。
72.其中,当前时间是指响应于目标任务的转移指令的时刻。目标任务的下一执行时刻,是指目标任务若不进行转移,目标任务在本地服务器的原计划执行时刻。测试请求,是指本地服务器向任务队列发送的转移测试请求样例。测试请求的响应时长,本地服务器向任务队列发送测试请求样例所花费的转移测试请求时间。
73.具体地,终端根据响应于目标任务的转移指令的时刻与目标任务在本地服务器的原计划执行时刻的差值确定目标任务的当前剩余执行时长。可选地,终端在响应于目标任务的转移指令的时刻之前向任务队列发送多个测试请求,并获取本地服务器向任务队列发送测试请求样例所花费的转移测试请求时间,将转移测试请求时间作为转移时长。
74.可选地,本地服务器向任务队列发送n个测试请求,并获取本地服务器向任务队列发送测试请求样例所花费的n个转移测试请求时间。这里的n表示大于等于1的正整数,例
如,n=100,以ta表示每一次转移测试请求时间,则n个转移测试请求时间就为(ta1+ta2+ta3...+ta100),然后,可将100个转移测试请求时间的平均值timeavg1作为转移时长。那么,转移时长可根据公式(1)计算,公式(1)如下:
75.timeavg1=(ta1+ta2+ta3...+ta100)/100
ꢀꢀꢀꢀꢀꢀꢀ
(1)
76.上述任务转移方法中,通过根据当前时间和目标任务的下一执行时刻,确定目标任务的当前剩余执行时长,通过向任务队列发送多个测试请求,获取多个测试请求的响应时长;根据响应时长,确定目标任务的转移时长。以此获得当前剩余执行时长和转移时长,确保有足够的时间转移目标任务,使得目标任务的精确执行时间更准确。
77.在其中一个实施例中,任务信息至少包括:目标任务发送至任务队列的任务转移开始时刻、任务转移开始时刻对应的任务队列的时刻、本地时间与任务队列时间之间的差值、任务转移开始时刻到目标任务的下一执行时刻之间的差值、目标任务的转移时长。
78.在具体地实施过程中,获取任务转移开始时刻sendtime对应的任务队列的时刻redistime1的方式为,本地服务器在目标任务发送至任务队列的任务转移开始时刻,使用lua脚本获取任务队列的第一时刻redistime1。
79.在具体地实施过程中,获取本地时间与任务队列时间之间的差值timeseverredis1的方式为,本地服务器通过任务队列时间获取程序获取任务队列的当前时间redistime,并获取执行任务队列时间获取程序的开始时刻timestart和返回任务队列时间获取程序获取结果的结束时刻timeend,根据timestart、redistime和timeend计算timeseverredis1。其中,本地时间与任务队列时间之间的差值可根据公式(2)计算,公式(2)如下:
80.timeseverredis1=(timestart+timeend)/2-redistime
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
81.可选地,执行任务队列时间获取程序100次,计算对应的100个timeseverredis1,取100个timeseverredis1中最小的存储为timeseverredis1。可选地,timeseverredis1可以在本地服务器执行响应于目标任务的转移指令之前完成。
82.在具体地实施过程中,任务转移开始时刻sendtime到目标任务的下一执行时刻之间的差值用delay表示。
83.根据上述实施过程,可以获得任务信息至少包括:sendtime、redistime1、timeseverredis1、delay、timeavg1。
84.上述任务转移方法中,对与目标任务转移时间相关的任务信息做出了具体限定,为执行服务器根据任务信息进行目标任务的精确执行时间计算做更细颗粒度的准备,使实际执行时间更准确。
85.下面对执行主体为执行服务器的一侧的任务转移方法涉及的实施例进行说明。需要说明的是,因实际应用中,本地服务器和执行服务器之间是相互交互的,因此,在本地服务器一侧的实施例中涉及的一些特征的实现原理和过程,在执行服务器这一侧的实施例中将不会过多赘述,可结合本地服务器一侧的实施例进行理解。
86.在一个实施例中,如图3所示,提供了一种任务转移方法,用于执行服务器,包括以下步骤:
87.步骤202,获取任务队列中的目标任务和目标任务对应的任务信息;其中,目标任务和目标任务对应的任务信息为本地服务器响应于目标任务的转移指令,获取目标任务的
当前剩余执行时长和转移时长,在目标任务的当前剩余执行时长和转移时长之间满足预设的转移条件时,将目标任务和目标任务对应的任务信息转移至任务队列中的。
88.在具体地游戏运行开发过程中,服务器端需要执行海量的定时任务,若需要执行系统更新等不适合定时任务在本地服务器继续进行执行的操作时,则触发定时任务转移指令。本地服务器周期性的对转移指令进行监听,当监听到定时任务的转移指令时,本地服务器对监听到的定时任务的转移指令进行响应。本地服务器获取转移时长和响应于定时任务的转移指令的时刻和本地真正执行时刻,并根据这两个时刻获得当前剩余执行时长。本地服务器根据定时任务的当前剩余执行时长和转移时长判断是否满足预设的转移条件,若目标任务的当前剩余执行时长和转移时长之间满足预设的转移条件,则确定执行转移目标任务的操作,将目标任务和目标任务对应的与目标任务的转移和执行时间相关联的时间信息转移至任务队列。执行服务器周期性的访问任务队列,当执行服务器监听到任务队列中包括转移任务及对应任务信息,则执行服务器获取任务队列中的目标任务和目标任务对应的任务信息。
89.步骤204,获取目标任务的恢复信息,根据任务信息和目标任务的恢复信息,计算目标任务的精确执行时间。
90.其中,恢复信息指目标任务从任务队列转移到执行服务器的相关联的时间信息。
91.执行服务器根据任务信息和目标任务的恢复信息,计算目标任务的精确执行时间。
92.上述任务转移方法中,执行服务器根据任务信息和恢复信息进行目标任务的精确执行时间计算,与目标任务在本地服务器中的实际执行时间偏差变小,使目标任务在执行服务器中的实际执行时间更准确。
93.获取目标任务的恢复信息,包括:将执行服务器的时间和任务队列的时间之间的时间差值、执行服务器领取目标任务的领取时刻和领取时长、领取时刻对应的任务队列的时刻,确定为目标任务的恢复信息。
94.在具体地实施过程中,获取执行服务器的时间与任务队列时间之间的差值timeseverredis2的方式为,执行服务器通过任务队列时间获取程序获取任务队列的当前时间redistimez,并获取执行任务队列时间获取程序的开始时刻timestart2和返回任务队列时间获取程序获取结果的结束时刻timeend2,根据timestart、redistime和timeend计算timeseverredis2。具体地,可根据下述公式(3)计算timeseverredis2。
95.timeseverredis2=(timestart2+timeend2)/2-redistimez
ꢀꢀꢀꢀꢀ
(3)
96.可选地,执行任务队列时间获取程序100次,计算对应的100个timeseverredis2,取100个timeseverredis2中最小的存储为timeseverredis2。可选地,timeseverredis2可以在执行服务器执行获取任务队列中的目标任务和目标任务对应的任务信息的步骤之前完成。
97.在具体地实施过程中,执行服务器领取目标任务的领取时刻记为receivetime。
98.在具体地实施过程中,执行服务器领取目标任务的领取时长的获取方式为,执行服务器向任务队列发送多个测试请求,并获取执行服务器向任务队列发送测试请求样例所花费的转移测试请求时间,将转移测试请求时间作为领取时长。可选地,服务器向任务队列发送100个测试请求,并获执行服务器向任务队列发送测试请求样例所花费的100个转移测
试请求时间(pa1+pa2+pa3...+pa100),将100个转移测试请求时间的平均值timeavg2作为领取时长。其中,领取时长可根据公式(4)计算,公式(4)如下:
99.timeavg2=(pa1+pa2+pa3...+pa100)/100
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
100.在具体地实施过程中,获取目标任务的领取时刻对应的任务队列的时刻redistime2的方式为,执行服务器在目标任务的领取时刻,使用lua脚本获取任务队列的第一时刻redistime2。
101.根据上述实施过程,receivetime、timeseverredis2、timeavg2和redistime2,确定为目标任务的恢复信息。
102.上述任务转移方法中,对与目标任务领取时间相关的恢复信息做出了具体限定,为执行服务器根据任务信息和回复信息进行目标任务的精确执行时间计算做更细颗粒度的准备,使实际执行时间更准确。
103.在一个实施例中,根据任务信息和目标任务的恢复信息,计算目标任务的精确执行时间,包括:根据任务信息和目标任务的恢复信息,通过预设时差补偿公式计算目标任务的精确执行时间。
104.其中,预设时差补偿可根据公式(5)计算,公式(5)如下:
105.realdelay=delay-z-r-h
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
106.公式(5)中的参数根据公式(6)(7)(8)获取,公式(6)(7)(8)如下:
107.z=(redistime1+timesever redis1-sendtime)
ꢀꢀꢀꢀꢀꢀ
(6)
108.r=(redistime1-redistime2)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(7)
109.h=(receivetime-timesever redis2-redistime2)
ꢀꢀꢀꢀ
(8)
110.其中,公式中的realdelay为执行服务器领取目标任务的领取时刻receivetime到目标任务在执行服务器的精确执行时间的差值。z为目标任务从本地服务器转移至任务队列所花费的时长。r为目标任务在任务队列中所花费的时长。h为目标任务从任务队列转移至执行服务器所花费的时长。预设时差补偿公式中的各元素的数值来源可以从上述实施例中获取。
111.上述任务转移方法中,根据任务信息和目标任务的恢复信息,通过预设时差补偿公式计算目标任务的精确执行时间,减少本地服务器与执行服务器之间的时间差,减少目标任务的执行抖动,使得用户感觉不到目标任务的执行抖动,使游戏的运行更流畅。
112.在一个实施例中,以图4、图5和图6为例进行说明,服务器a进行系统初始化后,在本地执行定时任务schedule1、schedule2和schedule3。在某一时刻,服务器a监听到指令,判断是否为定时任务转移指令,若不是定时任务转移指令,则恢复定时任务的执行状态,服务器a继续结束定时任务。若是定时任务转移指令,则执行定时任务转移操作。检测服务器a中的任务以确定定时任务,并获取各定时任务在服务器a的剩余执行时长。其中,各定时任务在服务器a的剩余执行时长,根据服务器a获取监听到转移定时任务指令的第一时刻和定时任务在服务器a的下一执行时刻即第二时刻的差值计算。执行服务器获取定时任务从服务器a到redis服务器的转移时长。其中,转移时长的获取方式为,本地服务器向任务队列发送100个测试请求,并获取本地服务器向任务队列发送测试请求样例所花费的100个转移测试请求时间(ta1+ta2+ta3...+ta100),将100个转移测试请求时间的平均值timeavg1作为转移时长。计算公式跟上述实施例中的一致,在此不再赘述。服务器a判断各定时任务在服
务器a的剩余执行时长是否大于四倍转移时长,若是,则将定时任务转移至redis,否则将定时任务在本地服务器运行。将定时任务转移至redis的过程中还需要计算定时任务的任务信息,任务信息的具体算法和上述实施例相同,在此不再赘述。
113.服务器b周期性的从redis有序列表中获取定时任务,服务器b判断redis有序列表中是否有定时任务,若redis有序列表中没有定时任务,则阻塞等待,直至超时。若redis有序列表中有定时任务,则服务器b领取定时任务和对应的任务信息,并获取对应的恢复信息,根据任务信息和对应的恢复信息以及预设时差补偿公式计算定时任务在服务器b的精确执行时间,具体地计算过程与上述实施例中记载的相同,在此不再赘述。服务器b将定时任务领取,并根据精确执行时间进行执行,之后,继续从redis有序列表中获取定时任务。
114.上述任务转移方法中,执行服务器根据任务信息和恢复信息进行目标任务的精确执行时间计算,使目标任务在执行服务器中的实际执行时间更准确,与目标任务在本地服务器中的实际执行时间偏差变小。
115.应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
116.基于同样的发明构思,本技术实施例还提供了一种用于实现上述所涉及的任务转移方法的任务转移系统。该系统所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个任务转移系统实施例中的具体限定可以参见上文中对于任务转移方法的限定,在此不再赘述。
117.另外,本技术实施例还提供一种任务转移系统,该系统包括:本地服务器、任务队列和执行服务器;
118.本地服务器,用于响应于目标任务的转移指令,获取目标任务的当前剩余执行时长和转移时长,在目标任务的当前剩余执行时长和转移时长之间满足预设的转移条件时,将目标任务和目标任务对应的任务信息转移至任务队列中;
119.执行服务器,用于获取任务队列中的目标任务和目标任务对应的任务信息,并获取目标任务的恢复信息,根据任务信息和目标任务的恢复信息,计算目标任务的精确执行时间。
120.本实施例中关于任务转移系统的具体限定可以参见上文中对于任务转移方法的限定,在此不再赘述。
121.基于同样的发明构思,本技术实施例还提供了一种用于实现上述所涉及的任务转移方法的任务转移装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个任务转移装置实施例中的具体限定可以参见上文中对于任务转移方法的限定,在此不再赘述。
122.在一个实施例中,如图7所示,提供了一种任务转移装置,该装置包括:信息获取模块100、任务转移模块200,其中:
123.信息获取模块100,用于响应于目标任务的转移指令,获取目标任务的当前剩余执行时长和转移时长;
124.任务转移模块200,用于若目标任务的当前剩余执行时长和转移时长之间满足预设的转移条件,则将目标任务和目标任务对应的任务信息转移至任务队列;任务队列中存储的任务为执行服务器待处理的任务。
125.在一个实施例中,转移条件包括以下至少一种:
126.目标任务的当前剩余执行时长与转移时长之间为预设的倍数关系;
127.目标任务的当前剩余执行时长与转移时长之间为差值处于预设范围内。
128.在一个实施例中,信息获取模块100,包括:
129.时长确定子模块,用于根据当前时间和目标任务的下一执行时刻,确定目标任务的当前剩余执行时长;
130.确定转移时长模块,用于以及向任务队列发送多个测试请求,获取多个测试请求的响应时长;根据响应时长,确定目标任务的转移时长。
131.在一个实施例中,任务信息至少包括:目标任务发送至任务队列的任务转移开始时刻、任务转移开始时刻对应的任务队列的时刻、本地时间与任务队列时间之间的差值、任务转移开始时刻到目标任务的下一执行时刻之间的差值、目标任务的转移时长。
132.在一个实施例中,该装置包括:
133.第二信息获取模块,用于获取任务队列中的目标任务和目标任务对应的任务信息;其中,目标任务为本地服务器响应于目标任务的转移指令,获取目标任务的当前剩余执行时长和转移时长,在目标任务的当前剩余执行时长和转移时长之间满足预设的转移条件时,将目标任务和目标任务对应的任务信息转移至任务队列中的;
134.时间计算模块,用于获取目标任务的恢复信息,根据任务信息和目标任务的恢复信息,计算目标任务的精确执行时间。
135.在一个实施例中,第二信息获取模块,包括:
136.将执行服务器的时间和任务队列的时间之间的时间差值、执行服务器领取目标任务的领取时刻和领取时长、领取时刻对应的任务队列的时刻,确定为目标任务的恢复信息。
137.在一个实施例中,时间计算模块,包括:
138.根据任务信息和目标任务的恢复信息,通过预设时差补偿公式计算目标任务的精确执行时间。
139.上述任务转移装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
140.在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储定时任务及对应的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种任务转移方法。
141.本领域技术人员可以理解,图8中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
142.在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
143.响应于目标任务的转移指令,获取目标任务的当前剩余执行时长和转移时长;
144.若目标任务的当前剩余执行时长和转移时长之间满足预设的转移条件,则将目标任务和目标任务对应的任务信息转移至任务队列;任务队列中存储的任务和对应的任务信息为执行服务器待处理的任务。
145.在一个实施例中,转移条件包括以下至少一种:目标任务的当前剩余执行时长与转移时长之间为预设的倍数关系;目标任务的当前剩余执行时长与转移时长之间为差值处于预设范围内。
146.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
147.根据当前时间和目标任务的下一执行时刻,确定目标任务的当前剩余执行时长;以及向任务队列发送多个测试请求,获取多个测试请求的响应时长;根据响应时长,确定目标任务的转移时长。
148.在一个实施例中,任务信息至少包括:目标任务发送至任务队列的任务转移开始时刻、任务转移开始时刻对应的任务队列的时刻、本地时间与任务队列时间之间的差值、任务转移开始时刻到目标任务的下一执行时刻之间的差值、目标任务的转移时长。
149.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
150.获取任务队列中的目标任务和目标任务对应的任务信息;其中,目标任务为本地服务器响应于目标任务的转移指令,获取目标任务的当前剩余执行时长和转移时长,在目标任务的当前剩余执行时长和转移时长之间满足预设的转移条件时,将目标任务和目标任务对应的任务信息转移至任务队列中的;获取目标任务的恢复信息,根据任务信息和目标任务的恢复信息,计算目标任务的精确执行时间。
151.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
152.将执行服务器的时间和任务队列的时间之间的时间差值、执行服务器领取目标任务的领取时刻和领取时长、领取时刻对应的任务队列的时刻,确定为目标任务的恢复信息。
153.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
154.根据任务信息和目标任务的恢复信息,通过预设时差补偿公式计算目标任务的精确执行时间。
155.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
156.响应于目标任务的转移指令,获取目标任务的当前剩余执行时长和转移时长;若目标任务的当前剩余执行时长和转移时长之间满足预设的转移条件,则将目标任务和目标任务对应的任务信息转移至任务队列;任务队列中存储的任务和对应的任务信息为执行服务器待处理的任务。
157.在一个实施例中,转移条件包括以下至少一种:目标任务的当前剩余执行时长与转移时长之间为预设的倍数关系;目标任务的当前剩余执行时长与转移时长之间为差值处
于预设范围内。
158.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
159.根据当前时间和目标任务的下一执行时刻,确定目标任务的当前剩余执行时长;以及向任务队列发送多个测试请求,获取多个测试请求的响应时长;根据响应时长,确定目标任务的转移时长。
160.在一个实施例中,任务信息至少包括:目标任务发送至任务队列的任务转移开始时刻、任务转移开始时刻对应的任务队列的时刻、本地时间与任务队列时间之间的差值、任务转移开始时刻到目标任务的下一执行时刻之间的差值、目标任务的转移时长。
161.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
162.获取任务队列中的目标任务和目标任务对应的任务信息;其中,目标任务为本地服务器响应于目标任务的转移指令,获取目标任务的当前剩余执行时长和转移时长,在目标任务的当前剩余执行时长和转移时长之间满足预设的转移条件时,将目标任务和目标任务对应的任务信息转移至任务队列中的;获取目标任务的恢复信息,根据任务信息和目标任务的恢复信息,计算目标任务的精确执行时间。
163.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
164.将执行服务器的时间和任务队列的时间之间的时间差值、执行服务器领取目标任务的领取时刻和领取时长、领取时刻对应的任务队列的时刻,确定为目标任务的恢复信息。
165.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据任务信息和目标任务的恢复信息,通过预设时差补偿公式计算目标任务的精确执行时间。
166.在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
167.响应于目标任务的转移指令,获取目标任务的当前剩余执行时长和转移时长;若目标任务的当前剩余执行时长和转移时长之间满足预设的转移条件,则将目标任务和目标任务对应的任务信息转移至任务队列;任务队列中存储的任务和对应的任务信息为执行服务器待处理的任务。
168.在一个实施例中,转移条件包括以下至少一种:目标任务的当前剩余执行时长与转移时长之间为预设的倍数关系;目标任务的当前剩余执行时长与转移时长之间为差值处于预设范围内。
169.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
170.根据当前时间和目标任务的下一执行时刻,确定目标任务的当前剩余执行时长;以及向任务队列发送多个测试请求,获取多个测试请求的响应时长;根据响应时长,确定目标任务的转移时长。
171.在一个实施例中,任务信息至少包括:
172.目标任务发送至任务队列的任务转移开始时刻、任务转移开始时刻对应的任务队列的时刻、本地时间与任务队列时间之间的差值、任务转移开始时刻到目标任务的下一执行时刻之间的差值、目标任务的转移时长。
173.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
174.获取任务队列中的目标任务和目标任务对应的任务信息;其中,目标任务为本地服务器响应于目标任务的转移指令,获取目标任务的当前剩余执行时长和转移时长,在目
标任务的当前剩余执行时长和转移时长之间满足预设的转移条件时,将目标任务和目标任务对应的任务信息转移至任务队列中的;获取目标任务的恢复信息,根据任务信息和目标任务的恢复信息,计算目标任务的精确执行时间。
175.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
176.将执行服务器的时间和任务队列的时间之间的时间差值、执行服务器领取目标任务的领取时刻和领取时长、领取时刻对应的任务队列的时刻,确定为目标任务的恢复信息。
177.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据任务信息和目标任务的恢复信息,通过预设时差补偿公式计算目标任务的精确执行时间。
178.需要说明的是,本技术所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
179.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器(ferroelectric random access memory,fram)、相变存储器(phase change memory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。本技术所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
180.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
181.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。