异步通讯的任务执行方法、装置、电子设备和存储介质制造方法及图纸

技术编号:34147918 阅读:25 留言:0更新日期:2022-07-14 19:25
本发明专利技术提供异步通讯的任务执行方法、装置、电子设备和存储介质,该方法包括:在本地时间轮向全局时间轮同步任务时,获取全局时间轮的当前时间轮参数和本地时间轮的当前时间轮参数;根据全局时间轮的当前时间轮参数和本地时间轮的当前时间轮参数,判断全局时间轮中是否存在未执行的历史任务;当全局时间轮中不存在未执行的历史任务时,根据本地时间轮的当前时间轮参数执行任务。本发明专利技术实施例提供的异步通讯的任务执行方法,通过设置本地时间轮和全局时间轮,通过本地时间轮推动全局时间轮执行任务,在面对海量的交易任务时,能够实现实时处理,提高了任务的执行效率。提高了任务的执行效率。提高了任务的执行效率。

Task execution method, device, electronic device and storage medium of asynchronous communication

【技术实现步骤摘要】
异步通讯的任务执行方法、装置、电子设备和存储介质


[0001]本专利技术涉及计算机
,尤其涉及异步通讯的任务执行方法、装置、电子设备和存储介质。

技术介绍

[0002]时间轮技术是Linux系统内核对低精度定时器的一种实现机制,是时间复杂度最优的一种定时器。在异步通讯系统中,大部分的延迟算法都是基于时间轮,这和时间轮的时间复杂度低是分不开的。时间轮是一种高效利用线程资源进行批量化调度的调度模型,预先把大批量的调度任务全部都绑定到同一个调度器上面,使用这个调度器来进行所有任务的管理、触发以及运行,可以实现能够高效的管理各种延时任务、周期任务、通知任务等等。
[0003]在异步通讯场景下,目前的时间轮技术一般是用于单个应用内部的、进行一定时间范围内任务的调度,任务只保存在应用本地,无法进行备份,因此,当该服务器宕机或者重启时,会丢失所有任务。
[0004]由于目前的单体应用时间轮容易在服务器宕机或者重启时,造成任务丢失,在面对海量的交易任务时,无法进行实时处理。因此,如何避免任务丢失,提高交互效率是本专利技术所要解决的技术问题。

技术实现思路

[0005]本专利技术提供了异步通讯的任务执行方法、装置、电子设备和存储介质,目的在于在面对海量的交易任务时,能够实现实时处理,避免任务丢失,提高任务执行效率。
[0006]为达上述目的,第一方面,本专利技术提供一种异步通讯的任务执行方法,所述方法包括:在本地时间轮向全局时间轮同步任务时,获取所述全局时间轮的当前时间轮参数和所述本地时间轮的当前时间轮参数;根据所述全局时间轮的当前时间轮参数和所述本地时间轮的当前时间轮参数,判断所述全局时间轮中是否存在未执行的历史任务;当所述全局时间轮中不存在未执行的历史任务时,根据所述本地时间轮的当前时间轮参数执行所述任务。
[0007]在一些可能的实施方式中,所述本地时间轮的当前时间轮参数包括本地时间轮的当前时间片数和当前轮数,所述全局时间轮的当前时间轮参数包括全局时间轮的当前时间片数和当前轮数;所述根据所述全局时间轮的当前时间轮参数和所述本地时间轮的当前时间轮参数,判断所述全局时间轮中是否存在未执行的历史任务,包括:将所述本地时间轮的当前时间片数和当前轮数、所述全局时间轮的当前时间片数和当前轮数进行比较;根据比较结果判断所述全局时间轮中是否存在未执行的历史任务。
[0008]在一些可能的实施方式中,所述根据所述全局时间轮的当前时间轮参数和所述本地时间轮的当前时间轮参数,判断所述全局时间轮中是否存在未执行的历史任务,包括:当所述本地时间轮的当前时间轮参数滞后于所述全局时间轮的当前时间轮参数时,确定所述全局时间轮中存在未执行的历史任务;当所述本地时间轮的当前时间轮参数不滞后于所述全局时间轮的当前时间轮参数时,确定所述全局时间轮中不存在未执行的历史任务。
[0009]在一些可能的实施方式中,所述方法还包括:根据所述全局时间轮的当前时间轮参数计算下一次待执行任务的时间轮参数;根据所述下一次待执行任务的时间轮参数执行所述下一次待执行任务;其中,所述根据所述下一次待执行任务的时间轮参数执行所述下一次待执行任务包括:所述全局时间轮中存储有任务列表,基于确定的所述下一次待执行任务的时间轮参数,获取所述全局时间轮中存储的任务列表中的与所述下一次待执行任务的时间轮参数对应的任务;执行与所述下一次待执行任务的时间轮参数对应的任务。
[0010]在一些可能的实施方式中,在获取所述全局时间轮中存储的任务列表中的与所述下一次待执行任务的时间轮参数对应的任务之后,所述方法还包括:判断所述下一次待执行任务是否需要重复执行;当需要重复执行时,计算该需要重复执行的任务每次执行时的时间轮参数,并存储在所述全局时间轮中。
[0011]在一些可能的实施方式中,所述根据所述全局时间轮的当前时间轮参数计算下一次待执行任务的时间轮参数,包括:确定下一次待执行任务的预设时间和所述全局时间轮中每个时间片占用的时间;根据所述全局时间轮中包括的当前时间片数、预设时间和所述全局时间轮中每个时间片占用的时间,得到衍生变量;获取所述全局时间轮的最大片数值;根据所述衍生变量和所述全局时间轮的最大片数值,计算下一次执行待执行任务的时间片数和轮数。
[0012]在一些可能的实施方式中,当所述全局时间轮中不存在未执行的历史任务时,所述方法还包括:针对所述全局时间轮,创建N个时间片,每个时间片的片数标记为从1到N,其中,N为大于1的整数;按照从1到N的顺序遍历各个时间片,并获取所述各个时间片的时间片数和轮数;针对任一时间片,根据该时间片的时间片数和轮数更新本地时间轮的时间轮参数。
[0013]在一些可能的实施方式中,在所述根据所述本地时间轮的当前时间轮参数执行所述任务之后,所述方法还包括:所述本地时间轮向所述全局时间轮同步任务,获取所述全局时间轮的当前时间轮参数;当所述本地时间轮的当前时间轮参数超前于所述全局时间轮的当前时间轮参数
时,将所述全局时间轮的当前时间轮参数更新为所述本地时间轮的当前时间轮参数。
[0014]在一些可能的实施方式中,在所述任务列表中通过Lua脚本方式获取所述任务;所述全局时间轮通过List数据结构存储有任务列表。
[0015]第二方面,本专利技术提供了一种异步通讯的任务执行装置,所述装置包括:获取模块,用于在本地时间轮向全局时间轮同步任务时,获取所述全局时间轮的当前时间轮参数和所述本地时间轮的当前时间轮参数;判断模块,用于根据所述全局时间轮的当前时间轮参数和所述本地时间轮的当前时间轮参数,判断所述全局时间轮中是否存在未执行的历史任务;执行模块,用于当所述全局时间轮中不存在未执行的历史任务时,根据所述本地时间轮的当前时间轮参数执行所述任务。
[0016]在一些可能的实施方式中,所述判断模块,用于将所述本地时间轮的当前时间片数和当前轮数、所述全局时间轮的当前时间片数和当前轮数进行比较;根据比较结果判断所述全局时间轮中是否存在未执行的历史任务;其中,所述本地时间轮的当前时间轮参数包括本地时间轮的当前时间片数和当前轮数,所述全局时间轮的当前时间轮参数包括全局时间轮的当前时间片数和当前轮数。
[0017]在一些可能的实施方式中,所述判断模块,用于:当所述本地时间轮的当前时间轮参数滞后于所述全局时间轮的当前时间轮参数时,确定所述全局时间轮中存在未执行的历史任务;当所述本地时间轮的当前时间轮参数不滞后于所述全局时间轮的当前时间轮参数时,确定所述全局时间轮中不存在未执行的历史任务。
[0018]在一些可能的实施方式中,所述装置还包括:计算模块,用于根据所述全局时间轮的当前时间轮参数计算下一次待执行任务的时间轮参数;所述执行模块,用于根据所述下一次待执行任务的时间轮参数执行所述下一次待执行任务;其中,所述全局时间轮中存储有任务列表,所述执行模块基于确定的所述下一次待执行任务的时间轮参数,获取所述全局时间轮中存储的任务列表中的与所述下一次待执行任务的时间轮参数对应的任务;执行与所述下一次待执行任务的时间轮参数对应本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种异步通讯的任务执行方法,其特征在于,所述方法包括:在本地时间轮向全局时间轮同步任务时,获取所述全局时间轮的当前时间轮参数和所述本地时间轮的当前时间轮参数;根据所述全局时间轮的当前时间轮参数和所述本地时间轮的当前时间轮参数,判断所述全局时间轮中是否存在未执行的历史任务;当所述全局时间轮中不存在未执行的历史任务时,根据所述本地时间轮的当前时间轮参数执行所述任务。2.根据权利要求1所述的方法,其特征在于,所述本地时间轮的当前时间轮参数包括本地时间轮的当前时间片数和当前轮数,所述全局时间轮的当前时间轮参数包括全局时间轮的当前时间片数和当前轮数;所述根据所述全局时间轮的当前时间轮参数和所述本地时间轮的当前时间轮参数,判断所述全局时间轮中是否存在未执行的历史任务,包括:将所述本地时间轮的当前时间片数和当前轮数、所述全局时间轮的当前时间片数和当前轮数进行比较;根据比较结果判断所述全局时间轮中是否存在未执行的历史任务。3.根据权利要求1所述的方法,其特征在于,所述根据所述全局时间轮的当前时间轮参数和所述本地时间轮的当前时间轮参数,判断所述全局时间轮中是否存在未执行的历史任务,包括:当所述本地时间轮的当前时间轮参数滞后于所述全局时间轮的当前时间轮参数时,确定所述全局时间轮中存在未执行的历史任务;当所述本地时间轮的当前时间轮参数不滞后于所述全局时间轮的当前时间轮参数时,确定所述全局时间轮中不存在未执行的历史任务。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:根据所述全局时间轮的当前时间轮参数计算下一次待执行任务的时间轮参数;根据所述下一次待执行任务的时间轮参数执行所述下一次待执行任务;其中,所述根据所述下一次待执行任务的时间轮参数执行所述下一次待执行任务包括:所述全局时间轮中存储有任务列表,基于确定的所述下一次待执行任务的时间轮参数,获取所述全局时间轮中存储的任务列表中的与所述下一次待执行任务的时间轮参数对应的任务;执行与所述下一次待执行任务的时间轮参数对应的任务。5.根据权利要求4所述的方法,其特征在于,在获取所述全局时间轮中存储的任务列表中的与所述下一次待执行任务的时间轮参数对应的任务之后,所述方法还包括:判断所述下一次待执行任务是否需要重复执行;当需要重复执行时,计算该需要重复执行的任务每次执行时的时间轮参数,并存储在所述全局时间轮中。6.根据权利要求4所述的方法,其特征在于,所述根据所述全局时间轮的当前时间轮参数计算下一次待执行任务的时间轮参数,包括:确定下一次待执行任务的预设时间和所述全局时间轮中每个时间片占用的时间;根据所述全局时间轮中包括的当前时间片数、预设时间和所述全局时间轮中每个时间
片占用的时间,得到衍生变量;获取所述全局时间轮的最大片数值;根据所述衍生变量和所述全局时间轮的最大片数值,计算下一次执行待执行任务的时间片数和轮数。7.根据权利要求1所述的方法,其特征在于,当所述全局时间轮中不存在未执行的历史任务时,所述方法还包括:针对所述全局时间轮,创建N个时间片,每个时间片的片数标记为从1到N,其中,N为大于1的整数;按照从1到N的顺序遍历各个时间片,并获取所述各个时间片的时间片数和轮数;针对任一时间片,根据该时间片的时间片数和轮数更新所述本地时间轮的时间轮参数。8.根据权利要求1所述的方法,其特征在于,在所述根据所述本地时间轮的当前时间轮参数执行所述任务之后,所述方法还包括:所述本地时间轮向所述全局时间轮同步任务,获取所述全局时间轮的当前时间轮参数;当所述本地时间轮的当前时间轮参数超前于所述全局时间轮的当前时间轮参数时,将所述全局时间轮的当前时间轮参数更新为所述本地时间轮的当前时间轮参数。9.根据权利要求4所述的方法,其特征在于,在所述任务列表中通过Lua脚本方式获取所述任务;所述全局时间轮通过List数据结构存储有任务列表。10.一种异步通讯的任务执行装置,其特征在于,所述装置包括:获取模...

【专利技术属性】
技术研发人员:王虓刘明
申请(专利权)人:北京宇信科技集团股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1