CN111580948A - 任务调度方法、装置及计算机设备 - Google Patents
任务调度方法、装置及计算机设备 Download PDFInfo
- Publication number
- CN111580948A CN111580948A CN202010360051.0A CN202010360051A CN111580948A CN 111580948 A CN111580948 A CN 111580948A CN 202010360051 A CN202010360051 A CN 202010360051A CN 111580948 A CN111580948 A CN 111580948A
- Authority
- CN
- China
- Prior art keywords
- task
- quartz
- hash value
- processed
- server node
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明实施例提供了一种任务调度方法,包括:通过任务调度器定时查询所述数据库中存储的任务表,并从所述任务表中获取预设数量的状态为待处理的任务;判断获取到的各个待处理任务对应的哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配;及在判定出哈希值匹配时,确定哈希值匹配的待处理任务为与所述quartz服务器节点相匹配的待处理任务,通过所述任务调度器对应的实例执行与所述quartz服务器节点相匹配的待处理任务。本发明还涉及区块链技术,所述quartz服务器节点为区块链节点,所述数据库的任务调度系统基于区块链平台建立,可以提高任务的时效性,以及可以充分利用到quartz集群的资源并且避免出现数据库死锁问题。
Description
技术领域
本发明实施例涉及区块链技术领域,尤其涉及一种任务调度、装置及计算机设备。
背景技术
Quartz框架是一个完全由java编写的开源作业调度框架,被广泛地应用于实现同一数据库的单集群任务的任务管理及调度。Quartz框架在执行定时任务时,通过单个实例节点从数据库任务表中有序抓取一批选中的异步任务,并在抓取到任务后,通过乐观锁的机制对抓取到的任务进行锁定,以便集群中的其他实例节点不能再抓取该任务。
然而,随着业务场景的增加,平台对任务调度的依赖场景也越来越多,这种单个实例节点的调度机制的任务处理效率较低,已无法满足高实时性的业务需求。
发明内容
有鉴于此,本发明实施例的目的是提供一种任务调度方法、装置、计算机设备及计算机可读存储介质,用于解决现有的任务调度机制效率较低,无法满足高实时性的业务需求的问题。
为实现上述目的,本发明实施例提供了一种任务调度方法,包括:
通过任务调度器定时查询所述数据库中存储的任务表,并从所述任务表中获取预设数量的状态为待处理的任务;
判断获取到的各个待处理任务对应的哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配;及
在判定出哈希值匹配时,确定哈希值匹配的待处理任务为与所述quartz服务器节点相匹配的待处理任务,通过所述任务调度器对应的实例执行与所述quartz服务器节点相匹配的待处理任务。
可选地,所述任务调度方法还包括:
在接收到基于quartz集群的配置文件,根据所述配置文件配置所述quartz服务器对应的哈希槽,所述哈希槽中包括至少一个哈希值。
可选地,所述判断获取到的各个待处理任务对应的哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配包括:
采用预设的哈希算法计算得到的各个待处理任务对应的哈希值;
判断计算得到的各个哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配。
可选地,所述判断获取到的各个待处理任务对应的哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配包括:
查找与所述获取到的各个待处理任务关联保存的哈希值;
判断查找得到的各个哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配。
可选地,所述通过所述任务调度器对应的实例执行与所述quartz服务器节点相匹配的任务包括:
通过所述任务调度器创建调度器的工厂,并基于所述工厂生成所述任务调度的实例;
通过所述实例执行与所述quartz服务器节点相匹配的任务。
可选地,所述任务调度方法还包括:
在任务执行完毕之后,通过所述任务调度器将任务的状态从待处理状态修改为已处理状态。
可选地,所述任务调度方法还包括:
在任务执行失败之后,发送告警信息至管理员。
为实现上述目的,本发明实施例还提供了一种任务调度装置,包括:
查询模块,用于通过任务调度器定时查询所述数据库中存储的任务表,并从所述任务表中获取预设数量的状态为待处理的任务;
判断模块,用于判断获取到的各个待处理任务对应的哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配;及
执行模块,用于在判定出哈希值匹配时,通过所述任务调度器对应的实例执行与所述quartz服务器节点相匹配的任务。
为实现上述目的,本发明实施例还提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的任务调度方法的步骤。
为实现上述目的,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如上所述的任务调度方法的步骤。
本发明实施例提供的任务调度方法、装置、计算机设备及计算机可读存储介质,通过任务调度器定时查询所述数据库中存储的任务表,并从所述任务表中获取预设数量的状态为待处理的任务;判断获取到的各个待处理任务对应的哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配;及在判定出哈希值匹配时,通过所述任务调度器对应的实例执行与所述quartz服务器节点相匹配的任务。本发明实施例中quartz集群中的各个quartz服务器节点可以同步从数据库中抓取任务进行处理,从而可以提高任务的时效性。同时,通过各个quartz服务器节点只处理与其哈希值相对应的任务,进而可以充分利用到quartz集群的资源并且避免出现数据库死锁问题。
附图说明
图1为本发明任务调度方法的一实施方式的步骤流程示意图。
图2为本发明一实施方式中判断获取到的各个待处理任务对应的哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配的步骤细化流程示意图。
图3为本发明另一实施方式中判断获取到的各个待处理任务对应的哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配的步骤细化流程示意图。
图4为本发明一实施方式中通过所述任务调度器对应的实例执行与所述quartz服务器节点相匹配的任务的步骤细化流程示意图。
图5为本发明一实施方式的任务调度装置的程序模块示意图。
图6为本发明一实施方式的计算机设备的硬件结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
以下结合附图与具体实施例进一步阐述本发明的优点。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在本发明的描述中,需要理解的是,步骤前的数字标号并不标识执行步骤的前后顺序,仅用于方便描述本发明及区别每一步骤,因此不能理解为对本发明的限制。
参阅图1,示出了本发明实施例一之任务调度方法的流程图。本实施例中的任务调度方法应用于包括多个quartz服务器节点的quartz集群以及数据库的任务调度系统,多个quartz服务器节点可以为区块链节点,数据库的任务调度系统基于区块链平台。Quartz集群中的每个quartz服务器节点是一个独立的Quartz应用,不与另一其他的节点或是管理节点通信,而是通过相同的数据库表来感知到另一Quartz应用的,其中,所述数据库中存储有该数据库表。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。
可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。具体如下:
步骤S10,通过任务调度器定时查询所述数据库中存储的任务表,并从所述任务表中获取预设数量的状态为待处理的任务。
具体地,quartz服务器节点的调度任务是基于Quartz框架开发的。Quartz框架包括任务(JOB)、任务触发器(Trigger)以及任务调度器(Scheduler)。任务(JOB)是Quartz框架进行调度和管理的对象,任务(JOB)提供了一个对接任务实现类的接口,任务实现类是任务执行的具体编码,Quaqrtz框架在执行任务(JOB)时,会创建一个任务实例(JobDeatail),通过(JobDeatail)来描述该任务(JOB)的任务实现类和其他相关的静态信息,如任务名称、关联监听器、任务描述等。任务触发器(Trigger)用于触发任务(JOB)。任务调度器(Scheduler)是Quartz框架的一个独立容器,通过将任务实例(JobDeatail)和任务触发器(Trigger)注入到任务调度器(Scheduler)中,来实现对任务(JOB)的调度。
在本实施例中,Quartz集群中的每一个quartz服务器节点都会通过任务调度器,定时触发任务轮询操作,以定时查询数据库中存储的任务表,以查询任务表中是否存在状态为待处理的任务,在任务表中存在状态为待处理的任务时,会并从所述任务表中获取预设数量的状态为待处理的任务,其中,该预设数量为预先根据实际情况进行设定的,比如,该预设数量为2个。
其中,任务表中记录有需要执行的各个待处理任务以及每个任务所处的状态。
需要说明的是,在本实施例中,Quartz集群中的各个quartz服务器节点都具有任务调度器,且会将quartz中的JOB、触发器、触发时间、令牌等全部存储到各自实例的内存中,从而使得调度器下控制的任务脱离Quartz集群,以便每次到执行任务的时间段,该Quartz集群中所有quartz服务器节点对应的实例都可以同时抓取任务。
步骤S11,判断获取到的各个待处理任务对应的哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配。
具体地,预先为各个quartz服务器节点配置一个hash(哈希)槽,该hash槽用于确定quartz服务器节点可执行的任务是哪些。比如,具有quartz服务器节点A、B、C、D四个节点的quartz集群,可以预先分配quartz服务器节点A只处理哈希值为1、2、3所对应的任务,quartz服务器节点B处理哈希值为4、5所对应的任务、quartz服务器节点C处理哈希值为6、7所对应的任务、quartz服务器节点D处理哈希值为4、5所对应的任务、quartz服务器节点C处理哈希值为8、9所对应的任务。相应地,哈希值1、2、3即为quartz服务器节点A所分配的hash槽包含的哈希值;哈希值为4、5即为quartz服务器节点B所分配的hash槽包含的哈希值;哈希值为6、7即为quartz服务器节点C所分配的hash槽包含的哈希值;哈希值为8、9即为quartz服务器节点D所分配的hash槽包含的哈希值。
各个quartz服务器节点在获取到待处理的任务之后,会对获取到的任务做一个判定,以判定该任务是否需要该quartz服务器节点进行处理,若判定出该任务对应的哈希值与该quartz服务器节点配置的哈希值相匹配,则可以对该任务进行处理,若判定出该任务对应的哈希值与该quartz服务器节点配置的哈希值不匹配,则不对该任务进行处理,即放弃处理该任务。
进一步地,在一实施方式中,参照图2,所述判断获取到的各个待处理任务对应的哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配包括:
步骤S20,采用预设的哈希算法计算得到的各个待处理任务对应的哈希值。
具体地,哈希算法为将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。在本实施例中,该哈希算法可以为现有中的任意一种哈希算法,比如,可以为MD2、MD4、MD5和SHA-1算法等。
通过对获取到的各个待处理任务进行哈希计算,从而得到各个待处理任务对应的哈希值。
步骤S21,判断计算得到的各个哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配。
具体的,在计算得到获取到的各个待处理任务对应的哈希值之后,即可以将得到的哈希值依次与quartz服务器节点预先配置的哈希值进行比较,以确定是否与之匹配,若计算得到的哈希值与该quartz服务器节点预先配置的哈希值中的某一个相同,则匹配,若与该quartz服务器节点预先配置的所有的哈希值都不相同,则不匹配。
进一步地,在另一实施方式中,参照图3,所述判断获取到的各个待处理任务对应的哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配还包括:
步骤S30,查找与所述获取到的各个待处理任务关联保存的哈希值。
步骤S31,判断查找得到的各个哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配。
具体地,为了使得该quartz服务器节点在获取到的任务后,可以立即判定出是否需要对任务进行处理,可以预先计算出各个待处理任务对应的哈希值,然后将计算得到的哈希值与任务对应关联保存,这样,在获取到任务时,即可以通过查找与所述获取到的各个待处理任务关联保存的哈希值的方式,来得到各个待处理任务对应的哈希值,之后可以将该查找得到的哈希值依次与quartz服务器节点预先配置的哈希值进行比较,以确定是否与之匹配,若查找得到的哈希值与该quartz服务器节点预先配置的哈希值中的某一个相同,则匹配,若与该quartz服务器节点预先配置的所有的哈希值都不相同,则不匹配。
在具体应用中,在接收到基于quartz集群的配置文件,根据所述配置文件配置所述quartz服务器对应的哈希槽,所述哈希槽中包括至少一个哈希值。
本实施例中,用户在对quartz集群进行配置时,可以为quartz集群中的各个quartz服务器节点配置对应的哈希槽,并在完成配置时,将其存至quartz集群的配置文件中,以便各个quartz服务器节点在接收到该配置文件时,可以根据该配置文件配置各自对应的哈希槽,以使得各个quartz服务器节点在执行调度任务时,只会执行与该哈希槽相匹配的调度任务。
步骤S12,在判定出哈希值匹配时,确定哈希值匹配的待处理任务为与所述quartz服务器节点相匹配的待处理任务,通过所述任务调度器对应的实例执行与所述quartz服务器节点相匹配的待处理任务。
具体地,在判定出当前的任务的哈希值与该quartz服务器节点相匹配,该quartz服务器节点即可以通过任务调度器对应的实例执行与所述quartz服务器节点相匹配的任务。
进一步地,在一实施方式中,参照图4,所述通过所述任务调度器对应的实例执行与所述quartz服务器节点相匹配的任务包括:
步骤S40,通过所述任务调度器创建调度器的工厂,并基于所述工厂生成所述任务调度的实例;
步骤S41,通过所述实例执行与所述quartz服务器节点相匹配的任务。
具体地,quartz服务器节点在执行任务时,会通过任务调度器创建调度器的工厂,然后通过调度器的工厂生成调度器实例,最终,可以通过该调取器实例来执行任务。
本发明本实施例所提出的任务调度方法,通过任务调度器定时查询所述数据库中存储的任务表,并从所述任务表中获取预设数量的状态为待处理的任务;判断获取到的各个待处理任务对应的哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配;及在判定出哈希值匹配时,通过所述任务调度器对应的实例执行与所述quartz服务器节点相匹配的任务。本发明实施例中quartz集群中的各个quartz服务器节点可以同步从数据库中抓取任务进行处理,从而可以提高任务的时效性。同时,通过各个quartz服务器节点只处理与其哈希值相对应的任务,进而可以充分利用到quartz集群的资源并且避免出现数据库死锁问题。
进一步地,在一实施方式中,所述任务调度方法还包括:
在任务执行完毕之后,通过所述任务调度器将任务的状态从待处理状态修改为已处理状态。
具体地,在该quartz服务器节点在执行完任务之后,可以通过任务调度器将数据库中记录的任务表中的任务的状态进行修改,将任务状态从待处理状态修改为已处理状态,从而完成一次任务调度的过程,同时,通过将任务状态进行修改,可以避免其他quartz服务器节点抓取已处理完的任务,节省资源。
进一步地,在一实施方式中,所述任务调度方法还包括:
在任务执行失败之后,发送告警信息至管理员。
具体地,在任务执行失败之后,可以发送告警信息通知管理员,以便管理员可以及时排查任务处理失败的原因,其中,该告警信息可以通过邮件的方式发送给管理员,也可以通过其他方式发送给管理员,比如,通过短信的方式。
请参阅图5,示出了本发明实施例之任务调度装置500(以下简称为“调度装置”400)的程序模块示意图。所述调度装置500可以应用于计算机设备中,所述计算机设备可以是移动电话、平板个人计算机(tablet personal computer)、膝上型计算机(laptopcomputer)、服务器等具有数据传输功能的设备,该计算机设备优选为服务器。在本实施例中,调度装置500可以包括或被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本发明,并可实现上述任务调度方法。本发明实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序本身更适合于描述任务调度方法在存储介质中的执行过程。以下描述将具体介绍本实施例各程序模块的功能:
查询模块501,用于通过任务调度器定时查询所述数据库中存储的任务表,并从所述任务表中获取预设数量的状态为待处理的任务。
具体地,quartz服务器节点的调度任务是基于Quartz框架开发的。Quartz框架包括任务(JOB)、任务触发器(Trigger)以及任务调度器(Scheduler)。任务(JOB)是Quartz框架进行调度和管理的对象,任务(JOB)提供了一个对接任务实现类的接口,任务实现类是任务执行的具体编码,Quaqrtz框架在执行任务(JOB)时,会创建一个任务实例(JobDeatail),通过(JobDeatail)来描述该任务(JOB)的任务实现类和其他相关的静态信息,如任务名称、关联监听器、任务描述等。任务触发器(Trigger)用于触发任务(JOB)。任务调度器(Scheduler)是Quartz框架的一个独立容器,通过将任务实例(JobDeatail)和任务触发器(Trigger)注入到任务调度器(Scheduler)中,来实现对任务(JOB)的调度。
在本实施例中,Quartz集群中的每一个quartz服务器节点都会通过任务调度器,定时触发任务轮询操作,以定时查询数据库中存储的任务表,以查询任务表中是否存在状态为待处理的任务,在任务表中存在状态为待处理的任务时,会并从所述任务表中获取预设数量的状态为待处理的任务,其中,该预设数量为预先根据实际情况进行设定的,比如,该预设数量为2个。
其中,任务表中记录有需要执行的各个待处理任务以及每个任务所处的状态。
需要说明的是,在本实施例中,Quartz集群中的各个quartz服务器节点都具有任务调度器,且会将quartz中的JOB、触发器、触发时间、令牌等全部存储到各自实例的内存中,从而使得调度器下控制的任务脱离Quartz集群,以便每次到执行任务的时间段,该Quartz集群中所有quartz服务器节点对应的实例都可以同时抓取任务。
判定模块502,用于判断获取到的各个待处理任务对应的哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配。
具体地,预先为各个quartz服务器节点配置一个hash(哈希)槽,该hash槽用于确定quartz服务器节点可执行的任务是哪些。比如,具有quartz服务器节点A、B、C、D四个节点的quartz集群,可以预先分配quartz服务器节点A只处理哈希值为1、2、3所对应的任务,quartz服务器节点B处理哈希值为4、5所对应的任务、quartz服务器节点C处理哈希值为6、7所对应的任务、quartz服务器节点D处理哈希值为4、5所对应的任务、quartz服务器节点C处理哈希值为8、9所对应的任务。相应地,哈希值1、2、3即为quartz服务器节点A所分配的hash槽包含的哈希值;哈希值为4、5即为quartz服务器节点B所分配的hash槽包含的哈希值;哈希值为6、7即为quartz服务器节点C所分配的hash槽包含的哈希值;哈希值为8、9即为quartz服务器节点D所分配的hash槽包含的哈希值。
各个quartz服务器节点在获取到待处理的任务之后,会对获取到的任务做一个判定,以判定该任务是否需要该quartz服务器节点进行处理,若判定出该任务对应的哈希值与该quartz服务器节点配置的哈希值相匹配,则可以对该任务进行处理,若判定出该任务对应的哈希值与该quartz服务器节点配置的哈希值不匹配,则不对该任务进行处理,即放弃处理该任务。
进一步地,在一实施方式中,所述判断模块502,还用于采用预设的哈希算法计算得到的各个待处理任务对应的哈希值。
具体地,哈希算法为将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。在本实施例中,该哈希算法可以为现有中的任意一种哈希算法,比如,可以为MD2、MD4、MD5和SHA-1算法等。
通过对获取到的各个待处理任务进行哈希计算,从而得到各个待处理任务对应的哈希值。
所述判断模块502,还用判断计算得到的各个哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配。
具体的,在计算得到获取到的各个待处理任务对应的哈希值之后,即可以将得到的哈希值依次与quartz服务器节点预先配置的哈希值进行比较,以确定是否与之匹配,若计算得到的哈希值与该quartz服务器节点预先配置的哈希值中的某一个相同,则匹配,若与该quartz服务器节点预先配置的所有的哈希值都不相同,则不匹配。
进一步地,在另一实施方式中,所述判断模块502,还用于查找与所述获取到的各个待处理任务关联保存的哈希值;以及用于判断查找得到的各个哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配。
具体地,为了使得该quartz服务器节点在获取到的任务后,可以立即判定出是否需要对任务进行处理,可以预先计算出各个待处理任务对应的哈希值,然后将计算得到的哈希值与任务对应关联保存,这样,在获取到任务时,即可以通过查找与所述获取到的各个待处理任务关联保存的哈希值的方式,来得到各个待处理任务对应的哈希值,之后可以将该查找得到的哈希值依次与quartz服务器节点预先配置的哈希值进行比较,以确定是否与之匹配,若查找得到的哈希值与该quartz服务器节点预先配置的哈希值中的某一个相同,则匹配,若与该quartz服务器节点预先配置的所有的哈希值都不相同,则不匹配。
在具体应用中,所述调度装置500还包括:接收模块。
所述接收模块,用于在接收到基于quartz集群的配置文件,根据所述配置文件配置所述quartz服务器对应的哈希槽,所述哈希槽中包括至少一个哈希值。
本实施例中,用户在对quartz集群进行配置时,可以为quartz集群中的各个quartz服务器节点配置对应的哈希槽,并在完成配置时,将其存至quartz集群的配置文件中,以便各个quartz服务器节点在接收到该配置文件时,可以根据该配置文件配置各自对应的哈希槽,以使得各个quartz服务器节点在执行调度任务时,只会执行与该哈希槽相匹配的调度任务。
执行模块503,用于在判定出哈希值匹配时,确定哈希值匹配的待处理任务为与所述quartz服务器节点相匹配的待处理任务,通过所述任务调度器对应的实例执行与所述quartz服务器节点相匹配的待处理任务。
具体地,在判定出当前的任务的哈希值与该quartz服务器节点相匹配,该quartz服务器节点即可以通过任务调度器对应的实例执行与所述quartz服务器节点相匹配的任务。
进一步地,在一实施方式中,所述执行模块503,还用于通过所述任务调度器创建调度器的工厂,并基于所述工厂生成所述任务调度的实例;以及用于通过所述实例执行与所述quartz服务器节点相匹配的任务。
具体地,quartz服务器节点在执行任务时,会通过任务调度器创建调度器的工厂,然后通过调度器的工厂生成调度器实例,最终,可以通过该调取器实例来执行任务。
本发明本实施例所提出的任务调度方法,通过任务调度器定时查询所述数据库中存储的任务表,并从所述任务表中获取预设数量的状态为待处理的任务;判断获取到的各个待处理任务对应的哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配;及在判定出哈希值匹配时,通过所述任务调度器对应的实例执行与所述quartz服务器节点相匹配的任务。本发明实施例中quartz集群中的各个quartz服务器节点可以同步从数据库中抓取任务进行处理,从而可以提高任务的时效性。同时,通过各个quartz服务器节点只处理与其哈希值相对应的任务,进而可以充分利用到quartz集群的资源并且避免出现数据库死锁问题。
进一步地,在一实施方式中,所述调度装置500还包括:修改模块。
所述修改模块,用于在任务执行完毕之后,通过所述任务调度器将任务的状态从待处理状态修改为已处理状态。
具体地,在该quartz服务器节点在执行完任务之后,可以通过任务调度器将数据库中记录的任务表中的任务的状态进行修改,将任务状态从待处理状态修改为已处理状态,从而完成一次任务调度的过程,同时,通过将任务状态进行修改,可以避免其他quartz服务器节点抓取已处理完的任务,节省资源。
进一步地,在一实施方式中,所述调度装置500还包括:发送模块。
所述发送模块,用于在任务执行失败之后,发送告警信息至管理员。
具体地,在任务执行失败之后,可以发送告警信息通知管理员,以便管理员可以及时排查任务处理失败的原因,其中,该告警信息可以通过邮件的方式发送给管理员,也可以通过其他方式发送给管理员,比如,通过短信的方式。
参阅图6,是本发明实施例之计算机设备600的硬件架构示意图。在本实施例中,所述计算机设备600是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。如图所示,所述计算机设备600至少包括,但不限于,可通过装置总线相互通信连接存储器601、处理器602、网络接口603。其中:
本实施例中,存储器601至少包括一种类型的计算机可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器601可以是计算机设备600的内部存储单元,例如所述计算机设备600的硬盘或内存。在另一些实施例中,存储器601也可以是计算机设备600的外部存储设备,例如所述计算机设备600上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器601还可以既包括计算机设备600的内部存储单元也包括其外部存储设备。本实施例中,存储器601通常用于存储安装于计算机设备600的操作装置和各类应用软件,例如任务调度装置500的程序代码等。此外,存储器601还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器602在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。所述处理器602通常用于控制计算机设备600的总体操作。本实施例中,处理器602用于运行存储器601中存储的程序代码或者处理数据,例如运行任务调度装置500,以实现上述各个实施例中的任务调度方法。
所述网络接口603可包括无线网络接口或有线网络接口,所述网络接口603通常用于在所述计算机设备600与其他电子装置之间建立通信连接。例如,所述网络接口603用于通过网络将所述计算机设备600与外部终端相连,在所述计算机设备600与外部终端之间的建立数据传输通道和通信连接等。所述网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯装置(Global System of Mobile communication,GSM)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图6仅示出了具有部件601-603的计算机设备600,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器601中的所述任务调度装置500还可以被分割为一个或者多个程序模块,所述一个或者多个程序模块被存储于存储器601中,并由一个或多个处理器(本实施例为处理器602)所执行,以完成本发明之任务调度方法或者任务调度方法。
本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储任务调度装置500,以被处理器执行时实现本发明之任务调度方法或者任务调度方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种任务调度方法,应用于包括多个quartz服务器节点的quartz集群以及数据库的任务调度系统,其特征在于,所述任务调度方法包括:
通过任务调度器定时查询所述数据库中存储的任务表,并从所述任务表中获取预设数量的状态为待处理的任务;
判断获取到的各个待处理任务对应的哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配;及
在判定出哈希值匹配时,确定哈希值匹配的待处理任务为与所述quartz服务器节点相匹配的待处理任务,通过所述任务调度器对应的实例执行与所述quartz服务器节点相匹配的待处理任务。
2.如权利要求1所述的任务调度方法,其特征在于,所述任务调度方法还包括:
在接收到基于quartz集群的配置文件,根据所述配置文件配置所述quartz服务器对应的哈希槽,所述哈希槽中包括至少一个哈希值。
3.如权利要求2所述的任务调度方法,其特征在于,所述判断获取到的各个待处理任务对应的哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配包括:
采用预设的哈希算法计算得到的各个待处理任务对应的哈希值;
判断计算得到的各个哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配。
4.如权利要求2所述的任务调度方法,其特征在于,所述判断获取到的各个待处理任务对应的哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配包括:
查找与所述获取到的各个待处理任务关联保存的哈希值;
判断查找得到的各个哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配。
5.如权利要求1所述的任务调度方法,其特征在于,所述通过所述任务调度器对应的实例执行与所述quartz服务器节点相匹配的任务包括:
通过所述任务调度器创建调度器的工厂,并基于所述工厂生成所述任务调度的实例;
通过所述实例执行与所述quartz服务器节点相匹配的任务;
其中,所述quartz服务器节点为区块链节点。
6.如权利要求1至5任一项所述的任务调度方法,其特征在于,所述任务调度方法还包括:
在任务执行完毕之后,通过所述任务调度器将任务的状态从待处理状态修改为已处理状态。
7.如权利要求1至5任一项所述的任务调度方法,其特征在于,所述任务调度方法还包括:
在任务执行失败之后,发送告警信息至管理员。
8.一种任务调度装置,其特征在于,包括:
查询模块,用于通过任务调度器定时查询所述数据库中存储的任务表,并从所述任务表中获取预设数量的状态为待处理的任务;
判断模块,用于判断获取到的各个待处理任务对应的哈希值是否与所述quartz服务器节点预先配置的哈希值相匹配;及
执行模块,用于在判定出哈希值匹配时,确定哈希值匹配的待处理任务为与所述quartz服务器节点相匹配的待处理任务,通过所述任务调度器对应的实例执行与所述quartz服务器节点相匹配的待处理任务;其中,所述quartz服务器节点为区块链节点。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述的任务调度方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如权利要求1-7中任一项所述的任务调度方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010360051.0A CN111580948A (zh) | 2020-04-30 | 2020-04-30 | 任务调度方法、装置及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010360051.0A CN111580948A (zh) | 2020-04-30 | 2020-04-30 | 任务调度方法、装置及计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111580948A true CN111580948A (zh) | 2020-08-25 |
Family
ID=72126234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010360051.0A Pending CN111580948A (zh) | 2020-04-30 | 2020-04-30 | 任务调度方法、装置及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111580948A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112532721A (zh) * | 2020-11-27 | 2021-03-19 | 平安普惠企业管理有限公司 | 集群调用方法、装置、电子设备及存储介质 |
CN112667620A (zh) * | 2020-12-31 | 2021-04-16 | 广州方硅信息技术有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
CN112882812A (zh) * | 2021-03-16 | 2021-06-01 | 北京字节跳动网络技术有限公司 | 延时任务调度与存储方法、装置、设备、介质及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140108861A1 (en) * | 2012-10-15 | 2014-04-17 | Hadapt, Inc. | Systems and methods for fault tolerant, adaptive execution of arbitrary queries at low latency |
CN108132830A (zh) * | 2016-12-01 | 2018-06-08 | 北京金山云网络技术有限公司 | 一种任务调度方法、装置及系统 |
WO2019200714A1 (zh) * | 2018-04-17 | 2019-10-24 | 平安科技(深圳)有限公司 | 服务器连接方法、计算机可读存储介质、终端设备及装置 |
CN110377406A (zh) * | 2019-06-17 | 2019-10-25 | 平安银行股份有限公司 | 一种任务调度方法、装置、存储介质和服务器节点 |
-
2020
- 2020-04-30 CN CN202010360051.0A patent/CN111580948A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140108861A1 (en) * | 2012-10-15 | 2014-04-17 | Hadapt, Inc. | Systems and methods for fault tolerant, adaptive execution of arbitrary queries at low latency |
CN108132830A (zh) * | 2016-12-01 | 2018-06-08 | 北京金山云网络技术有限公司 | 一种任务调度方法、装置及系统 |
WO2019200714A1 (zh) * | 2018-04-17 | 2019-10-24 | 平安科技(深圳)有限公司 | 服务器连接方法、计算机可读存储介质、终端设备及装置 |
CN110377406A (zh) * | 2019-06-17 | 2019-10-25 | 平安银行股份有限公司 | 一种任务调度方法、装置、存储介质和服务器节点 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112532721A (zh) * | 2020-11-27 | 2021-03-19 | 平安普惠企业管理有限公司 | 集群调用方法、装置、电子设备及存储介质 |
CN112532721B (zh) * | 2020-11-27 | 2022-09-16 | 平安普惠企业管理有限公司 | 集群调用方法、装置、电子设备及存储介质 |
CN112667620A (zh) * | 2020-12-31 | 2021-04-16 | 广州方硅信息技术有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
CN112882812A (zh) * | 2021-03-16 | 2021-06-01 | 北京字节跳动网络技术有限公司 | 延时任务调度与存储方法、装置、设备、介质及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6695984B2 (ja) | マルチタスクスケジューリング方法、システム、アプリケーションサーバ及びコンピュータの読み取り可能な記憶媒体 | |
CN111580948A (zh) | 任务调度方法、装置及计算机设备 | |
WO2019075774A1 (zh) | 设备参数配置方法、装置、计算机设备和存储介质 | |
CN106886434B (zh) | 一种分布式应用安装方法与装置 | |
CN109298924B (zh) | 定时任务的管理方法、计算机可读存储介质和终端设备 | |
CN110162344B (zh) | 一种隔离限流的方法、装置、计算机设备及可读存储介质 | |
CN112286664B (zh) | 任务调度方法、装置、计算机设备及可读存储介质 | |
CN111988429A (zh) | 算法调度方法以及系统 | |
CN108255735B (zh) | 关联环境测试方法、电子装置及计算机可读存储介质 | |
CN112817710A (zh) | 定时任务处理方法、系统、计算机设备及计算机存储介质 | |
CN108399095B (zh) | 支持动态管理定时任务的方法、系统、设备和存储介质 | |
CN109951551B (zh) | 一种容器镜像管理系统及方法 | |
CN111459629A (zh) | 基于Azkaban的项目运行方法、装置及终端设备 | |
CN108536541B (zh) | 流程引擎对象处理方法及装置 | |
CN112559155A (zh) | 批量作业处理方法、系统、计算机设备及可读存储介质 | |
CN111767126A (zh) | 分布式批量处理的系统和方法 | |
CN108833532B (zh) | 基于物联网的服务处理方法、装置和系统 | |
CN114564249B (zh) | 推荐调度引擎、推荐调度方法及计算机可读存储介质 | |
CN113704107B (zh) | 应用测试方法、装置、设备及计算机可读存储介质 | |
CN111431951A (zh) | 一种数据处理方法、节点设备、系统及存储介质 | |
CN114116123A (zh) | 应用的扩容方法及装置 | |
CN113127289B (zh) | 一种基于yarn集群的资源管理方法、计算机设备和存储介质 | |
CN114422576A (zh) | 一种会话清理方法、装置、计算机设备和可读存储介质 | |
CN114020368A (zh) | 基于状态机的信息处理方法、装置和存储介质 | |
CN112084014A (zh) | 一种数据处理方法、装置、设备及介质 |
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 |