CN113806055A - 一种轻量级任务调度方法、系统、装置及存储介质 - Google Patents

一种轻量级任务调度方法、系统、装置及存储介质 Download PDF

Info

Publication number
CN113806055A
CN113806055A CN202111156699.7A CN202111156699A CN113806055A CN 113806055 A CN113806055 A CN 113806055A CN 202111156699 A CN202111156699 A CN 202111156699A CN 113806055 A CN113806055 A CN 113806055A
Authority
CN
China
Prior art keywords
task
lightweight
task scheduling
executing
policy
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.)
Pending
Application number
CN202111156699.7A
Other languages
English (en)
Inventor
舒艳华
钟建庭
杨传池
袁东昊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Haizhichuang Technology Co ltd
Original Assignee
Shenzhen Haizhichuang Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Haizhichuang Technology Co ltd filed Critical Shenzhen Haizhichuang Technology Co ltd
Priority to CN202111156699.7A priority Critical patent/CN113806055A/zh
Publication of CN113806055A publication Critical patent/CN113806055A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请涉及通讯技术领域,具体公开了一种轻量级任务调度方法、系统、装置及存储介质,通过自定义注解的方式,实现任务调度,所述方法包括:通过注解发起定时任务的策略;多个虚拟机争抢任务,争抢成功,则执行任务,争抢失败,则不执行任务,并等待下次任务争抢。

Description

一种轻量级任务调度方法、系统、装置及存储介质
技术领域
本申请涉及通信技术领域,尤其涉及一种轻量级任务调度方法、系统、装置及存储介质。
背景技术
随着微服务时代的到来,Quartz框架这种单机定时任务逐步退出舞台, Xxl-Job、Elastic-Job这些中心化的调度中心逐步得到广泛应用。但是Xxl-Job 和Elastic-Job或者各个公司自己开发的调度中心都需要消耗服务器资源,并且依赖自身的高可用,学习成本高。
如果是中小型公司、或者项目规模并不大,但是我们确实是微服务并且是集群部署了3~5台机器,同时我们的调度中心任务并不是很多,单独起一个调度服务这个付出和收益并不成正比。比如使用Elastic-Job,还需要依赖 Zookeeper,那么为了达到高可用,就需要6台虚拟机。
这种情况下我们需要一个轻量级的调度框架帮我们实现定时任务调度,并且同时满足集群部署。
发明内容
本申请提供了一种轻量级任务调度方法、系统、装置及存储介质,以通过轻量级的调度框架帮我们实现定时任务调度,并且同时满足集群部署。
第一方面,本申请提供了一种轻量级任务调度方法,通过自定义注解的方式,实现任务调度,所述方法包括:
通过注解发起定时任务的策略;
争抢任务,若争抢成功,则执行任务,若争抢失败,则不执行任务,并等待下次任务争抢。
第二方面,本申请还提供了一种轻量级任务调度系统,包括:
注解单元,用于通过注解发起定时任务的策略;
任务争抢单元,用于争抢任务,若争抢成功,则执行任务,若争抢失败,则不执行任务,并等待下次任务争抢。
第三方面,本申请还提供了一种轻量级任务调度装置,包括:
存储器和处理器;
所述存储器用于存储程序;
所述处理器,用于执行所述程序并在执行所述程序时实现上述的轻量级任务调度方法。
第四方面,本申请还提供了一种存储介质,其中存储有处理器可执行的指令,其特征在于,所述处理器可执行的指令在由处理器执行时用于执行上述的轻量级任务调度方法。
本申请公开了一种轻量级任务调度方法、系统、装置及存储介质,通过注解发起定时任务的策略;多个虚拟机争抢任务,争抢成功,则执行任务,争抢失败,则不执行任务,并等待下次任务争抢。该方法可以不依赖过多的中间件实现分布式调度,只需要redis或者mysql即可实现集群方式的分布式任务调度;学习成本低,无需像Xxl-Job或者Elastic-Job,开发人员需要熟悉很多概念才能上手。这个方案用户只需要知道Corn表达式甚至有些业务不需要Corn 表达式就针对业务实现自己想要的功能。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请的实施例提供的一种轻量级任务调度方法的示意流程图;
图2为本申请一实施例提供的一种轻量级任务调度系统的示意性框图。
图3为本申请一实施例提供的一种计算机设备的结构示意性框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
本申请的实施例提供了一种轻量级任务调度方法、系统、装置及存储介质。其中,该轻量级任务调度方法可以应用于终端或服务器中,以方便开发人员使用。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参阅图1,图1是本申请的实施例提供的一种轻量级任务调度方法的示意流程图。其中,该轻量级任务调度方法包括步骤S101至步骤S102。
S101、通过注解发起定时任务的策略。
具体地,注解@ColiScheduled派生Spring框架的@Scheduled,在Spring 类型的项目启动之后自动生效,不需要用户配置什么。整个定时任务发起依托于SpringFramework。自动扫描到Spring的容器中,被注解的方法使用AOP切面,在执行方法前做一次争取任务。
S102、多个虚拟机争抢任务,争抢成功,则执行任务,争抢失败,则不执行任务,并等待下次任务争抢。
具体地,微服务的各个服务也会如同Quartz那样到时间就执行任务。但是微服务之间会发起一个争抢执行任务的行为。争抢成功的微服务执行该定时任务,争抢失败的微服务不执行该任务。
这一个争抢的行为依赖于开发者配置的策略,或者默认策略。
本申请通过注解的方式发起定时任务策略,不需要用户配置,即可实现集群模式下的分布式调度。
在一个可选的实施例中,所述多个虚拟机争抢任务包括:通过redis策略使用redis分布式锁实现或通过mysql策略使用的mysql的唯一索引的策略实现。
具体地,redis策略使用的redis分布式锁实现。如果redis是单机服务,那么配置redis的连接池的启动方式是单机模式,如果是集群的集群模式,那么redis的连接模式是集群模式。单机模式使用可重入分布式锁的方式实现;集群模式使用红锁的方式实现争抢任务执行。如果抢锁成功,则该服务抢到执行任务的权利,开始执行任务;否则其它任务将等待下次再次发起任务争抢。
在通过redis策略使用redis分布式锁实现中,redis策略底层可以根据自身情况,使用单锁策略或红锁策略来实现争抢任务。
mysql策略使用的mysql的唯一索引的策略。任务开始执行是往数据库中 insert一条记录,cornKey会根据用户配置的调度策略如corn表达式生成唯一的执行id,往mysql数据库insert的时候,如果失败了,则抢任务失败,如果 insert成功了,则抢任务失败。
并且status记录任务执行是否完成,如果没完成宕机了,下次重启定时任务会重启该定时任务。
本实施例中,注解为@ColiScheduled注解,使用了Spring框架, @ColiScheduled只需要配置简单的corn表达式,即可实现定时任务调度。
注解可以为@ColiScheduled(strategy=”redis”,cron=”0****MON-FRI”, zone=””,fixedDelay=”-1”,fixedDelayString=””,fixedRate=””,fixedRateString=””,initialDelay=””,initialDelayString=””waitTimeout=300,leaseTime=120,expireTime=300)。
-strategy=”redis”,争取策略,默认redis,支持redis和db两种方式。其中db策略需要创建一个表,这种策略适合没有引入redis的服务。
-corn表达式,表示任务执行时间,例如,"0****MON-FRI"表示工作日每分钟一次。
-zone将解析cron表达式的时区。默认情况下,此属性为空字符串(即将使用服务器的本地时区)。
-fixedDelay在上次调用结束和下一次调用开始之间以秒(默认秒, timeUnit可以配置)为单位的固定时间段内执行带注释的方法。
-fixedDelayString在上次调用结束和下一次调用开始之间以秒(默认秒,timeUnit可以配置)为单位的固定时间段内执行带注释的方法。
-fixedRate在调用之间以秒(默认秒,timeUnit可以配置)为单位的固定时间段执行带注释的方法。
-initialDelay在第一次执行fixedRate或fixedDelay任务之前延迟的秒数(默认秒,timeUnit可以配置)。
-initialDelayString在第一次执行fixedRate或fixedDelay任务之前延迟的秒数(默认秒,timeUnit可以配置)。
-waitTimeout=300,表示该定时任务发起之后去争取锁,争抢的等待时间,过了300秒(默认秒,timeUnit可以配置)的时间自己放弃了。
-leaseTime=120(默认秒,timeUnit可以配置),争抢到执行任务的调度,需要锁定一个时间。
-timeUnit=TimeUnit.SECONDS,时间的单位。
本申请具有以下优点:
1.不依赖过多的中间件实现分布式调度。只需要redis或者mysql即可实现集群方式的分布式任务调度。
2.学习成本低,无需像Xxl-Job或者Elastic-Job,开发人员需要熟悉很多概念才能上手。这个方案用户只需要知道corn表达式甚至有些业务不需要 corn表达式就针对业务实现自己想要的功能。
3.和Spring高度契合,开发人员使用便捷。
请参阅图2所示,本申请还涉及一种轻量级任务调度系统,该系统包括:注解单元201和任务争抢单元202。
其中注解单元201,用于通过注解发起定时任务的策略;
任务争抢单元202,用于争抢任务,若争抢成功,则执行任务,若争抢失败,则不执行任务,并等待下次任务争抢。
请参阅图3,图3是本申请实施例提供的一种轻量级任务调度装置的结构示意性框图。该轻量级任务调度装置可以是服务器或终端。
参阅图3,该轻量级任务调度装置包括通过系统总线连接的处理器、存储器和网络接口,其中,存储器可以包括非易失性存储介质和内存储器。
非易失性存储介质可存储操作系统和计算机程序。该计算机程序包括程序指令,该程序指令被执行时,可使得处理器执行任意一种轻量级任务调度方法。
处理器用于提供计算和控制能力,支撑整个轻量级任务调度装置的运行。
内存储器为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器执行时,可使得处理器执行任意一种轻量级任务调度方法。
该网络接口用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的轻量级任务调度装置的限定,具体的轻量级任务调度装置可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
应当理解的是,处理器可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor, DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
其中,在一个实施例中,所述处理器用于运行存储在存储器中的计算机程序,以实现如下步骤:
通过注解发起定时任务的策略;
多个虚拟机争抢任务,争抢成功,则执行任务,争抢失败,则不执行任务,并等待下次任务争抢。
本申请的实施例中还提供一种存储介质,其中存储有处理器可执行的指令,其特征在于,所述处理器可执行的指令在由处理器执行时用于执行上述的轻量级任务调度方法。
其中,所述存储介质可以是前述实施例所述的轻量级任务调度装置的内部存储单元,例如所述轻量级任务调度装置的硬盘或内存。所述存储介质也可以是所述轻量级任务调度装置的外部存储设备,例如所述轻量级任务调度装置上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (7)

1.一种轻量级任务调度方法,其特征在于,通过自定义注解的方式,实现任务调度,所述方法包括:
通过注解发起定时任务的策略;
争抢任务,若争抢成功,则执行任务,若争抢失败,则不执行任务,并等待下次任务争抢。
2.根据权利要求1所述的轻量级任务调度方法,其特征在于,所述多个虚拟机争抢任务,通过redis策略使用redis分布式锁实现或通过mysql策略使用的mysql的唯一索引的策略实现。
3.根据权利要求2所述的轻量级任务调度方法,其特征在于,所述注解为@ColiScheduled注解。
4.根据权利要求2所述的轻量级任务调度方法,其特征在于,在所述通过redis策略使用redis分布式锁实现中,所述redis策略底层使用单锁策略或红锁策略来实现争抢任务。
5.一种轻量级任务调度系统,其特征在于,包括:
注解单元,用于通过注解发起定时任务的策略;
任务争抢单元,用于争抢任务,若争抢成功,则执行任务,若争抢失败,则不执行任务,并等待下次任务争抢。
6.一种轻量级任务调度装置,其特征在于,包括存储器和处理器;
所述存储器用于存储程序;
所述处理器,用于执行所述程序并在执行所述程序时实现如权利要求1至4中任一项所述的轻量级任务调度方法。
7.一种存储介质,其中存储有处理器可执行的指令,其特征在于,所述处理器可执行的指令在由处理器执行时用于执行如权利要求1至4中任一项所述的轻量级任务调度方法。
CN202111156699.7A 2021-09-30 2021-09-30 一种轻量级任务调度方法、系统、装置及存储介质 Pending CN113806055A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111156699.7A CN113806055A (zh) 2021-09-30 2021-09-30 一种轻量级任务调度方法、系统、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111156699.7A CN113806055A (zh) 2021-09-30 2021-09-30 一种轻量级任务调度方法、系统、装置及存储介质

Publications (1)

Publication Number Publication Date
CN113806055A true CN113806055A (zh) 2021-12-17

Family

ID=78939037

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111156699.7A Pending CN113806055A (zh) 2021-09-30 2021-09-30 一种轻量级任务调度方法、系统、装置及存储介质

Country Status (1)

Country Link
CN (1) CN113806055A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115934287A (zh) * 2022-12-27 2023-04-07 无锡锡银金科信息技术有限责任公司 应用系统多服务集群下定时任务调度方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120227051A1 (en) * 2011-03-03 2012-09-06 International Business Machines Corporation Composite Contention Aware Task Scheduling
US20170054798A1 (en) * 2015-08-19 2017-02-23 International Business Machines Corporation Scheduling Software Deployment
CN110290180A (zh) * 2019-05-31 2019-09-27 北京大米科技有限公司 分布式任务调度方法、装置、计算机设备和存储介质
CN111930355A (zh) * 2020-08-12 2020-11-13 创意信息技术股份有限公司 一种web后端开发框架及其构建方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120227051A1 (en) * 2011-03-03 2012-09-06 International Business Machines Corporation Composite Contention Aware Task Scheduling
US20170054798A1 (en) * 2015-08-19 2017-02-23 International Business Machines Corporation Scheduling Software Deployment
CN110290180A (zh) * 2019-05-31 2019-09-27 北京大米科技有限公司 分布式任务调度方法、装置、计算机设备和存储介质
CN111930355A (zh) * 2020-08-12 2020-11-13 创意信息技术股份有限公司 一种web后端开发框架及其构建方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
品尝孤独: "定时任务+redis实现分布式锁", pages 2 - 3, Retrieved from the Internet <URL:《https://blog.csdn.net/qq_39576977/article/details/116567700》> *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115934287A (zh) * 2022-12-27 2023-04-07 无锡锡银金科信息技术有限责任公司 应用系统多服务集群下定时任务调度方法
CN115934287B (zh) * 2022-12-27 2023-09-12 无锡锡银金科信息技术有限责任公司 应用系统多服务集群下定时任务调度方法

Similar Documents

Publication Publication Date Title
CN108614726B (zh) 虚拟机创建方法及装置
CN113535367B (zh) 任务调度方法及相关装置
EP2454666B1 (en) Fault tolerant batch processing
CN109558234A (zh) 一种定时任务调度方法和装置
CN111221643B (zh) 任务处理方法和任务处理装置
CN110162344B (zh) 一种隔离限流的方法、装置、计算机设备及可读存储介质
CN109358956A (zh) 服务调用方法
EP2551768A1 (en) Multi-core system and start-up method
CN109634989B (zh) 一种hive任务执行引擎选择方法和系统
CN111208992A (zh) 系统调度工作流生成方法和系统
CN112231073A (zh) 一种分布式任务调度方法及其装置
CN116069500A (zh) 一种模型训练任务处理方法、装置、电子设备及可读介质
CN113806055A (zh) 一种轻量级任务调度方法、系统、装置及存储介质
CN117076096A (zh) 任务流程的执行方法、装置、计算机可读介质及电子设备
CN109669735B (zh) 基于延时注册的应用启动方法、装置和存储介质
CN106681810A (zh) 一种任务对接处理的定制管理方法、装置及电子设备
CN114911538B (zh) 一种运行系统的启动方法及计算设备
CN115080231A (zh) 任务的处理方法及装置
CN116302271A (zh) 一种页面展示方法、装置及电子设备
CN115220887A (zh) 调度信息的处理方法、任务处理系统、处理器和电子设备
CN113760524A (zh) 任务执行方法和装置
CN112130900A (zh) 一种bmc的用户信息管理方法、系统、设备以及介质
US20140298352A1 (en) Computer with plurality of processors sharing process queue, and process dispatch processing method
CN111726418B (zh) 云资源的调配方法、装置、终端设备及存储介质
CN111930475B (zh) 启动ett运行的方法及装置

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