CN117215755A - 一种基于时间轮算法的预约事件任务调度方法及系统 - Google Patents
一种基于时间轮算法的预约事件任务调度方法及系统 Download PDFInfo
- Publication number
- CN117215755A CN117215755A CN202311467312.9A CN202311467312A CN117215755A CN 117215755 A CN117215755 A CN 117215755A CN 202311467312 A CN202311467312 A CN 202311467312A CN 117215755 A CN117215755 A CN 117215755A
- Authority
- CN
- China
- Prior art keywords
- task
- module
- cache
- time
- tasks
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 230000006870 function Effects 0.000 claims description 15
- 238000012163 sequencing technique Methods 0.000 claims description 9
- 238000010276 construction Methods 0.000 claims description 8
- 230000001360 synchronised effect Effects 0.000 claims description 7
- 230000003139 buffering effect Effects 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 3
- 238000012795 verification Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 abstract description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000012528 membrane Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000001020 rhythmical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种基于时间轮算法的预约事件任务调度方法,该方法通过结合本地缓存和集中缓存两级任务缓存模型、利用异步线程池及分布式任务处理能力,降低海量定时任务处理延迟,可以达成业务事件的近实时触发及分发处理,解决频繁IO带来的延迟问题的同时,提升整体服务吞吐量和业务实时性。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种基于时间轮算法的预约事件任务调度方法及系统。
背景技术
目前业内传统的定时任务调度引擎或定时任务框架,总体分为三种:第一种是基于关系型数据库的分布式任务调度管理、第二种是基于内存的定时任务调度管理、第三种是采用独立服务的分布式任务调度管理。
然而,第一种方案主要采用定时扫描数据库的机制对定时任务进行遍历排序调度,该方案存在大量磁盘IO导致整体任务搜索效率较低,对数据库索引优化依赖严重,同时关系型数据库普遍横向扩展能力支持度不足,分布式计算能力较差,无法满足系统业务事件的高实时性要求。第二种方案主要采用内存的定时任务调度,该方案在数据容量和任务数量过大时,可能存在内存溢出风险,并且无法对定时任务进行有效优先级动态加载,当服务宕机或故障时,可能存在数据丢失的情况,缺少可靠的任务重试策略和业务恢复机制。第三种方案虽然功能相对完备,但存在业务定制性较差的问题,需要部署一套管理配置UI和后端服务,系统调用复杂度较高、不够轻量。
发明内容
鉴于现有技术中的上述缺陷或不足,期望提供一种基于时间轮算法的预约事件任务调度方法及系统。
第一方面,本申请实施例提供了一种基于时间轮算法的预约事件任务调度方法,该方法包括:
S1:启动服务,provider模块从config模块中获取集中缓存推送策略配置,同时,provider模块从关系型数据库中同步热数据推送至远端集中缓存中完成定时任务的构建及预处理;
S2:在远端集中缓存同步完毕后,monitor模块从config模块中获取本地缓存拉取策略配置,同时,monitor模块从远端集中缓存中获取定时任务并注册任务至时间轮引擎中,完成本地任务的缓存初始化及编排;
S3:在初始化完毕后,monitor模块从config模块中获取定时同步策略配置并提交延时任务至线程池中,注册定时同步线程定时同步远端缓存;
S4:当产生增量定时任务时,provider模块将增量任务传入monitor模块,monitor模块追加注册任务至时间轮中;
S5:当定时任务触发执行时,时间轮将任务的回调函数提交至线程池中调用publisher模块构建并发布业务事件,然后由事件监听器调用下游模块和第三方业务。
在其中一个实施例中,在步骤S1中,所述远端集中缓存采用有序跳表作为数据缓存结构;
使用任务过期时间戳作为缓存的score,对热数据表中的数据全量缓存,且通过score作为排序依据,并根据score构建跳表索引。
在其中一个实施例中,在步骤S2中,所述monitor模块从远端集中缓存中获取定时任务并注册任务至时间轮引擎中之后,该方法还包括:
时间轮引擎接收外界间断投递进来的新增任务及主动取消的任务。
在其中一个实施例中,所述monitor模块追加注册任务至时间轮中,包括:
monitor模块从config模块中获取任务触发条件参数,计算任务过期时间及缓存数据范围拉取策略;
monitor模块根据任务过期时间追加注册任务至时间轮中。
第二方面,本申请实施例提供了一种基于时间轮算法的预约事件任务调度系统,该系统包括:
一级缓存模块,用于热数据表中定时任务数据全量缓存,通过有序跳表结构解决缓存搜索排序效率问题,时间复杂度由O(N)降低至O(log(N));
二级缓存模块,用于在本地内存中缓存当前服务节点的部分待执行任务,结合时钟槽数组的查找和链表的增删性能优势,使得搜索任务、新增任务、取消任务时间复杂度由O(log(N))降低至O(1);
集中缓存初始化模块,用于启动服务,provider模块从config模块中获取集中缓存推送策略配置,同时,provider模块从关系型数据库中同步热数据推送至远端集中缓存中完成定时任务的构建及预处理;
本地缓存初始模块,用于在远端集中缓存同步完毕后,monitor模块从config模块中获取本地缓存拉取策略配置,同时,monitor模块从远端集中缓存中获取定时任务并注册任务至时间轮引擎中,完成本地任务的缓存初始化及编排;
定时任务批量注册模块,用于在初始化完毕后,monitor模块从config模块中获取定时同步策略配置并提交延时任务至线程池中,注册定时同步线程定时同步远端缓存;
定时任务追加注册模块,用于当产生增量定时任务时,provider模块将增量任务传入monitor模块,monitor模块追加注册任务至时间轮中;
定时任务调度执行模块,用于当定时任务触发执行时,时间轮将任务的回调函数提交至线程池中调用publisher模块构建并发布业务事件,然后由事件监听器调用下游模块和第三方业务;
定时任务取消模块,用于当用户根据响应业务触发取消指定定时任务时,系统首先移除数据库和集中缓存中的任务,同时注销本地时间轮中的任务;当服务其他实例中存在该任务的副本时,先调用集中缓存进行验证,如果已被取消,则不再调用执行。
在其中一个实施例中,所述远端集中缓存采用有序跳表作为数据缓存结构;
使用任务过期时间戳作为缓存的score,对热数据表中的数据全量缓存,且通过score作为排序依据,并根据score构建跳表索引。
在其中一个实施例中,所述monitor模块从远端集中缓存中获取定时任务并注册任务至时间轮引擎中之后,该系统还包括:
时间轮引擎接收外界间断投递进来的新增任务及主动取消的任务。
在其中一个实施例中,所述monitor模块追加注册任务至时间轮中,包括:
monitor模块从config模块中获取任务触发条件参数,计算任务过期时间及缓存数据范围拉取策略;
monitor模块根据任务过期时间追加注册任务至时间轮中。
本申请的有益效果包括:
本申请提供的基于时间轮算法的预约事件任务调度方法,该方法通过结合本地缓存和集中缓存两级任务缓存模型、利用异步线程池及分布式任务处理能力,降低海量定时任务处理延迟,可以达成业务事件的近实时触发及分发处理,解决频繁IO带来的延迟问题的同时,提升整体服务吞吐量和业务实时性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出了本申请实施例提供的基于时间轮算法的预约事件任务调度方法的流程示意图;
图2示出了本申请实施例提供的基于时间轮算法的预约事件任务调度方法及系统中核心模块间依赖及调用机制的流程示意图;
图3示出了本申请实施例提供的时间轮任务调度示意图;
图4示出了适于用来实现本申请实施例的终端设备的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关申请,而非对该申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与申请相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
请参考图1-4所示,图1示出了本申请实施例提供的一种基于时间轮算法的预约事件任务调度方法,该方法包括:
步骤110:启动服务,provider模块从config模块中获取集中缓存推送策略配置,同时,provider模块从关系型数据库中同步热数据推送至远端集中缓存中完成定时任务的构建及预处理;
步骤120:在远端集中缓存同步完毕后,monitor模块从config模块中获取本地缓存拉取策略配置,同时,monitor模块从远端集中缓存中获取定时任务并注册任务至时间轮引擎中,完成本地任务的缓存初始化及编排;
步骤130:在初始化完毕后,monitor模块从config模块中获取定时同步策略配置并提交延时任务至线程池中,注册定时同步线程定时同步远端缓存;
步骤140:当产生增量定时任务时,provider模块将增量任务传入monitor模块,monitor模块追加注册任务至时间轮中;
步骤150:当定时任务触发执行时,时间轮将任务的回调函数提交至线程池中调用publisher模块构建并发布业务事件,然后由事件监听器调用下游模块和第三方业务。
示例性的,本申请中的monitor模块为内存定时任务缓存的监控者角色,是该模块的控制器。主要包括:内部维护一个哈希单层时间轮负责对时间轮内定时任务的管理和调度。内部维护一个线程池,该线程池使用当前环境的处理器核心数作为线程数量,使用基于单链表实现的CAS阻塞队列作为线程池任务队列,该线程池用于执行被触发的定时任务的事件发布。
Publisher模块为定时任务所绑定的事件发布者角色。由task实例所绑定任务被执行时发布预先注册的事件。
Task模块为定时任务实现TimerTask接口的run回调函数,通过回调函数调用publisher发布事件,涵盖多种定时任务类型,根据不同的事件注册相应的任务类型。
Provider模块为远端集中任务缓存管理器,用于加载关系型数据库中任务数据至远端集中缓存中,再按照拉取策略从远端集中缓存拉取到本地内存的monitor所维护的时间轮中。
Config模块为配置模块,用于配置注入定时任务参数配置信息、数据拉取策略、远端集中缓存拉取定时器的拉取cron表达式/拉取频率等。
该方法的具体步骤如下:
(1)当服务启动时,由provider从config获取集中缓存推送策略配置并从关系型数据库中同步热数据推送至远端集中缓存中完成定时任务的构建及预处理。
(2)远端集中缓存同步完毕后,由monitor从config获取本地缓存拉取策略配置从远端集中缓存拉取定时任务并注册任务至时间轮引擎中,完成本地缓存的初始化。
(3)本地缓存初始化完毕后,由monitor从config获取定时同步策略配置并提交延时任务至线程池中,注册定时同步线程,用于多服务实例并行计算时定时同步远端缓存。
(4)当业务运行中,产生增量定时任务时,由provider将增量任务传入monitor,再由monitor追加注册任务至时间轮中。注册任务时,从config获取任务触发条件参数,计算任务过期时间。
(5)当定时任务触发执行时,时间轮将任务的回调函数提交至线程池中调用publisher构建并发布业务事件,再由事件监听器调用下游模块和第三方业务。
本申请采用两级定时任务缓存策略,其中,远端集中缓存采用Redis中间件中的Sorted sets作为数据缓存结构。使用任务过期时间戳作为缓存的score,对热数据表中的数据全量缓存。通过Sorted sets的跳表结构解决缓存搜索排序效率问题,时间复杂度由O(N)降低至O(log(N))。其次,本地缓存使用monitor内部维护的时间轮数据结构增量缓存待执行任务,通过provider结合拉取策略定时拉取部分定时任务至monitor的本地缓存中。默认初始化3600个时钟槽,每500毫秒获取下一个时钟槽中待执行的任务列表,并将任务放入线程池中执行。结合时钟槽数组的查找和链表的增删性能优势,使得搜索任务、新增任务、取消任务时间复杂度由O(log(N))降低至O(1)。
本申请中远端集中任务缓存构建及更新包括:
(1)缓存键:用户ID + 资源ID + 占用状态
(2)缓存值:member:预约资源占用实体
score:预约资源占用过期时间戳
(3)主要推送配置参数:推送频率(缺省值:60次/分钟)、分页拉取数据数量(缺省值:100)。
(4)拉取至本地缓存方式:服务启动时预热加载、服务运行中实时增量更新、服务运行中定时同步。
(5)本地缓存主要拉取配置参数:拉取间隔(缺省值:24小时以内)。
(6)并行计算配置参数:当开启配置时,更新本地缓存时会拉取服务实例数量对任务执行哈希取模算法及所监控任务所属的资源类型,确定当前服务实例是否缓存该任务,不缓存即不会执行该任务。
本申请中的时间轮核心配置主要包括以下参数:
(1)工作线程工厂:用于创建worker线程;
(2)滴答(tick)间隔:时针每次 tick 的时间,相当于时针间隔多久走到下一个slot,缺省值:500;
(3)时间轮时钟槽(slot)数量:时间轮上slot总数,须是2的次幂便于取模运算,缺省值:3600;
(4)任务线程池:用于执行时钟槽中的定时任务,缺省值:创建当前环境的核心数量的线程数,使用基于CAS阻塞队列作为线程池任务队列。
该时间轮整体结构分为:worker、slot、task,具体如图3所示,
(1)时间轮内核(worker):由工作线程工厂产生一个worker线程有节律的周期性运作,wheel维持着两个缓存定时任务的阻塞队列,其中一个用于接收外界断断续续地投递进来的新增任务,另外一个则用于缓存那些主动取消的任务,wheel需要在tick开始期间先行将他们装入对应的时钟槽或从中移除他们。
(2)时钟槽(slot):每个slot用于缓存和管理定时任务的双向链表容器每一个节点(即定时任务),它持有链表首尾两个节点。
(3)定时任务(task):既是双向链表的节点,同时也是实际调度任务的容器。
该时间轮引擎执行步骤:
(1)根据“tick间隔”可以推算出下一次 tick 的 deadline,deadline 减去当前时间就可以得到需要sleep 的等待时间。所以“tick间隔”的值越小,时间的精准度也就越高,同时worker的繁忙程度越高。
(2)worker从 sleep 状态唤醒后,接下来会执行第二步流程,通过按位与的操作计算出当前 tick 在时钟槽数组中对应的下标。
(3)worker处理所有被取消的任务,然后将其从时钟槽的链表上移除元素。
(4)worker处理所有新增的任务,将新增的定时任务转移至时钟槽中。
(5)worker执行当前时钟槽中的到期任务,内部调用task的run回调函数。如果任务已经被取消,直接从链表中移除。
本申请提供的上述方案,结合预约业务特点采用两级缓存任务(即远端集中的跳表结构缓存和本地时间轮结构缓存)分层解决定时任务插入、取消、搜索效率问题,提升业务实时性,同时通过关系型数据库确保数据最终一致性。当需要服务多实例并行计算,可动态分发任务到所在的服务实例。通过对任务哈希取模算法进行任务多实例分别进行本地缓存管理和预加载。且定时任务具备故障恢复能力,即服务实例宕机恢复时,会根据关系型数据库重新同步远端集中缓存,并将处理失败的任务重新拉取到本地缓存中。
在一些实施例中,在步骤110中,远端集中缓存采用有序跳表作为数据缓存结构;使用任务过期时间戳作为缓存的score,对热数据表中的数据全量缓存,且通过score作为排序依据,并根据score构建跳表索引。
在一些实施例中,在步骤120中, monitor模块从远端集中缓存中获取定时任务并注册任务至时间轮引擎中之后,该方法还包括:时间轮引擎接收外界间断投递进来的新增任务及主动取消的任务。
在一些实施例中, monitor模块追加注册任务至时间轮中,包括:monitor模块从config模块中获取任务触发条件参数,计算任务过期时间及缓存数据范围拉取策略;monitor模块根据任务过期时间追加注册任务至时间轮中。
应当注意,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
进一步地,本申请实施例还提供了一种基于时间轮算法的预约事件任务调度系统,该系统包括:
一级缓存模块,用于热数据表中定时任务数据全量缓存,通过有序跳表结构解决缓存搜索排序效率问题,时间复杂度由O(N)降低至O(log(N));
二级缓存模块,用于在本地内存中缓存当前服务节点的部分待执行任务,结合时钟槽数组的查找和链表的增删性能优势,使得搜索任务、新增任务、取消任务时间复杂度由O(log(N))降低至O(1);
集中缓存初始化模块,用于启动服务,provider模块从config模块中获取集中缓存推送策略配置,同时,provider模块从关系型数据库中同步热数据推送至远端集中缓存中完成定时任务的构建及预处理;
本地缓存初始模块,用于在远端集中缓存同步完毕后,monitor模块从config模块中获取本地缓存拉取策略配置,同时,monitor模块从远端集中缓存中获取定时任务并注册任务至时间轮引擎中,完成本地任务的缓存初始化及编排;
定时任务批量注册模块,用于在初始化完毕后,monitor模块从config模块中获取定时同步策略配置并提交延时任务至线程池中,注册定时同步线程定时同步远端缓存;
定时任务追加注册模块,用于当产生增量定时任务时,provider模块将增量任务传入monitor模块,monitor模块追加注册任务至时间轮中;
定时任务调度执行模块,用于当定时任务触发执行时,时间轮将任务的回调函数提交至线程池中调用publisher模块构建并发布业务事件,然后由事件监听器调用下游模块和第三方业务;
定时任务取消模块,用于当用户根据响应业务触发取消指定定时任务时,系统首先移除数据库和集中缓存中的任务,同时注销本地时间轮中的任务;当服务其他实例中存在该任务的副本时,先调用集中缓存进行验证,如果已被取消,则不再调用执行。
应当理解,系统中记载的诸单元或模块与参考图1描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作和特征同样适用于系统及其中包含的单元,在此不再赘述。系统可以预先实现在电子设备的浏览器或其他安全应用中,也可以通过下载等方式而加载到电子设备的浏览器或其安全应用中。系统中的相应单元可以与电子设备中的单元相互配合以实现本申请实施例的方案。
下面参考图4,其示出了适于用来实现本申请实施例的终端设备或服务器的计算机系统200的结构示意图。
如图4所示,计算机系统200包括中央处理单元(CPU)201,其可以根据存储在只读存储器(ROM)202中的程序或者从存储部分208加载到随机访问存储器(RAM)203中的程序而执行各种适当的动作和处理。在随机访问存储器(RAM)203中,还存储有计算机系统200操作所需的各种程序和数据。中央处理单元(CPU)201、只读存储器(ROM)202以及随机访问存储器(RAM)203通过总线204彼此相连。输入/输出(I/O)接口205也连接至总线204。
以下部件连接至输入/输出(I/O)接口205:包括键盘、鼠标等的输入部分206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分207;包括硬盘等的存储部分208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分209。通信部分209经由诸如因特网的网络执行通信处理。驱动器210也根据需要连接至输入/输出(I/O)接口205。可拆卸介质211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器210上,以便于从其上读出的计算机程序根据需要被安装入存储部分208。
特别地,根据本公开的实施例,上文参考图1描述的过程可以被实现为计算机软件程序或以HTTP接口形式提供相关处理服务。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,计算机程序包含用于执行图1的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分209从网络上被下载和安装,和/或从可拆卸介质211被安装。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,前述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括第一子区域生成单元、第二子区域生成单元以及显示区域生成单元。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,显示区域生成单元还可以被描述为“用于根据第一子区域和第二子区域生成文本的显示区域的单元”。
作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中前述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,前述程序被一个或者一个以上的处理器用来执行描述于本申请的应用于透明窗口信封的文本生成方法。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的申请范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离前述申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (8)
1.一种基于时间轮算法的预约事件任务调度方法,其特征在于,该方法包括:
S1:启动服务,provider模块从config模块中获取集中缓存推送策略配置,同时,provider模块从关系型数据库中同步热数据推送至远端集中缓存中完成定时任务的构建及预处理;
S2:在远端集中缓存同步完毕后,monitor模块从config模块中获取本地缓存拉取策略配置,同时,monitor模块从远端集中缓存中获取定时任务并注册任务至时间轮引擎中,完成本地任务的缓存初始化及编排;
S3:在初始化完毕后,monitor模块从config模块中获取定时同步策略配置并提交延时任务至线程池中,注册定时同步线程定时同步远端缓存;
S4:当产生增量定时任务时,provider模块将增量任务传入monitor模块,monitor模块追加注册任务至时间轮中;
S5:当定时任务触发执行时,时间轮将任务的回调函数提交至线程池中调用publisher模块构建并发布业务事件,然后由事件监听器调用下游模块和第三方业务。
2.根据权利要求1所述的基于时间轮算法的预约事件任务调度方法,其特征在于,在步骤S1中,所述远端集中缓存采用有序跳表作为数据缓存结构;
使用任务过期时间戳作为缓存的score,对热数据表中的数据全量缓存,且通过score作为排序依据,并根据score构建跳表索引。
3.根据权利要求1所述的基于时间轮算法的预约事件任务调度方法,其特征在于,在步骤S2中,所述monitor模块从远端集中缓存中获取定时任务并注册任务至时间轮引擎中之后,该方法还包括:
时间轮引擎接收外界间断投递进来的新增任务及主动取消的任务。
4.根据权利要求1所述的基于时间轮算法的预约事件任务调度方法,其特征在于,所述monitor模块追加注册任务至时间轮中,包括:
monitor模块从config模块中获取任务触发条件参数,计算任务过期时间及缓存数据范围拉取策略;
monitor模块根据任务过期时间追加注册任务至时间轮中。
5.一种基于时间轮算法的预约事件任务调度系统,其特征在于,该系统包括:
一级缓存模块,用于热数据表中定时任务数据全量缓存,通过有序跳表结构解决缓存搜索排序效率问题,时间复杂度由O(N)降低至O(log(N));
二级缓存模块,用于在本地内存中缓存当前服务节点的部分待执行任务,结合时钟槽数组的查找和链表的增删性能优势,使得搜索任务、新增任务、取消任务时间复杂度由O(log(N))降低至O(1);
集中缓存初始化模块,用于启动服务,provider模块从config模块中获取集中缓存推送策略配置,同时,provider模块从关系型数据库中同步热数据推送至远端集中缓存中完成定时任务的构建及预处理;
本地缓存初始模块,用于在远端集中缓存同步完毕后,monitor模块从config模块中获取本地缓存拉取策略配置,同时,monitor模块从远端集中缓存中获取定时任务并注册任务至时间轮引擎中,完成本地任务的缓存初始化及编排;
定时任务批量注册模块,用于在初始化完毕后,monitor模块从config模块中获取定时同步策略配置并提交延时任务至线程池中,注册定时同步线程定时同步远端缓存;
定时任务追加注册模块,用于当产生增量定时任务时,provider模块将增量任务传入monitor模块,monitor模块追加注册任务至时间轮中;
定时任务调度执行模块,用于当定时任务触发执行时,时间轮将任务的回调函数提交至线程池中调用publisher模块构建并发布业务事件,然后由事件监听器调用下游模块和第三方业务;
定时任务取消模块,用于当用户根据响应业务触发取消指定定时任务时,系统首先移除数据库和集中缓存中的任务,同时注销本地时间轮中的任务;当服务其他实例中存在该任务的副本时,先调用集中缓存进行验证,如果已被取消,则不再调用执行。
6.根据权利要求5所述的基于时间轮算法的预约事件任务调度系统,其特征在于,所述远端集中缓存采用有序跳表作为数据缓存结构;
使用任务过期时间戳作为缓存的score,对热数据表中的数据全量缓存,且通过score作为排序依据,并根据score构建跳表索引。
7.根据权利要求5所述的基于时间轮算法的预约事件任务调度系统,其特征在于,所述monitor模块从远端集中缓存中获取定时任务并注册任务至时间轮引擎中之后,该系统还包括:
时间轮引擎接收外界间断投递进来的新增任务及主动取消的任务。
8.根据权利要求5所述的基于时间轮算法的预约事件任务调度系统,其特征在于,所述monitor模块追加注册任务至时间轮中,包括:
monitor模块从config模块中获取任务触发条件参数,计算任务过期时间及缓存数据范围拉取策略;
monitor模块根据任务过期时间追加注册任务至时间轮中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311467312.9A CN117215755B (zh) | 2023-11-07 | 2023-11-07 | 一种基于时间轮算法的预约事件任务调度方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311467312.9A CN117215755B (zh) | 2023-11-07 | 2023-11-07 | 一种基于时间轮算法的预约事件任务调度方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117215755A true CN117215755A (zh) | 2023-12-12 |
CN117215755B CN117215755B (zh) | 2024-02-06 |
Family
ID=89042859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311467312.9A Active CN117215755B (zh) | 2023-11-07 | 2023-11-07 | 一种基于时间轮算法的预约事件任务调度方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117215755B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6718479B1 (en) * | 2000-09-08 | 2004-04-06 | International Business Machines Corporation | Method, system, program, and data structures for managing hierarchical timing wheels |
CN107656808A (zh) * | 2016-07-25 | 2018-02-02 | 武汉票据交易中心有限公司 | 一种票据交易的流程实现方法及相关系统 |
CN110674432A (zh) * | 2019-09-09 | 2020-01-10 | 中国平安财产保险股份有限公司 | 二级缓存方法、装置及计算机可读存储介质 |
CN111782414A (zh) * | 2020-05-12 | 2020-10-16 | 北京皮尔布莱尼软件有限公司 | 一种延时消息处理方法及系统 |
CN114063936A (zh) * | 2022-01-18 | 2022-02-18 | 苏州浪潮智能科技有限公司 | 一种优化定时任务的方法、系统、设备和存储介质 |
CN114416308A (zh) * | 2021-12-24 | 2022-04-29 | 上海浦东发展银行股份有限公司 | 任务调度方法、装置、计算机设备和存储介质 |
CN115563224A (zh) * | 2022-11-23 | 2023-01-03 | 北京江融信科技有限公司 | 一种分布式参数缓存系统 |
-
2023
- 2023-11-07 CN CN202311467312.9A patent/CN117215755B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6718479B1 (en) * | 2000-09-08 | 2004-04-06 | International Business Machines Corporation | Method, system, program, and data structures for managing hierarchical timing wheels |
CN107656808A (zh) * | 2016-07-25 | 2018-02-02 | 武汉票据交易中心有限公司 | 一种票据交易的流程实现方法及相关系统 |
CN110674432A (zh) * | 2019-09-09 | 2020-01-10 | 中国平安财产保险股份有限公司 | 二级缓存方法、装置及计算机可读存储介质 |
CN111782414A (zh) * | 2020-05-12 | 2020-10-16 | 北京皮尔布莱尼软件有限公司 | 一种延时消息处理方法及系统 |
CN114416308A (zh) * | 2021-12-24 | 2022-04-29 | 上海浦东发展银行股份有限公司 | 任务调度方法、装置、计算机设备和存储介质 |
CN114063936A (zh) * | 2022-01-18 | 2022-02-18 | 苏州浪潮智能科技有限公司 | 一种优化定时任务的方法、系统、设备和存储介质 |
CN115563224A (zh) * | 2022-11-23 | 2023-01-03 | 北京江融信科技有限公司 | 一种分布式参数缓存系统 |
Non-Patent Citations (1)
Title |
---|
喻诗祥;顾乃杰;张旭;曹越;: "一种多核ARM平台下用户态定时器的实现", 计算机工程, no. 01 * |
Also Published As
Publication number | Publication date |
---|---|
CN117215755B (zh) | 2024-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9898517B2 (en) | Declarative synchronization of shared data | |
CN112445598B (zh) | 一种基于quartz的任务调度方法、装置、电子设备以及介质 | |
CN109446395A (zh) | 一种提高基于Hadoop大数据综合查询引擎效率的方法及系统 | |
EP2005330A1 (en) | Method and system for synchronization of databases | |
CN106325984B (zh) | 一种大数据任务调度装置 | |
Xue et al. | Processing concurrent graph analytics with decoupled computation model | |
CN103716397B (zh) | 一种面向服务仿真时钟推进方法 | |
CN113127225A (zh) | 一种数据处理任务的调度方法、装置和系统 | |
CN117215755B (zh) | 一种基于时间轮算法的预约事件任务调度方法及系统 | |
CN112948096A (zh) | 一种批量调度方法、装置和设备 | |
CN116954944A (zh) | 基于内存网格的分布式数据流处理方法、装置及设备 | |
CN115687491A (zh) | 一种基于关系型数据库的数据分析任务调度系统 | |
CN115242660A (zh) | 基于中心化的异构算力联邦系统及组网和执行方法 | |
CN112783613B (zh) | 一种单元调度的方法和装置 | |
CN114553959A (zh) | 基于态势感知的云原生服务网格配置按需下发方法及应用 | |
Semghouni et al. | On new scheduling policy for the improvement of firm RTDBSs performances | |
CN109597690B (zh) | 一种高性能云计算云爆发同步方法 | |
CN113901141A (zh) | 一种分布式数据同步方法及系统 | |
CN112182003A (zh) | 一种数据同步方法和装置 | |
Son et al. | Concurrency control for replicated data in distributed real-time systems | |
Niklander et al. | A real-time database for future telecommunication services | |
Huang et al. | An approach for the unified time management mechanism for HLA | |
CN111782351A (zh) | 一种分布式任务调度的方法和装置 | |
Huang et al. | Smart Time Management—the unified time synchronization interface for the distributed simulation | |
Cao et al. | Research on Implementation Approaches for Delay Queue |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |