CN112380030A - 主任务处理方法、装置、服务器和存储介质 - Google Patents
主任务处理方法、装置、服务器和存储介质 Download PDFInfo
- Publication number
- CN112380030A CN112380030A CN202011240675.5A CN202011240675A CN112380030A CN 112380030 A CN112380030 A CN 112380030A CN 202011240675 A CN202011240675 A CN 202011240675A CN 112380030 A CN112380030 A CN 112380030A
- Authority
- CN
- China
- Prior art keywords
- main task
- message
- state
- task
- processing
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 22
- 238000012545 processing Methods 0.000 claims abstract description 77
- 238000000034 method Methods 0.000 claims abstract description 48
- 238000012805 post-processing Methods 0.000 claims description 16
- 238000007781 pre-processing Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 8
- 238000012216 screening Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 abstract description 17
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 238000010276 construction Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种主任务处理方法、装置、服务器和存储介质,通过构建第一主任务消息,第一主任务消息的内容为当前可执行的第一主任务,第一主任务消息的主题为所述第一主任务的状态,将第一主任务消息发送给消息中间件,从消息中间件中获取第二主任务消息,第二主任务消息的内容为第二主任务,第二主任务消息的主题为所述第二主任务的状态,通过线程池,对第二主任务消息进行处理,适用于集群架构下对主任务调度及处理,并且通过引入消息中间件,将主任务的分发、认领及执行过程进行解耦,提高了对主任务的并行处理能力和处理效率。
Description
技术领域
本申请实施例涉及数据处理技术领域,尤其涉及一种主任务处理方法、装置、服务器和存储介质。
背景技术
批处理任务,也叫做主任务,是指由一系列子任务按照一定规则组合后得到的一组适于批量处理的任务,由于批处理不需要人工干预,故具有资源利用率高、吞吐量大等优势,在大型银行等涉及对海量数据进行处理的业务场景中备受青睐。随着大数据时代的到代,原单机部署的***逐渐演化为分布式***,现有技术的主任务处理机制已不能满足大量的高频主任务的处理需求。
因此,如何提高对主任务的并行处理能力成为现有技术中亟需解决的技术问题。
发明内容
本申请实施例提供一种主任务处理方法、装置、服务器和存储介质,以解决现有技术中存在的检核效率和准确率不高的问题。
第一方面,本申请实施例提供一种主任务处理方法,包括:
构建第一主任务消息,所述第一主任务消息的内容为当前可执行的第一主任务,所述第一主任务消息的主题为所述第一主任务的状态;
将所述第一主任务消息发送给消息中间件;
从所述消息中间件中获取第二主任务消息,所述第二主任务消息的内容为第二主任务,所述第二主任务消息的主题为所述第二主任务的状态;
通过线程池,对所述第二主任务消息进行处理。
可选地,所述构建第一主任务消息,包括:
根据主任务的状态,对主任务数据表进行筛选,得到目标主任务数据表,所述目标主任务数据表中主任务的状态为未开始状态或子任务执行完成状态;
按照所述目标主任务数据表,从共享数据库中提取第一主任务;
根据提取出的第一主任务及其在主任务数据表中的状态,构建所述第一主任务消息。
可选地,所述通过线程池,对所述第二主任务消息进行处理,包括:
通过线程池分配线程;
根据所述线程,对所述第二主任务消息进行处理。
可选地,所述对所述第二主任务消息进行处理,包括:
从所述第二主任务消息中提取所述第二主任务;
根据所述第二主任务消息的主题,确定所述第二主任务的状态;
根据所述第二主任务的状态,对所述第二主任务进行处理。
可选地,所述第二主任务的状态包括未开始状态或子任务执行完成状态,所述根据所述第二主任务的状态,对所述第二主任务进行处理,包括:
若所述第二主任务的状态为未开始状态,则对所述第二主任务进行预处理;
若所述第二主任务的状态为子任务执行完成状态,则对所述第二主任务进行后处理。
可选地,所述对所述第二主任务进行预处理,包括:
将所述第二主任务拆分成至少两个子任务;
将所述主任务数据表中所述第二主任务的状态修改为预处理完成状态。
可选地,所述对所述第二主任务进行后处理,包括:
对由所述第二主任务拆分得到的至少两个子任务的执行情况进行汇总;
将所述主任务数据表中所述第二主任务的状态修改为后处理完成状态。
可选地,所述根据所述线程,对所述第二主任务消息进行处理之前,所述方法还包括:
确定所述线程池可分配的线程是否满足第二主任务消息的处理需求;
若否,将多余的第二主任务消息放回所述消息中间件中。
可选地,所述构建第一主任务消息之前,所述方法还包括:
确定分布式锁的状态,所述状态包括已占用状态和未占用状态;
若所述分布式锁的状态为未占用状态,则获取分布式锁。
可选地,所述将所述第一主任务消息发送给消息中间件之后,所述方法还包括:
释放所述分布式锁。
第二方面,本申请实施例提供一种主任务处理装置,包括:
主任务分发模块,用于构建第一主任务消息,所述第一主任务消息的内容为当前可执行的第一主任务,所述第一主任务消息的主题为所述第一主任务的状态;将所述第一主任务消息发送给消息中间件;
主任务认领模块,用于从所述消息中间件中获取第二主任务消息,所述第二主任务消息的内容为第二主任务,所述第二主任务消息的主题为所述第二主任务的状态;通过线程池,对所述第二主任务消息进行处理。
第三方面,本申请实施例提供一种服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述第一方面所述的主任务处理方法。
第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的主任务处理方法。
本申请实施例提供的主任务处理方法、装置、服务器和存储介质,通过构建第一主任务消息,第一主任务消息的内容为当前可执行的第一主任务,第一主任务消息的主题为所述第一主任务的状态,将第一主任务消息发送给消息中间件,从消息中间件中获取第二主任务消息,第二主任务消息的内容为第二主任务,第二主任务消息的主题为所述第二主任务的状态,通过线程池,对第二主任务消息进行处理,适用于集群架构下对主任务调度及处理,并且通过引入消息中间件,将主任务的分发、认领及执行过程进行解耦,提高了对主任务的并行处理能力和处理效率。
附图说明
图1为本申请实施例提供的一种应用场景示意图;
图2为本申请实施例一提供的主任务处理方法的流程示意图;
图3为本申请实施例二提供的主任务处理方法的执行逻辑示意图;
图4为本申请实施例三提供的主任务处理装置的结构示意图;
图5为本申请实施例四提供的一种服务器的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。
下面首先对本申请涉及的名词进行如下解释:
主任务:为便于描述,将批处理任务叫做主任务,每个主任务中包括至少两个子任务。
子任务:对主任务进行拆分得到的单笔任务,叫做子任务。
本申请技术方案的主要思路:本申请实施例提供一种对主任务进行处理的技术方案,通过引入消息中间件,并由主任务发布者将主任务以消息的形式发送到消息中间件,由主任务认领者从消息中间件上获取消息及对主任务进行处理,实现了主任务的分发、认领、执行的解耦,有利于更好地发挥集群***的特点,实现对主任务的高度并行处理,提高了对主任务的处理效率。并且,本申请实施例的技术方案,还可以对认领的消息的数量进行参数化,使得每个实例(节点)的并发能力可以进行参数化调整和动态调整,具有较强的场景适应能力。
本实施例提供的主任务处理的技术方案主要应用于集群***中,集群***的特点是有多个节点(或多个实例),每个节点都是运行其自己进程的一个独立的服务器,示例性地,图1为本申请实施例提供的一种应用场景示意图,如图1所示,假设集群***包括3节点,分别为节点A、节点B和节点C,消息中间件是独立于3个节点之外的软件或服务程序,这3个节点均可以与消息中间件进行交互,实现消息的分发(即将消息发送到消息中间件)或消息的认领(即从消息中间件中取回消息),即每个节点都可以独立地执行本实施例中的提供的主任务处理方法。
消息中间件的引入,将消息的分发和消息的认领是在时间和空间上解耦,即分发到消息中间件的消息,可以不马上被认领,在一段时间以后再进行认领,同时,分发到消息中间件的消息,可以被其他节点认领,也可以由本节点进行认领,即进行同一个消息的分发和认领的节点可以相同,也可以不同。可以理解是,在集群***中每次只有一个节点负责消息的分发,而集群***中的每个节点都可以进行消息的认领,例如,在某次任务调度过程中,由节点A负责消息分发,而节点A、节点B和节点C均可以进行该消息的认领。
为保证该集群***中每次只有一个节点进行消息的分发,本申请实施例中通过为每个节点设置定时巡检器,同时引入缓存服务器D,缓存服务器D用于存储分布式锁的状态,每个节点均可通过其定时巡检器读取分布式锁的状态,并对分布式锁进行抢占,抢占到分布式锁的节点即可作为消息分发节点,进行消息的分发。示例性地,当节点A的定时巡检器A1读取到分布式锁的状态为未占用状态时,定时巡检器A1对该分布式锁的状态修改为已占用状态,节点A就可以进行消息分发的执行流程,此时,节点B的定时巡检器B1和节点C的定时巡检器C1读取到的分布式锁的状态均为已占用,节点B和节点C无法进行消息的分发。
此外,由于本申请的技术方案的最终端目的是实现主任务的调度和处理,所以,消息的内容均为需要处理的主任务,因此,本申请实施例提供的集群***还应包括共享数据库E,共享数据库中用于存储主任务,***中的所有节点都对使用共享数据库E或者对共享数据库E中的主任务进行处理的权限。
另外,本申请实施例还可以为***中的各节点设置执行器,并且执行器可以分为预处理执行器和后处理执行器,在各节点完成消息的认领后,由相应的执行器对消息中的主任务进行处理。
需要说明的是,以下实施例中,为便于区分,将进行主任务分发时发送的主任务消息,叫做第一主任务消息,将进行主任务认领时获取的主任务消息叫做第二主任务消息,相应地,第一主任务消息中的主任务叫做第一主任务,第二主任务消息中的主任务叫做第二主任务。
实施例一
图2为本申请实施例一提供的主任务处理方法的流程示意图,本实施例的执行主体为***中的任一节点,例如图1中的节点A,如图2所示,本实施例的主任务处理方法包括:
S101、构建第一主任务消息。
消息的构建是完成消息分发的第一步,本步骤中,以当前可执行的第一主任务为内容,以第一主任务的状态的主题,按照消息的生成规则,进行第一主任务消息的构建。
其中,消息的生成规则由消息中间件使用的协议确定,示例性地,若消息中件间为Kafka,则应按照Kafka协议中定义的消息生成规则进行消息的构建,从而保证构建的信息的可用性。
示例性地,本步骤中可以根据主任务的状态,对主任务数据表进行筛选,得到目标主任务数据表,目标主任务数据表中主任务的状态为未开始状态或子任务执行完成状态,按照目标主任务数据表,从共享数据库中提取第一主任务,根据提取出的第一主任务及其在主任务数据表中的状态,构建第一主任务消息。
其中,主任务的状态,是根据主任务在处理过程中所处的阶段确定的,本实施例中,将主任务的处理分为三个阶段,分别为主任务预处理阶段、子任务执行处理阶段和主任务后处理阶段。主任务预处理阶段主要负责将主任务拆分成单笔子任务,子任务执行处理阶段主要负责执行各子任务,主任务后处理阶段主要负责把各子任务的执行情况进行汇总并形成报表。相应地,主任务的状态可以有未开始、预处理中、预处理完成、子任务执行中、子任务执行完成、后处理中、后处理完成和完成几种,其中,“未开始”是指尚未开始处理的主任务的状态,“完成”是指三个阶段均已执行完成的主任务的状态。
主任务数据表,即主任务的数据清单列表,主要用于记录主任务的标记(如编号、名称等)、所处的状态等信息。
目标主任务数据表,是通过筛选得到的只包括处于未开始状态或子任务执行完成状态的主任务的信息。
共享数据库,是指用于存储主任务的数据库,该数据库独立于各节点之外,***中的所有节点都可以对共享数据库进行访问或操作。
需要说明的是,本实施例的主任务方法主要适用于主任务预处理阶段和主任务后处理阶段,因此,在对主任务数据表进行筛选时,本步骤中,主要关注处理于未开始状态或子任务执行完成状态的主任务,从而将需要进行预处理或后处理的主任务挑选出来。
在经过筛选得到目标主任务数据表之后,进一步地,本步骤中,根据目标主任务数据表的记录,从共享数据库中提取相应的第一主任务,并按照消息的生成规则,将第一主任务作为消息的内容,将第一主任务的状态作为消息的主题,实现第一主任务消息的构建。
由前述分析可知,只有抢占到分布式锁的节点才有进行消息分发的权限,则在S101之前,本实施例的方法还应包括:确定分布式锁的状态,若分布式锁的状态为未占用状态,则获取分布式锁。即确定执行消息分发的节点抢占到分布式锁。
其中,分布式锁的状态包括已占用状态和未占用状态,假设用一位二进制数对分布式锁的状态进行数值化,例如,用1表示已占用状态,用0表示未占用状态,并将数据化的规则预先存储到各节点上,则本步骤中,通过缓存服务器(如Redis)存储分布式锁的状态值即可,并通过读取缓存服务器上分布式锁的状态值,就可以确定分布式锁的状态,再将读取的状态值与数值化规则进行比对,就可以确定分布式锁的状态,若确定的分布式锁的状态为未占用状态,则获取分布式锁,即将分布式锁的状态改为已占用状态,并开始执行消息分发的流程。本步骤中,可以通过定时巡检器周期性地到缓存服务器上读取分布式锁的状态值和进行分布式锁的抢占工作。
需要说明的是,当筛选出来的目标主任务数据表中包括多个主任务时,则本步骤中构建的第一主任务消息就有多条,每条第一主任务消息与一个第一主任务对应。
S102、将第一主任务消息发送给消息中间件。
本步骤中,在S101之后,将生成的第一主任务消息发送给消息中间件,以供消费者(***中的节点)进行消费(对消息进行处理),完成第一主任务消息的分发。由于S101中一次生成的第一主任务消息可能有多条,因此,本步骤中发送到消息中间件的第一主任务消息也可能有多条。
其中,消息中间件是一种具备接收请求、保存数据和发送数据等功能的网络应用,本申请实施例采用的消息中间件可以为ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ中的任一种,此处不做限制。
可选地,在S102之后,本实施例的方法还可以包括:释放分布式锁。
S103、从消息中间件中获取第二主任务消息。
本步骤中,***中的节点以消息认领者的身份,按照事先约定好的逻辑,从消息中间件中获取第二主任务消息,第二主任务消息的内容为第二主任务,第二主任务消息的主题为第二主任务的状态。
其中,事先约定好的逻辑即获取第二主任务消息的规则,在一种可能的实现方式中,可以按照“发布-订阅”的模式,由消息者(***中的节点)事先向消息中间件进行消息的订阅,当有消息发布到消息中间件时,消息中间件向订阅了该消息的节点发送通知,相应地,收到通知的节点前来从消息中间件中获取第二主任务消息。在另一种可能的实现方式中,各节点也可以通过定时巡检器周期性访问消息中间件,确定消息中间件是否有未被认领的消息,当确定有未被认领的消息时,从消息中间件中获取对应的第二主任务消息。
需要说明的是,由于同一消息的认领者与其发布者可以相同,也可以不同,因此,第二主任务消息可以与第一主任务消息相同,也可与第一主任务消息不相同,这里并没有严格的限制。
此外,为充分利用各节点的处理数据能力,本步骤中,支持一次从消息中间件获取多条第二主任务消息,以实现对第二主任务消息的并行处理。其中,每次获取的第二主任务消息的数量可以事先配置,也可以根据当前的处理能力(如可用的线程数)确定。
S104、通过线程池,对第二主任务消息进行处理。
本步骤中,由于第二主任务消息可能有多个,为避免反复创建并销毁线程造成的内存消耗,本步骤中为各节点预先建立线程池,线程池中存储有一定数量的线程,在使用过程中,只需要从线程池中获取一定数量的空闲线程即可,具体地,根据第二主任务消息的数量,确定需要的线程数,根据确定的线程数进行线程分配,并为每个线程建立任务,使各线程实现对第二主任务器的并行处理。
其中,对第二主任务消息进行处理的实质是对其中的第二主任务进行处理,为此,需要先从第二主任务消息中提取第二主任务,再根据第二主任务消息的主题,确定第二主任务所处的状态,最后,根据第二主任务所处的状态,采用相应的措施对第二主任务进行相应的处理。
由于第二主任务的状态包括未开始状态或子任务执行完成状态,相应地:
(1)若第二主任务的状态为未开始状态,则对第二主任务进行预处理,具体地,根据第二主任务的实际情况,将第二主任务拆分成至少两个子任务,并将主任务数据表中第二主任务的状态修改为预处理完成状态。当然,预处理过程中,也可以根据实际需求执行其他的一些操作,此处不做限制。
(2)若第二主任务的状态为子任务执行完成状态,则对第二主任务进行后处理,具体地,对由第二主任务拆分得到的至少两个子任务的执行情况进行汇总,并将主任务数据表中所述第二主任务的状态修改为后处理完成状态。当然,后处理过程中,也可以根据实际需求执行其他的一些操作,此处不做限制。
在实际应用中,还可以根据第二主任务消息的不同主题,调用不同的执行器对执行相应的处理。
由于线程池需要根据实际情况进行线程的分配,例如某线程池的总线程数为20,若其中的12个线程已经被占用,则可以分配的最大线程数为8,为此,可选地,本实施例的方法还包括:确定线程池可分配的线程数是否满足第二主任务消息的处理需求,若否,将多余的第二主任务消息放回消息中间件中。
例如,当某线程池当前可分配的线程数为8,而当前有10条第二主任务消息需要处理,即线程池可分配的线程不能满足第二主任务消息的处理需求,则将多余的2条主任务消息放回到消息中间件中,以让其他节点进行消息认领和处理,从而实现对并行处理能力的动态控制,保证集群***处理效率的最大化。
可选地,在消息认领的过程中,也可以包括分布式锁的获取与释放过程,其具体实现方式与消息发布过程中类似,此处不再一一赘述。
可以理解的是,上述S101-S104仅作为一种可能的实现逻辑,在实际应用过程中,上述各步骤很有可能交错进行的,并没有严格的先后顺序,因此,不能将上述编号当作严格的执行顺序对本发明的技术方案加以限制。
本实施例中,通过构建第一主任务消息,第一主任务消息的内容为当前可执行的第一主任务,第一主任务消息的主题为所述第一主任务的状态,将第一主任务消息发送给消息中间件,从消息中间件中获取第二主任务消息,第二主任务消息的内容为第二主任务,第二主任务消息的主题为所述第二主任务的状态,通过线程池,对第二主任务消息进行处理,适用于集群架构下对主任务调度及处理,并且通过引入消息中间件,将主任务的分发、认领及执行过程进行解耦,提高了对主任务的并行处理能力和处理效率。
实施例二
图3为本申请实施例二提供的主任务处理方法的执行逻辑示意图,在实施例一的基础上,如图3所示,本实施例中,根据实施例一中的方法,设计了主任务定时巡检器的抽象类,主任务定时巡检器抽象类主要具有如下功能:
(1)实现集群***多实例(节点)间的分布式锁的获取、分配;
(2)实现主任务消息的分发;
(3)抽象出主任务定时巡检器的处理流程;
(4)抽象出与共享数据库交互的接口;
(5)抽象出定时器巡检器任务处理逻辑接口。
本实施例中,还根据实施例一中的方法,设计了主任务执行器的抽象类,主任务执行器抽象类主要具有如下功能:
(1)实现集群***多实例(节点)间的分布式锁的获取、分配。
(2)实现主任务消息的拉取。
(3)实现主任务并发线程池的控制。
(4)抽象出执行器任务处理逻辑接口。
实施例三
图4为本申请实施例三提供的主任务处理装置的结构示意图,如图4所示,本实施例中主任务处理装置10包括:
主任务分发模块11和主任务认领模块12。
主任务分发模块11,用于构建第一主任务消息,所述第一主任务消息的内容为当前可执行的第一主任务,所述第一主任务消息的主题为所述第一主任务的状态;将所述第一主任务消息发送给消息中间件;
主任务认领模块12,用于从所述消息中间件中获取第二主任务消息,所述第二主任务消息的内容为第二主任务,所述第二主任务消息的主题为所述第二主任务的状态;通过线程池,对所述第二主任务消息进行处理。
可选地,主任务分发模块11具体用于:
根据主任务的状态,对主任务数据表进行筛选,得到目标主任务数据表,所述目标主任务数据表中主任务的状态为未开始状态或子任务执行完成状态;
按照所述目标主任务数据表,从共享数据库中提取第一主任务;
根据提取出的第一主任务及其在主任务数据表中的状态,构建所述第一主任务消息。
可选地,主任务认领模块12具体用于:
通过线程池分配线程;
根据所述线程,对所述第二主任务消息进行处理。
可选地,主任务认领模块12具体用于:
从所述第二主任务消息中提取所述第二主任务;
根据所述第二主任务消息的主题,确定所述第二主任务的状态;
根据所述第二主任务的状态,对所述第二主任务进行处理。
可选地,所述第二主任务的状态包括未开始状态或子任务执行完成状态,主任务认领模块12具体用于:
若所述第二主任务的状态为未开始状态,则对所述第二主任务进行预处理;
若所述第二主任务的状态为子任务执行完成状态,则对所述第二主任务进行后处理。
可选地,主任务认领模块12具体用于:
将所述第二主任务拆分成至少两个子任务;
将所述主任务数据表中所述第二主任务的状态修改为预处理完成状态。
可选地,主任务认领模块12具体用于:
对由所述第二主任务拆分得到的至少两个子任务的执行情况进行汇总;
将所述主任务数据表中所述第二主任务的状态修改为后处理完成状态。
可选地,主任务认领模块12还用于:
确定所述线程池可分配的线程是否满足第二主任务消息的处理需求;
若否,将多余的第二主任务消息放回所述消息中间件中。
可选地,主任务分发模块11还用于:
确定分布式锁的状态,所述状态包括已占用状态和未占用状态;
若所述分布式锁的状态为未占用状态,则获取分布式锁。
可选地,主任务分发模块11还用于:
释放所述分布式锁。
本实施例所提供的主任务处理装置可执行上述方法实施例所提供的主任务处理方法,具备执行方法相应的功能模块和有益效果。本实施例的实现原理和技术效果与上述方法实施例类似,此处不再一一赘述。
实施例四
图5为本申请实施例四提供的一种服务器的结构示意图,如图5所示,该服务器20包括存储器21、处理器22及存储在存储器上并可在处理器上运行的计算机程序;服务器20处理器22的数量可以是一个或多个,图5中以一个处理器22为例;服务器20中的处理器22、存储器21可以通过总线或其他方式连接,图5中以通过总线连接为例。
存储器21作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本申请实施例中的主任务分发模块11和主任务认领模块12对应的程序指令。处理器22通过运行存储在存储器21中的软件程序、指令以及模块,从而服务器的各种功能应用以及数据处理,即实现上述的主任务处理方法。
存储器21可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器21可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器21可进一步包括相对于处理器22远程设置的存储器,这些远程存储器可以通过网格连接至服务器。上述网格的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
实施例五
本申请实施例五还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在由计算机处理器执行时用于执行一种主任务处理方法,该方法包括:
构建第一主任务消息,所述第一主任务消息的内容为当前可执行的第一主任务,所述第一主任务消息的主题为所述第一主任务的状态;
将所述第一主任务消息发送给消息中间件;
从所述消息中间件中获取第二主任务消息,所述第二主任务消息的内容为第二主任务,所述第二主任务消息的主题为所述第二主任务的状态;
通过线程池,对所述第二主任务消息进行处理。
当然,本申请实施例所提供的一种包计算机可读存储介质,其计算机程序不限于如上所述的方法操作,还可以执行本申请任意实施例所提供的主任务处理方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本申请可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网格设备等)执行本申请各个实施例所述的方法。
值得注意的是,上述主任务处理装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。
Claims (13)
1.一种主任务处理方法,其特征在于,包括:
构建第一主任务消息,所述第一主任务消息的内容为当前可执行的第一主任务,所述第一主任务消息的主题为所述第一主任务的状态;
将所述第一主任务消息发送给消息中间件;
从所述消息中间件中获取第二主任务消息,所述第二主任务消息的内容为第二主任务,所述第二主任务消息的主题为所述第二主任务的状态;
通过线程池,对所述第二主任务消息进行处理。
2.根据权利要求1所述的方法,其特征在于,所述构建第一主任务消息,包括:
根据主任务的状态,对主任务数据表进行筛选,得到目标主任务数据表,所述目标主任务数据表中主任务的状态为未开始状态或子任务执行完成状态;
按照所述目标主任务数据表,从共享数据库中提取第一主任务;
根据提取出的第一主任务及其在主任务数据表中的状态,构建所述第一主任务消息。
3.根据权利要求1所述的方法,其特征在于,所述通过线程池,对所述第二主任务消息进行处理,包括:
通过线程池分配线程;
根据所述线程,对所述第二主任务消息进行处理。
4.根据权利要求3所述的方法,其特征在于,所述对所述第二主任务消息进行处理,包括:
从所述第二主任务消息中提取所述第二主任务;
根据所述第二主任务消息的主题,确定所述第二主任务的状态;
根据所述第二主任务的状态,对所述第二主任务进行处理。
5.根据权利要求4所述的方法,其特征在于,所述第二主任务的状态包括未开始状态或子任务执行完成状态,所述根据所述第二主任务的状态,对所述第二主任务进行处理,包括:
若所述第二主任务的状态为未开始状态,则对所述第二主任务进行预处理;
若所述第二主任务的状态为子任务执行完成状态,则对所述第二主任务进行后处理。
6.根据权利要求5所述的方法,其特征在于,所述对所述第二主任务进行预处理,包括:
将所述第二主任务拆分成至少两个子任务;
将所述主任务数据表中所述第二主任务的状态修改为预处理完成状态。
7.根据权利要求5所述的方法,其特征在于,所述对所述第二主任务进行后处理,包括:
对由所述第二主任务拆分得到的至少两个子任务的执行情况进行汇总;
将所述主任务数据表中所述第二主任务的状态修改为后处理完成状态。
8.根据权利要求3所述的方法,其特征在于,所述根据所述线程,对所述第二主任务消息进行处理之前,所述方法还包括:
确定所述线程池可分配的线程是否满足第二主任务消息的处理需求;
若否,将多余的第二主任务消息放回所述消息中间件中。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述构建第一主任务消息之前,所述方法还包括:
确定分布式锁的状态,所述状态包括已占用状态和未占用状态;
若所述分布式锁的状态为未占用状态,则获取分布式锁。
10.根据权利要求8所述的方法,其特征在于,所述将所述第一主任务消息发送给消息中间件之后,所述方法还包括:
释放所述分布式锁。
11.一种主任务处理装置,其特征在于,包括:
主任务分发模块,用于构建第一主任务消息,所述第一主任务消息的内容为当前可执行的第一主任务,所述第一主任务消息的主题为所述第一主任务的状态;将所述第一主任务消息发送给消息中间件;
主任务认领模块,用于从所述消息中间件中获取第二主任务消息,所述第二主任务消息的内容为第二主任务,所述第二主任务消息的主题为所述第二主任务的状态;通过线程池,对所述第二主任务消息进行处理。
12.一种服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-10中任一所述的主任务处理方法。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-10中任一所述的主任务处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011240675.5A CN112380030A (zh) | 2020-11-09 | 2020-11-09 | 主任务处理方法、装置、服务器和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011240675.5A CN112380030A (zh) | 2020-11-09 | 2020-11-09 | 主任务处理方法、装置、服务器和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112380030A true CN112380030A (zh) | 2021-02-19 |
Family
ID=74579122
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011240675.5A Pending CN112380030A (zh) | 2020-11-09 | 2020-11-09 | 主任务处理方法、装置、服务器和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112380030A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113590277A (zh) * | 2021-06-25 | 2021-11-02 | 北京旷视科技有限公司 | 任务状态切换方法、装置和电子*** |
CN115037731A (zh) * | 2022-06-13 | 2022-09-09 | 金蝶软件(中国)有限公司 | 一种数据共享方法、装置、设备及计算机可读存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9436532B1 (en) * | 2011-12-20 | 2016-09-06 | Emc Corporation | Method and system for implementing independent message queues by specific applications |
CN106027634A (zh) * | 2016-05-16 | 2016-10-12 | 白杨 | 白杨消息端***换服务 |
US20170257297A1 (en) * | 2016-03-01 | 2017-09-07 | Paypal, Inc. | Computational node adaptive correction system |
CN108076098A (zh) * | 2016-11-16 | 2018-05-25 | 北京京东尚科信息技术有限公司 | 一种业务处理方法及*** |
CN108509299A (zh) * | 2018-03-29 | 2018-09-07 | 努比亚技术有限公司 | 消息处理方法、设备及计算机可读存储介质 |
US10095547B1 (en) * | 2015-03-13 | 2018-10-09 | Twitter, Inc. | Stream processing at scale |
CN110413673A (zh) * | 2019-07-08 | 2019-11-05 | 中国人民银行清算总中心 | 数据库数据统一采集与分发方法及*** |
US20200042365A1 (en) * | 2018-07-31 | 2020-02-06 | Parallel Wireless, Inc. | Service Bus for Telecom Infrastructure |
CN111897878A (zh) * | 2020-08-25 | 2020-11-06 | 中国工商银行股份有限公司 | 主辅数据同步方法及*** |
-
2020
- 2020-11-09 CN CN202011240675.5A patent/CN112380030A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9436532B1 (en) * | 2011-12-20 | 2016-09-06 | Emc Corporation | Method and system for implementing independent message queues by specific applications |
US10095547B1 (en) * | 2015-03-13 | 2018-10-09 | Twitter, Inc. | Stream processing at scale |
US20170257297A1 (en) * | 2016-03-01 | 2017-09-07 | Paypal, Inc. | Computational node adaptive correction system |
CN106027634A (zh) * | 2016-05-16 | 2016-10-12 | 白杨 | 白杨消息端***换服务 |
CN108076098A (zh) * | 2016-11-16 | 2018-05-25 | 北京京东尚科信息技术有限公司 | 一种业务处理方法及*** |
CN108509299A (zh) * | 2018-03-29 | 2018-09-07 | 努比亚技术有限公司 | 消息处理方法、设备及计算机可读存储介质 |
US20200042365A1 (en) * | 2018-07-31 | 2020-02-06 | Parallel Wireless, Inc. | Service Bus for Telecom Infrastructure |
CN110413673A (zh) * | 2019-07-08 | 2019-11-05 | 中国人民银行清算总中心 | 数据库数据统一采集与分发方法及*** |
CN111897878A (zh) * | 2020-08-25 | 2020-11-06 | 中国工商银行股份有限公司 | 主辅数据同步方法及*** |
Non-Patent Citations (1)
Title |
---|
曾一;梁宝兰;刘元勇;: "基于消息中间件的持久状态服务扩展模型", 计算机科学, no. 06, 25 June 2006 (2006-06-25) * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113590277A (zh) * | 2021-06-25 | 2021-11-02 | 北京旷视科技有限公司 | 任务状态切换方法、装置和电子*** |
CN115037731A (zh) * | 2022-06-13 | 2022-09-09 | 金蝶软件(中国)有限公司 | 一种数据共享方法、装置、设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109445944B (zh) | 一种基于dpdk的网络数据采集处理***及其方法 | |
WO2021147288A1 (zh) | 一种容器集群管理方法、装置及*** | |
CN110941481A (zh) | 资源调度方法、装置及*** | |
US20100269110A1 (en) | Executing tasks through multiple processors consistently with dynamic assignments | |
CN105786603B (zh) | 一种基于分布式的高并发业务处理***及方法 | |
DE102009018261A1 (de) | Informationsverarbeitungssystem und Verfahren zur Steuerung der Aufgabenausführung | |
CN111580990A (zh) | 一种任务调度方法、调度节点、集中配置服务器及*** | |
CN103365718A (zh) | 一种线程调度方法、线程调度装置及多核处理器*** | |
CN112380030A (zh) | 主任务处理方法、装置、服务器和存储介质 | |
CN109783255B (zh) | 数据解析分发装置及高并发数据处理方法 | |
CN111427751A (zh) | 基于异步处理机制对业务进行处理的方法及*** | |
CN111400011A (zh) | 一种实时任务调度方法、***、设备及可读存储介质 | |
US20240152395A1 (en) | Resource scheduling method and apparatus, and computing node | |
CN111767145A (zh) | 容器调度***、方法、装置和设备 | |
CN115495262A (zh) | 一种微内核操作***及进程间消息的处理方法 | |
CN111625414A (zh) | 一种数据转换整合软件的自动调度监控***实现方法 | |
CN111831408A (zh) | 异步任务处理方法、装置、电子设备及介质 | |
Fan et al. | A scheduler for serverless framework base on kubernetes | |
CN116719623A (zh) | 作业调度方法、作业结果处理方法及其装置 | |
CN116257333A (zh) | 分布式任务调度方法、装置和分布式任务调度*** | |
CN115114022A (zh) | 对gpu资源进行使用的方法、***、设备及介质 | |
Lu et al. | Developing a concurrent service orchestration engine in ccr | |
CN114157566B (zh) | 一种基站性能文件解析方法及*** | |
CN117827454A (zh) | 任务处理方法及装置 | |
CN111163158B (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 |