CN109471711B - 一种任务处理的方法及装置 - Google Patents
一种任务处理的方法及装置 Download PDFInfo
- Publication number
- CN109471711B CN109471711B CN201811338309.6A CN201811338309A CN109471711B CN 109471711 B CN109471711 B CN 109471711B CN 201811338309 A CN201811338309 A CN 201811338309A CN 109471711 B CN109471711 B CN 109471711B
- Authority
- CN
- China
- Prior art keywords
- task
- processed
- processor
- pool
- 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.)
- Active
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种任务处理的方法及装置,只有对加入到线程池中的待处理任务进行处理时,才确定与待处理任务对应的任务处理器,并利用确定的任务处理器对待处理任务进行处理,而从任务池中读取待处理任务并将读取到的待处理任务加载到线程池的任务管理操作是不需要任务处理器处理的,实现了任务管理与任务业务处理逻辑的解耦。且当需要在任务池中增加待处理任务时,从任务池中读取任务并将读取到的任务加载到线程池的任务管理操作是不需要修改的,因此只需要对新增加的任务设置对应的业务处理逻辑,降低了开发工作量,缩短了开发周期,且由于只需要修改业务处理逻辑,因此降低了开发难度,进而降低了开发的出错概率,可以满足业务快速发展的需求。
Description
技术领域
本发明属于计算机技术领域,尤其涉及一种任务处理的方法及装置。
背景技术
现有技术中对任务进行处理的方法为:为每种任务设置一个任务处理器,基于配置文件,通过任务处理器实现对任务的加载,并基于任务处理器中的线程管理功能实现将加载后的任务加入到线程中,最后基于任务处理器中的业务处理逻辑对线程中的任务进行处理。
由于任务处理器包括了任务加载、业务逻辑处理、线程管理功能,使得在扩展任务时,为了能够对新扩展的任务进行处理,需要为新扩展的任务重新设置一个包括任务加载、业务逻辑处理、线程管理功能的任务处理器。这大大增加了开发人员的工作量,导致开发周期长,而且在开发过程中不仅需要考虑对新扩展业务的业务处理逻辑的设置,而且需要综合考虑对任务加载以及线程管理功能的设置,需要重新开发设置的内容多,导致出错概率提高。
因此,现有技术中对任务处理的方法中存在开发周期长且开发过程出错概率高,无法满足业务快速发展的需求。
发明内容
有鉴于此,本发明的目的在于提供一种任务处理的方法及装置,以解决现有技术中对任务处理的方法中存在的开发周期长且出错概率高,无法满足业务快速发展需求的问题。
技术方案如下:
本发明提供一种任务处理的方法,包括:
从任务池中读取待处理任务;其中,所述任务池中的任务具有配置信息,所述配置信息至少包括任务调度信息以及任务处理器映射关系;
获取读取到的所述待处理任务的配置信息;
检测到存在处于空闲状态的线程后,依据所述任务调度信息将所述待处理任务加载到线程池中;
从所述任务处理器映射关系中查找与线程池中的所述待处理任务对应的任务处理器;
基于所述任务处理器对所述线程池中的所述待处理任务进行处理。
优选地,所述从任务池中读取待处理任务包括:
获取任务池中所有任务的优先级;
按照任务的优先级,从任务池中读取预设数量的待处理任务;其中,所述待处理任务的状态为待处理。
优选地,所述从任务池中读取待处理任务包括:
设置业务操作锁;
从任务池中读取处于待处理状态的待处理任务,并将任务池中已经被读取到的待处理任务的状态更改为已读取;
解锁所述业务操作锁。
优选地,所述检测到存在处于空闲状态的线程后,依据所述任务调度信息将所述待处理任务加载到线程池中包括:
检测到存在处于空闲状态的线程后,获取任务代理器;
依据所述任务调度信息将所述待处理任务的配置信息注入到所述任务代理器中,以实现将所述待处理任务加载到线程池中。
优选地,所述从所述任务处理器映射关系中查找与所述线程池中的所述待处理任务对应的任务处理器包括:
基于注入到所述任务代理器中的配置信息,从所述配置信息中包括的任务处理器映射关系中查找与所述待处理任务对应的任务处理器。
优选地,所述基于所述任务处理器对所述线程池中的所述待处理任务进行处理包括:
将注入到所述任务代理器中的配置信息注入到查找到的所述任务处理器中;
基于反射机制,将所述待处理任务转换为所述任务处理器的统一接口能够处理的处理对象;
基于统一接口,利用所述任务处理器对转换后的待处理任务进行处理;其中,将所述任务池中的所述待处理任务的状态更改为处理中。
优选地,基于所述任务处理器对所述线程池中的所述待处理任务进行处理之后,还包括:
检测所述任务处理器对所述待处理任务进行处理的时间是否超过注入到所述任务处理器中的配置信息中包括的超时时间;
若检测所述任务处理器对所述待处理任务进行处理的时间超过注入到所述任务处理器中的配置信息中包括的超时时间,则停止对所述待处理任务的处理。
本发明还公开了一种任务处理的装置,包括:
任务加载模块,用于从任务池中读取待处理任务;其中,所述任务池中的任务具有配置信息,所述配置信息至少包括任务调度信息以及任务处理器映射关系;
任务调度模块,用于获取读取到的所述待处理任务的配置信息;
所述任务调度模块,还用于在检测到存在处于空闲状态的线程后,依据所述任务调度信息将所述待处理任务加载到线程池中;
处理器加载模块,用于从所述任务处理器映射关系中查找并加载与线程池中的所述待处理任务对应的任务处理器;
任务处理器,用于对所述线程池中的所述待处理任务进行处理。
优选地,所述任务加载模块包括:
操作锁设置子模块,用于设置业务操作锁;
加载子模块,用于从任务池中读取处于待处理状态的待处理任务,并将任务池中已经被读取到的待处理任务的状态更改为已读取;
解锁子模块,用于解锁所述业务操作锁。
优选地,还包括:
监控模块,用于检测所述任务处理器对所述待处理任务进行处理的时间是否超过注入到所述任务处理器中的配置信息中包括的超时时间;
停止模块,用于若检测所述任务处理器对所述待处理任务进行处理的时间超过注入到所述任务处理器中的配置信息中包括的超时时间,则停止对所述待处理任务的处理。
与现有技术相比,本发明提供的上述技术方案具有如下优点:
从上述技术方案可知,本申请中只有对加入到线程池中的待处理任务进行处理时,才确定与待处理任务对应的任务处理器,并利用确定出的任务处理器对待处理任务进行处理,而从任务池中读取待处理任务并将读取到的待处理任务加载到线程池的任务管理操作是不需要任务处理器处理的,实现了任务管理与任务业务处理逻辑的解耦。且当需要在任务池中增加待处理任务时,由于从任务池中读取任务并将读取到的任务加载到线程池的任务管理操作是不需要修改的,因此,只需要对新增加的任务设置对应的业务处理逻辑,降低了开发工作量,缩短了开发周期,且由于只需要修改业务处理逻辑,因此降低了开发难度,进而降低了开发的出错概率,可以满足业务快速发展的需求。同时,本申请中根据任务调度信息可以动态调整对任务的处理顺序,以及根据任务处理器映射关系可以动态匹配到与任务对应的任务处理器,提高了对任务处理的灵活性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的任务处理系统架构的示意图;
图2是本发明实施例提供的一种任务处理的方法的流程图;
图3是本发明实施例提供的另一种任务处理的方法的流程图;
图4是本发明实施例提供的一种任务处理的装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例公开了一种任务处理的方法,应用于任务处理系统中,参见图1,为本发明实施例提供的系统架构示意图;包括任务池、电子设备、任务处理器应用层、服务层以及操作系统,其中,所述电子设备中集成有任务加载模块、处理器加载模块以及任务调度模块。
参见图2,该实施例包括以下步骤:
S101、从任务池中读取待处理任务;其中,所述任务池中的任务具有配置信息,所述配置信息中至少包括任务调度信息以及任务处理器映射关系;
任务池中的任务来源于多个渠道。
示例性的,个人贷款管理系统中涵盖了个人贷款从发起、审批、贷后监控、结清全流程管理操作。不仅需要支持线下贷款发起,还要支持线上全渠道接入贷款申请,未来还应支持多种场景的服务。贷款从录入到审核,中间需要抓取信用报告、上传影像资料、调取信用评价、银保互联核对、任务派单等众多业务及系统操作。对于个人贷款管理系统,所需要处理的任务来源于网络贷款交易、线下贷款交易、批处理任务、系统交互任务、数据处理任务、流程处理任务等多个渠道,将来源于多个渠道的任务存储到任务池中。
在个人贷款管理系统需要执行待处理任务时,从任务池中读取待处理任务。
其中,任务池中的任务都是经过配置后的任务,使得任务池中的任务具有配置信息。在本实施例中,任务的配置信息至少包括任务调度信息以及任务处理器映射关系。
任务调度信息包括:任务类型、任务等级以及超时时间,任务类型指的是任务所属类型;任务等级指的是任务被处理的顺序,任务等级高的先处理,任务等级低的后处理,其中,任务等级是任务类型的缺省值,一种任务类型对应其默认的任务等级;超时时间指的是处理所述任务类型的任务时所允许的处理耗时,超过配置的超时时间,则可以利用任务管理器停止对所述任务类型的任务的处理。例如,为特定任务类型配置的超时时间为3分钟,在处理这一特定任务类型的某个任务时,通过线程监控程序实时检测任务所在线程运行的时间,当线程运行时间超过3分钟后,通过线程监控程序执行中断操作,所述中断操作是一种软中断操作,软中断在本实施例中指的是若线程不是处于挂起状态,则不会产生中断操作。在中断线程对任务的处理后,释放处理任务所占用的线程资源,以通过释放的线程对其他待处理任务进行处理。
任务处理器映射关系指的是任务类型与任务处理器之间的映射关系,通过任务处理器映射关系可以查找到与任务类型对应的任务处理器,进而通过查找到的任务处理器对相应任务类型的任务进行处理。
当需要在任务池中增加任务时,需要先配置待加入的任务,即设置任务的任务类型、任务处理器、任务等级以及超时时间,然后才能将配置后的任务加入到任务池中。其中,任务的配置信息初始是保存在数据库中的,包括计划处理器和触发时间等信息的配置,一旦任务被任务管理器读取,就会进入准备状态,配置信息就会被保存到内存中。从保存到内存中的配置信息对待加入任务池的任务进行配置。
为了保证任务的配置信息发生变化时,能够及时修改任务池中的待处理任务的配置信息,需要设置配置信息刷新检查机制,
当配置信息发生变化时,能及时通知任务管理器重新到数据库中获取任务的配置信息,并根据重新获取到的任务配置信息对任务池中待处理任务的配置信息进行修改。
可选地,任务配置信息中任务等级还可以单独设置,使得能够为同一任务类型下不同的任务单独设置不同的任务等级。
S102、获取读取到的所述待处理任务的配置信息;
在本实施例中,获取到的配置信息至少包括任务调度信息以及任务处理器映射关系。根据待处理任务的任务调度信息,可以确定待处理任务的处理顺序;根据待处理任务的任务处理器映射关系,可以确定处理待处理任务的任务处理器,以按照任务处理器对应的业务处理逻辑对所述待处理任务进行处理。
在实际应用中,根据业务需求的变化,可以对任务调度信息进行调整,以按照当前业务需求,调整处理当前业务下待处理任务的处理顺序。
根据业务场景的变化,可以对任务处理器映射关系进行调整,以针对不同的业务场景,可以选择不同的任务处理器对所述业务场景下的待处理任务进行处理。
S103、检测到存在处于空闲状态的线程后,依据所述任务调度信息将所述待处理任务加载到线程池中;
本实施例中,线程池是固定线程池,可使用线程的数量是固定的,进而限定了可以同时处理任务的数量。基于此,在将待处理任务加载到线程池中,以对待处理器任务进行处理之前,需要检测是否存在处于空闲状态的线程,若检测到不存在处于空闲状态的线程,则说明当前不存在能够对待处理任务进行处理的线程,执行等待操作;
若检测到存在处于空闲状态的线程,则说明当前可以获取到线程资源以对待处理任务进行处理,执行依据所述任务调度信息将所述待处理任务加载到线程池中的操作,以按照待处理任务的处理顺序,顺序将待处理任务加载到线程池中,进而实现对待处理任务的顺序处理。
本实施例中,通过线程可以实现对多个待处理任务的并行处理。
S104、从所述任务处理器映射关系中查找与线程池中的所述待处理任务对应的任务处理器;
待处理任务加载到线程池后,会自动被调起。根据从所述待处理任务中的配置信息中获取到的任务处理器映射关系中,查找处理所述待处理任务的任务处理器;
可选地,在执行步骤S102的获取读取到的所述待处理任务的配置信息时,只获取所述待处理任务的任务调度信息,而在步骤S104中依据任务调度信息将待处理任务加载到线程池后,再从线程池中待处理任务的配置信息中获取任务处理器映射关系,以根据获取到的任务处理器映射关系查找处理线程池中的待处理任务的任务处理器。
S105、基于所述任务处理器对所述线程池中的所述待处理任务进行处理。
任务处理器中包括业务处理逻辑,按照业务处理逻辑对待处理任务进行处理。
本实施例中,业务处理逻辑是在任务处理器应用层,应用层的任务处理器按需调用服务层中的MQ服务、DB服务、BPM服务、批处理服务、FTP 服务、TCP服务,以完成对待处理任务的处理。
从上述技术方案可知,本实施例中只有对加入到线程池中的待处理任务进行处理时,才确定与待处理任务对应的任务处理器,并利用确定出的任务处理器对待处理任务进行处理,而从任务池中读取待处理任务并将读取到的待处理任务加载到线程池的任务管理操作是不需要任务处理器处理的,实现了任务管理与任务业务处理逻辑的解耦。且当需要在任务池中增加待处理任务时,由于从任务池中读取任务并将读取到的任务加载到线程池的任务管理操作是不需要修改的,因此,只需要对新增加的任务设置对应的业务处理逻辑,降低了开发工作量,缩短了开发周期,且由于只需要修改业务处理逻辑,因此降低了开发难度,进而降低了开发的出错概率,可以满足业务快速发展的需求。
同时,本实施例中根据任务调度信息可以动态调整对任务的处理顺序,以及根据任务处理器映射关系可以动态匹配到与任务对应的任务处理器,提高了对任务处理的灵活性。
本实施例还公开了另一种任务处理的方法,参见图3,该实施例包括以下步骤:
S201、从任务池中读取待处理任务;其中,所述任务池中的任务具有配置信息,所述配置信息至少包括任务调度信息以及任务处理器映射关系;
本实施例中,任务池中的所有任务具有优先级,其中,优先级表示的是任务的执行策略。从任务池中读取待处理任务的实现方式为先获取任务池中所有任务的优先级,然后按照任务的优先级,从任务池中读取预设数量的待处理任务,其中,可以根据实际需要设置预设数量,即从任务池中每次能够读取到任务的最大数量。
其中,任务池中的任务具有状态,只能从任务池中读取到状态为“待处理”的任务。
可选地,为了提高对任务的处理效率,本实施例中还可以采用通过多个电子设备从任务池中读取任务的方式。每个电子设备从任务池中读取任务的方式都可以采用按照任务的优先级,从任务池中读取预设数量的待处理任务的方式实现。只是由于多个电子设备都可以从任务池中读取任务,那么必然存在多个电子设备同时读取的情况,甚至存在多个电子设备同时读取同一个待处理任务的情况,导致多个电子设备都对读取到的待处理任务进行处理,不仅浪费了资源而且也不能提高对任务的处理效率。
为了避免多个电子设备同时读取同一个待处理任务的情况发生,本实施例中在电子设备执行从任务池中读取待处理任务的操作前,需要设置业务操作锁,即声明读取操作,以使得在电子设备执行从任务池中读取待处理任务时,其他电子设备是无法执行从任务池中读取待处理任务的操作的,其他电子设备只能处于等待读取状态,实现了同时只有一个电子设备能够执行从任务池中读取待处理任务的操作;且当电子设备从任务池中读取到处于待处理状态的待处理任务后,将任务池中读取到的待处理任务的状态由“待处理”更改为“已读取”。由于电子设备在从任务池中读取待处理任务时,仅能够读取到状态为“待处理”的待处理任务,因此,当一个电子设备读取到某一待处理任务后,已经将读取到的待处理任务的状态更改为“已读取”,使得当其他电子设备在从任务池中读取待处理任务时,不能读取到状态为“已读取”的任务,进而使得电子设备不能读取到其他电子设备已经读取到的待处理任务,避免了多个电子设备同时读取同一个待处理任务的情况发生。
且由于当一个电子设备设置了业务操作锁后,其他的电子设备是不能执行从任务池中读取待处理任务的操作的,因此,在电子设备完成了从任务池中读取待处理任务的操作后,需要解锁设置的所述业务操作锁,即取消读取声明,以便处于等待读取状态的其他电子设备可以执行从任务池中读取待处理任务的操作。当然,其他电子设备执行从任务池中读取待处理任务的操作的实现方式与上述内容相同,此处不再赘述。
本实施例中通过多个电子从任务池中读取任务的方式,不仅提高了对任务的处理效率,而且当一个电子设备宕机时,导致宕机的电子设备不能处理任务时,可以由其他电子设备继续完成对任务的处理,避免了任务无法处理的问题产生。
S202、获取读取到的所述待处理任务的配置信息;
本实施例中步骤S202的实现方式与上一实施例中步骤S102的实现方式类似,此处不再赘述。
S203、检测到存在处于空闲状态的线程后,获取任务代理器;
在从任务池中读取到待处理任务后,需要将待处理任务加载到线程池。在检测到存在处于空闲状态的线程后,先获取任务代理器。任务代理器的作用是为任务提供任务执行前后的状态更新操作、事务支持、异常处理、重跑处理、以及任务执行结果的后序操作。
S204、依据所述任务调度信息将所述待处理任务的配置信息注入到所述任务代理器中,以实现将所述待处理任务加载到线程池中;
待处理任务在获取到任务代理器后,将待处理任务的配置信息注入到任务代理器中,其中,任务代理器能够获取到空闲线程资源,以实现将待处理任务加载到线程池中。
S205、基于注入到所述任务代理器中的配置信息,从所述配置信息中包括的任务处理器映射关系中查找与所述待处理任务对应的任务处理器;
根据任务处理器映射关系查找与所述待处理任务对应的任务处理器,并加载所述任务处理器。
S206、将注入到所述任务代理器中的配置信息注入到查找到的所述任务处理器中;
S207、基于反射机制,将所述待处理任务转换为所述任务处理器的统一接口能够处理的处理对象;
本实施例中为用于对不同任务类型的任务进行处理的任务处理器设置统一的接口,每个任务处理器都实现了统一的接口TaskProcessor,统一的接口 TaskProcessor提供了Process()方法。Process()方法的具体逻辑由各任务处理器实现。利用反射机制,可以根据任务处理器名称实例化任务处理器的处理对象,然后将处理对象转为TaskProcessor类型。
S208、基于统一接口,通过所述任务处理器对转换后的待处理任务进行处理;其中,将所述任务池中的所述待处理任务的状态更改为处理中;
调用统一的接口提供的Process()方法,执行具体的业务逻辑,以实现对待处理任务的处理。其中,通过任务处理器对待处理任务进行处理时,需要将任务池中的所述待处理任务的状态由“已读取”更改为“处理中”。
S209、检测所述任务处理器对所述待处理任务进行处理的时间是否超过注入到所述任务处理器中的配置信息中包括的超时时间;
若检测所述任务处理器对所述待处理任务进行处理的时间超过注入到所述任务处理器中的配置信息中包括的超时时间,则执行S210;
在通过任务处理器对待处理任务进行处理的过程中,实时检测检测所述任务处理器对所述待处理任务进行处理的时间是否超过注入到所述任务处理器中的配置信息中包括的超时时间。若检测所述任务处理器对所述待处理任务进行处理的时间超过注入到所述任务处理器中的配置信息中包括的超时时间,则停止对待处理任务的处理,并将任务池中的所述待处理任务的状态修改为“处理异常”。若检测所述任务处理器对所述待处理任务进行处理的时间没有超过注入到所述任务处理器中的配置信息中包括的超时时间,则继续执行通过任务处理器对待处理任务的处理操作,并且当任务处理器成功完成对待处理任务的处理后,将任务池中所述待处理任务的状态从“处理中”更改为“成功”。
需要注意的是,在利用任务处理器对待处理任务处理的过程中,电子设备突然宕机,当对发生宕机的电子设备重新启动后,需要将状态为“处理中”的待处理任务的状态更改为“失败”,便于识别到此待处理任务没有被成功处理后,重新执行对此待处理任务的处理,或者利用其他的电子设备重新执行对此待处理任务的处理。
S210、停止对所述待处理任务的处理,将所述任务池中所述待处理任务的状态更改为“处理异常”。
当停止对待处理任务的处理后,需要释放处理所述待处理任务所占用的线程资源,以便利用释放的线程资源对其他待处理任务进行处理。
从上述技术方案可知,本实施例中只有对加入到线程池中的待处理任务进行处理时,才确定与待处理任务对应的任务处理器,并利用确定出的任务处理器对待处理任务进行处理,而从任务池中读取待处理任务并将读取到的待处理任务加载到线程池的任务管理操作是不需要任务处理器处理的,实现了任务管理与任务业务处理逻辑的解耦。且当需要在任务池中增加待处理任务时,由于从任务池中读取任务并将读取到的任务加载到线程池的任务管理操作是不需要修改的,因此,只需要对新增加的任务设置对应的业务处理逻辑,降低了开发工作量,缩短了开发周期,且由于只需要修改业务处理逻辑,因此降低了开发难度,进而降低了开发的出错概率,可以满足业务快速发展的需求。
同时,本实施例中根据任务调度信息可以动态调整对任务的处理顺序,以及根据任务处理器映射关系可以动态匹配到与任务对应的任务处理器,提高了对任务处理的灵活性。
对应上述任务处理的方法,本发明还提供了一种任务处理的装置,所述装置可以集成到任务处理系统中。
所述装置的结构示意图请参阅图4所示,本实施例中装置包括:
任务加载单元 401、任务调度模块402、处理器加载模块403和任务处理器404;
任务加载单元 401,用于从任务池中读取待处理任务;其中,所述任务池中的任务具有配置信息,所述配置信息至少包括任务调度信息以及任务处理器映射关系;
任务调度模块402,用于获取读取到的所述待处理任务的配置信息;
任务调度模块402,还用于在检测到存在处于空闲状态的线程后,依据所述任务调度信息将所述待处理任务加载到线程池中;
处理器加载模块403,用于从所述任务处理器映射关系中查找并加载与线程池中的所述待处理任务对应的任务处理器;
任务处理器404,用于对所述线程池中的所述待处理任务进行处理;
可选地,本实施例中任务加载单元 401包括:
操作锁设置子模块,用于设置业务操作锁;
加载子模块,用于从任务池中读取处于待处理状态的待处理任务,并将任务池中已经被读取到的待处理任务的状态更改为已读取;
解锁子模块,用于解锁所述业务操作锁。
可选地,本实施例中所述装置还包括:
监控模块,用于检测所述任务处理器对所述待处理任务进行处理的时间是否超过注入到所述任务处理器中的配置信息中包括的超时时间;
停止模块,用于若检测所述任务处理器对所述待处理任务进行处理的时间超过注入到所述任务处理器中的配置信息中包括的超时时间,则停止对所述待处理任务的处理。
从上述技术方案可知,本实施例中只有对加入到线程池中的待处理任务进行处理时,才确定与待处理任务对应的任务处理器,并利用确定出的任务处理器对待处理任务进行处理,而从任务池中读取待处理任务并将读取到的待处理任务加载到线程池的任务管理操作是不需要任务处理器处理的,实现了任务管理与任务业务处理逻辑的解耦。且当需要在任务池中增加待处理任务时,由于从任务池中读取任务并将读取到的任务加载到线程池的任务管理操作是不需要修改的,因此,只需要对新增加的任务设置对应的业务处理逻辑,降低了开发工作量,缩短了开发周期,且由于只需要修改业务处理逻辑,因此降低了开发难度,进而降低了开发的出错概率,可以满足业务快速发展的需求。
同时,本实施例中根据任务调度信息可以动态调整对任务的处理顺序,以及根据任务处理器映射关系可以动态匹配到与任务对应的任务处理器,提高了对任务处理的灵活性。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的装置而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (7)
1.一种任务处理的方法,其特征在于,包括:
从任务池中读取待处理任务;其中,所述任务池中的任务具有配置信息,所述配置信息至少包括任务调度信息以及任务处理器映射关系;
获取读取到的所述待处理任务的配置信息;
检测到存在处于空闲状态的线程后,依据所述任务调度信息将所述待处理任务加载到线程池中;
从所述任务处理器映射关系中查找与线程池中的所述待处理任务对应的任务处理器;
基于所述任务处理器对所述线程池中的所述待处理任务进行处理;使得当需要新增加任务时,只需要对新增加的任务设置对应的业务处理逻辑;
其中,所述任务处理器中包括业务处理逻辑,业务处理逻辑是在任务处理器应用层,应用层通过调用服务层中的各个服务以完成对所述待处理任务的处理;
所述检测到存在处于空闲状态的线程后,依据所述任务调度信息将所述待处理任务加载到线程池中包括:
检测到存在处于空闲状态的线程后,获取任务代理器;
依据所述任务调度信息将所述待处理任务的配置信息注入到所述任务代理器中,以实现将所述待处理任务加载到线程池中;
所述从所述任务处理器映射关系中查找与所述线程池中的所述待处理任务对应的任务处理器包括:
基于注入到所述任务代理器中的配置信息,从所述配置信息中包括的任务处理器映射关系中查找与所述待处理任务对应的任务处理器;
所述基于所述任务处理器对所述线程池中的所述待处理任务进行处理包括:
将注入到所述任务代理器中的配置信息注入到查找到的所述任务处理器中;
基于反射机制,将所述待处理任务转换为所述任务处理器的统一接口能够处理的处理对象;
基于统一接口,利用所述任务处理器对转换后的待处理任务进行处理;其中,将所述任务池中的所述待处理任务的状态更改为处理中。
2.根据权利要求1所述的方法,其特征在于,所述从任务池中读取待处理任务包括:
获取任务池中所有任务的优先级;
按照任务的优先级,从任务池中读取预设数量的待处理任务;其中,所述待处理任务的状态为待处理。
3.根据权利要求1所述的方法,其特征在于,所述从任务池中读取待处理任务包括:
设置业务操作锁;
从任务池中读取处于待处理状态的待处理任务,并将任务池中已经被读取到的待处理任务的状态更改为已读取;
解锁所述业务操作锁。
4.根据权利要求1所述的方法,其特征在于,基于所述任务处理器对所述线程池中的所述待处理任务进行处理之后,还包括:
检测所述任务处理器对所述待处理任务进行处理的时间是否超过注入到所述任务处理器中的配置信息中包括的超时时间;
若检测所述任务处理器对所述待处理任务进行处理的时间超过注入到所述任务处理器中的配置信息中包括的超时时间,则停止对所述待处理任务的处理。
5.一种任务处理的装置,其特征在于,包括:
任务加载模块,用于从任务池中读取待处理任务;其中,所述任务池中的任务具有配置信息,所述配置信息至少包括任务调度信息以及任务处理器映射关系;
任务调度模块,用于获取读取到的所述待处理任务的配置信息;
所述任务调度模块,还用于在检测到存在处于空闲状态的线程后,依据所述任务调度信息将所述待处理任务加载到线程池中;
处理器加载模块,用于从所述任务处理器映射关系中查找并加载与线程池中的所述待处理任务对应的任务处理器;
任务处理器,用于对所述线程池中的所述待处理任务进行处理;使得当需要新增加任务时,只需要对新增加的任务设置对应的业务处理逻辑;
其中,所述任务处理器中包括业务处理逻辑,业务处理逻辑是在任务处理器应用层,应用层通过调用服务层中的各个服务以完成对所述待处理任务的处理;
所述检测到存在处于空闲状态的线程后,依据所述任务调度信息将所述待处理任务加载到线程池中包括:
检测到存在处于空闲状态的线程后,获取任务代理器;
依据所述任务调度信息将所述待处理任务的配置信息注入到所述任务代理器中,以实现将所述待处理任务加载到线程池中;
所述从所述任务处理器映射关系中查找与所述线程池中的所述待处理任务对应的任务处理器包括:
基于注入到所述任务代理器中的配置信息,从所述配置信息中包括的任务处理器映射关系中查找与所述待处理任务对应的任务处理器;
所述基于所述任务处理器对所述线程池中的所述待处理任务进行处理包括:
将注入到所述任务代理器中的配置信息注入到查找到的所述任务处理器中;
基于反射机制,将所述待处理任务转换为所述任务处理器的统一接口能够处理的处理对象;
基于统一接口,利用所述任务处理器对转换后的待处理任务进行处理;其中,将所述任务池中的所述待处理任务的状态更改为处理中。
6.根据权利要求5所述的装置,其特征在于,所述任务加载模块包括:
操作锁设置子模块,用于设置业务操作锁;
加载子模块,用于从任务池中读取处于待处理状态的待处理任务,并将任务池中已经被读取到的待处理任务的状态更改为已读取;
解锁子模块,用于解锁所述业务操作锁。
7.根据权利要求5或6所述的装置,其特征在于,还包括:
监控模块,用于检测所述任务处理器对所述待处理任务进行处理的时间是否超过注入到所述任务处理器中的配置信息中包括的超时时间;
停止模块,用于若检测所述任务处理器对所述待处理任务进行处理的时间超过注入到所述任务处理器中的配置信息中包括的超时时间,则停止对所述待处理任务的处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811338309.6A CN109471711B (zh) | 2018-11-12 | 2018-11-12 | 一种任务处理的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811338309.6A CN109471711B (zh) | 2018-11-12 | 2018-11-12 | 一种任务处理的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109471711A CN109471711A (zh) | 2019-03-15 |
CN109471711B true CN109471711B (zh) | 2021-03-02 |
Family
ID=65671896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811338309.6A Active CN109471711B (zh) | 2018-11-12 | 2018-11-12 | 一种任务处理的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109471711B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111475312B (zh) * | 2019-09-12 | 2021-05-18 | 北京东土科技股份有限公司 | 基于实时操作系统的消息驱动方法和装置 |
CN111242943B (zh) * | 2020-01-22 | 2022-10-28 | 腾讯科技(深圳)有限公司 | 图像处理方法、装置、图像处理设备及存储介质 |
CN111858056B (zh) * | 2020-07-24 | 2021-12-17 | 南方电网数字电网研究院有限公司 | 任务调度方法、装置、计算机设备和存储介质 |
CN113760486A (zh) * | 2020-08-03 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 任务处理方法和任务处理装置 |
CN111984454B (zh) * | 2020-08-31 | 2023-08-22 | 中国银行股份有限公司 | 一种任务超时监控方法、装置及存储介质 |
CN112035232B (zh) * | 2020-09-01 | 2023-08-18 | 中国银行股份有限公司 | 一种作业运行优先级确定方法及相关设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6912610B2 (en) * | 2003-03-28 | 2005-06-28 | Emulex Design & Manufacturing Corporation | Hardware assisted firmware task scheduling and management |
CN106095585A (zh) * | 2016-06-22 | 2016-11-09 | 中国建设银行股份有限公司 | 任务请求处理方法、装置和企业信息系统 |
-
2018
- 2018-11-12 CN CN201811338309.6A patent/CN109471711B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6912610B2 (en) * | 2003-03-28 | 2005-06-28 | Emulex Design & Manufacturing Corporation | Hardware assisted firmware task scheduling and management |
CN106095585A (zh) * | 2016-06-22 | 2016-11-09 | 中国建设银行股份有限公司 | 任务请求处理方法、装置和企业信息系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109471711A (zh) | 2019-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109471711B (zh) | 一种任务处理的方法及装置 | |
US9304807B2 (en) | Fault tolerant batch processing | |
CN109901918B (zh) | 一种处理超时任务的方法和装置 | |
US20160085601A1 (en) | Transparent user mode scheduling on traditional threading systems | |
CN113656157B (zh) | 一种分布式任务调度方法、装置、存储介质及电子设备 | |
CN113157411B (zh) | 一种基于Celery的可靠可配置任务系统及装置 | |
CN113485812B (zh) | 基于大数据量任务的分区并行处理方法及系统 | |
CN113867954A (zh) | 一种基于线程池与对象池的线程处理方法、系统及介质 | |
US10936368B2 (en) | Workload management with delegated correction of execution issues for improving a functioning of computing machines | |
CN113806065A (zh) | 一种数据处理的方法、装置和存储介质 | |
CN115934272A (zh) | 一种联机批量任务处理方法及装置 | |
CN113535439B (zh) | 业务请求处理方法、装置、设备及存储介质 | |
CN115220908A (zh) | 资源调度方法、装置、电子设备及存储介质 | |
CN114238137A (zh) | 一种批处理任务测试方法、装置、存储介质及程序产品 | |
CN111538491B (zh) | 数据事件处理方法、装置、设备和存储介质 | |
CN113806055A (zh) | 一种轻量级任务调度方法、系统、装置及存储介质 | |
CN113254506A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN113051058A (zh) | 一种反欺诈智能决策引擎的调度系统及方法 | |
CN111444001A (zh) | 一种云平台任务调度方法及系统 | |
CN106557359B (zh) | 一种任务调度方法及系统 | |
AU2014274491B2 (en) | Fault tolerant batch processing | |
CN114255004A (zh) | 事务处理方法、装置、设备和存储介质 | |
CN117472538A (zh) | 多线程任务编排方法、装置、电子设备及介质 | |
CN116991575A (zh) | 线程池管理方法及装置、介质、设备 | |
CN117290005A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |