CN107783828B - 任务处理方法和装置 - Google Patents
任务处理方法和装置 Download PDFInfo
- Publication number
- CN107783828B CN107783828B CN201710087372.6A CN201710087372A CN107783828B CN 107783828 B CN107783828 B CN 107783828B CN 201710087372 A CN201710087372 A CN 201710087372A CN 107783828 B CN107783828 B CN 107783828B
- Authority
- CN
- China
- Prior art keywords
- task
- processed
- state
- execution server
- thread
- 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/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- 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
- 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/547—Remote procedure calls [RPC]; Web services
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)
Abstract
本发明涉及一种任务处理方法和装置,该方法包括:通过本地与待处理任务一一对应的任务线程启动相应的待处理任务;在与启动的所述待处理任务对应的任务执行服务器中,将所述待处理任务的任务状态标记为启动状态,以使得所述任务执行服务器执行所述待处理任务,并维护所述待处理任务的任务状态;从任务执行服务器中筛选出任务状态被标记为启动状态的任务;当本地与筛选出的所述任务对应的任务线程不存在时,通知所述任务执行服务器结束执行筛选出的所述任务;重启与筛选出的任务对应的任务线程,将筛选出的任务作为待处理任务,并返回所述通过本地与待处理任务一一对应的任务线程启动相应的待处理任务的步骤。本申请的方案提高了任务处理效率。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种任务处理方法和装置。
背景技术
随着计算机技术的发展,基于多个服务器交互进行处理的任务越来越多。在面对此类任务时,为了提高任务处理效率,通常会基于多个服务器分布式地处理任务。
然而,在采用多个服务器分布式地处理任务时,由于各个服务器任务的处理过程相互独立,在其中一个服务器调用另一服务器执行任务时,服务器之间需要被动等待对方反馈任务执行情况,使得服务器之间无法及时获知其他服务器任务处理状态,而导致服务器在执行任务时出现异常无法及时处理的情况,从而导致任务处理效率低下。
发明内容
基于此,有必要针对多个服务器分布式地处理任务时任务处理效率低下的问题,提供一种任务处理方法和装置。
一种任务处理方法,所述方法包括:
通过本地与待处理任务一一对应的任务线程启动相应的待处理任务;
在与启动的所述待处理任务对应的任务执行服务器中,将所述待处理任务的任务状态标记为启动状态,以使得所述任务执行服务器执行所述待处理任务,并维护所述待处理任务的任务状态;
从任务执行服务器中筛选出任务状态被标记为启动状态的任务;
当本地与筛选出的所述任务对应的任务线程不存在时,通知所述任务执行服务器结束执行筛选出的所述任务;
重启与筛选出的任务对应的任务线程,将筛选出的任务作为待处理任务,并返回所述通过本地与待处理任务一一对应的任务线程启动相应的待处理任务的步骤。
在一个实施例中,所述通过本地与待处理任务一一对应的任务线程启动相应的待处理任务之后,所述方法还包括:
确定与所述待处理任务对应的任务执行服务器;
查询确定的所述任务执行服务器上的任务记录表;
当所述待处理任务未存在于所述任务记录表中时,执行所述在与启动的所述待处理任务对应的任务执行服务器中,将所述待处理任务的任务状态标记为启动状态,以使得所述任务执行服务器执行所述待处理任务,并维护所述待处理任务的任务状态的步骤。
在一个实施例中,所述在与启动的所述待处理任务对应的任务执行服务器中,将所述待处理任务的任务状态标记为启动状态,以使得所述任务执行服务器执行所述待处理任务,并维护所述待处理任务的任务状态的步骤包括:
将启动的所述待处理任务写入所述任务记录表,并在所述任务记录表中将所述待处理任务的任务状态标记为启动状态,以使得所述任务执行服务器在检测到所述任务表中存在被标记为启动状态的任务时,启用相应的任务执行线程以执行被标记为启动状态的所述任务,并通过所述任务执行线程维护执行的所述任务在所述任务记录表中的任务状态。
在一个实施例中,所述从任务执行服务器中筛选出任务状态被标记为启动状态的任务的步骤包括:
按照检查周期触发独立于任务线程的检查线程;
通过所述检查线程查询任务执行服务器上的任务记录表;
从所述任务记录表中筛选出任务状态被标记为启动状态的任务。
在一个实施例中,所述在与启动的所述待处理任务对应的任务执行服务器中,将所述待处理任务的任务状态标记为启动状态,以使得所述任务执行服务器执行所述待处理任务,并维护所述待处理任务的任务状态之后,所述方法还包括:
从将所述待处理任务的任务状态标记为启动状态时开始计时,并检测所述任务执行服务器反馈的任务执行消息;
若计时时长达到预设任务执行最大时长时仍未检测到所述任务执行服务器反馈的任务执行消息,则
在所述任务执行服务器中将所述待处理任务的任务状态标记为异常状态,并通知所述任务执行服务器结束执行所述待处理任务。
一种任务处理装置,所述装置包括:
任务启动模块,用于通过本地与待处理任务一一对应的任务线程启动相应的待处理任务;
任务执行模块,用于在与启动的所述待处理任务对应的任务执行服务器中,将所述待处理任务的任务状态标记为启动状态,以使得所述任务执行服务器执行所述待处理任务,并维护所述待处理任务的任务状态;
任务筛选模块,用于从任务执行服务器中筛选出任务状态被标记为启动状态的任务;
线程检测模块,用于当本地与筛选出的所述任务对应的任务线程不存在时,通知所述任务执行服务器结束执行筛选出的所述任务;
任务重启模块,用于重启与筛选出的任务对应的任务线程,将筛选出的任务作为待处理任务,并返回所述通过本地与待处理任务一一对应的任务线程启动相应的待处理任务的步骤。
在一个实施例中,所述装置还包括:
任务查询模块,用于确定与所述待处理任务对应的任务执行服务器;查询确定的所述任务执行服务器上的任务记录表;
所述任务执行模块还用于当所述待处理任务未存在于所述任务记录表中时,在与启动的所述待处理任务对应的任务执行服务器中,将所述待处理任务的任务状态标记为启动状态,以使得所述任务执行服务器执行所述待处理任务,并维护所述待处理任务的任务状态。
在一个实施例中,所述任务执行模块还用于将启动的所述待处理任务写入所述任务记录表,并在所述任务记录表中将所述待处理任务的任务状态标记为启动状态,以使得所述任务执行服务器在检测到所述任务表中存在被标记为启动状态的任务时,启用相应的任务执行线程以执行被标记为启动状态的所述任务,并通过所述任务执行线程维护执行的所述任务在所述任务记录表中的任务状态。
在一个实施例中,所述任务筛选模块还用于按照检查周期触发独立于任务线程的检查线程;通过所述检查线程查询任务执行服务器上的任务记录表;从所述任务记录表中筛选出任务状态被标记为启动状态的任务。
在一个实施例中,所述装置还包括:
任务结束模块,用于从将所述待处理任务的任务状态标记为启动状态时开始计时,并检测所述任务执行服务器反馈的任务执行消息;若计时时长达到预设任务执行最大时长时仍未检测到所述任务执行服务器反馈的任务执行消息,则在所述任务执行服务器中将所述待处理任务的任务状态标记为异常状态,并通知所述任务执行服务器结束执行所述待处理任务。
上述任务处理方法和装置,本地启动待处理任务后,在与待处理任务对应的任务执行服务器中执行待处理任务,并标记任务状态,建立本地任务线程与任务执行服务器中执行任务的一一对应关系,使得本地在检测到任务执行服务器中被标记为启动状态的任务对应的本地任务线程不存在时,及时通知任务执行服务器结束执行该任务,避免了本地任务线程已不存在,而任务执行服务器仍在执行任务导致的服务器资源浪费的问题。而且在检测到任务执行服务器中被标记为启动状态的任务对应的本地任务线程不存在时,及时在本地重启任务线程以重启任务,避免了被动等待任务执行服务器反馈任务执行情况,而导致的任务执行出现异常无法及时处理的问题,提高了任务处理效率。
附图说明
图1为一个实施例中任务处理方法的应用环境图;
图2为一个实施例中用于任务处理方法的服务器的结构示意图;
图3为一个实施例中任务处理方法的流程示意图;
图4为一个实施例中通知任务执行服务器执行待处理任务的步骤的流程示意图;
图5为一个实施例中从任务执行服务器中筛选出任务状态被标记为启动状态的任务的步骤的流程示意图;
图6为另一个实施例中任务处理方法的流程示意图;
图7为一个实施例中异步任务分布式并发处理的原理图;
图8为一个实施例中任务处理装置的结构框图;
图9为另一个实施例中任务处理装置的结构框图;
图10为又一个实施例中任务处理装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为一个实施例中任务处理方法的应用环境图。参照图1,该任务处理方法应用于任务处理系统。任务处理系统包括任务处理服务器110和任务执行服务服务器120,任务处理服务器110通过网络与任务执行服务器120连接。任务处理服务器110可用于执行一种任务处理方法。任务处理服务器110和任务执行服务器120均具体可以是独立的物理服务器,也可以是物理服务器集群。
如图2所示,在一个实施例中,提供一种服务器,该服务器可用于实施一种任务处理方法。参考图2,该服务器包括通过系统总线连接的处理器、非易失性存储介质、内存储器和网络接口。其中,该服务器的非易失性存储介质存储有操作系统和数据库,数据库中存储待处理任务。该服务器的处理器用于提供计算和控制能力,支撑整个服务器的运行。该内存储器中可储存有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种任务处理方法。该服务器的网络接口用于据以与外部的任务执行服务器通过网络连接通信,比如与启动的待处理任务对应的任务执行服务器中,将待处理任务的任务状态标记为启动状态等。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。本领域技术人员可以理解,图2中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的服务器的限定,具体的服务器可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
如图3所示,在一个实施例中,提供了一种业务分配方法,本实施例以该方法应用于上述图1中的任务处理服务器110来举例说明。该方法具体包括如下步骤:
S302,通过本地与待处理任务一一对应的任务线程启动相应的待处理任务。
其中,待处理任务是指事先配置的需要进行处理的任务。比如,地图地址算法任务等。任务线程是指用于在本地启动任务的线程。
在本实施例中,管理员可通过管理员标识登录任务处理服务器,在任务处理服务器中配置待处理任务和任务相关信息。其中,任务相关信息包括任务开启时间和用于执行该任务的任务执行服务器等。任务处理服务器在待处理任务配置完成后,将配置的待处理任务加入任务池中,并为每个任务分配任务编号,该任务编号可以是包括数字、字母和符号中的至少一种字符的字符串。其中,任务处理服务器可以是JAVA应用服务器。
在一个实施例中,任务处理服务器可以是一个独立的服务器,也可以是多个服务器组成的服务器集群。当任务处理服务器是多个服务器组成的服务器集群时,管理员可通过管理员标识登录其中任一台任务处理服务器,在任务处理服务器中配置待处理任务和任务相关信息。该任务处理服务器在待处理任务配置完成后,将配置的待处理任务和任务相关信息同步至其他任务处理服务器中,使得用于进行任务处理的服务器集群中包括的任务处理服务器任务池中包括的任务相同。
具体地,任务处理服务器中可事先配置多条用于开启任务的任务线程,放入任务线程池中。配置的上述多条任务线程可相互独立并行处理待处理任务。任务处理服务器可在检测到当前时间达到任务池中待处理任务对应的任务开启时间时,检测任务线程池中线程的任务状态,在处于空闲状态的任务线程中随机选取一条任务线程。任务处理服务器可将达到任务开始时间的待处理任务对应的任务编号赋予该挑选出的任务线程,通过任务编号建立任务线程与待处理任务的一一对应关系,通过该任务线程开启相应编号的待处理任务。其中,处于空闲状态是指当前未开启任务。
在一个实施例中,在多个待处理任务同时达到任务开启时间,任务处理服务器可采用多个并发的任务线程开启待处理任务进行并行处理,每个线程都对应有一个编号,该编号与待处理任务的编号一致。
S304,在与启动的待处理任务对应的任务执行服务器中,将待处理任务的任务状态标记为启动状态,以使得任务执行服务器执行待处理任务,并维护待处理任务的任务状态。
其中,任务执行服务器是指用于执行任务的服务器。具体地,任务处理服务器在通过任务线程开启待处理任务后,获取该待处理任务对应的任务相关信息,根据该任务相关信息确定用于执行该待处理任务的任务执行服务器。任务处理服务器可通过开启待处理任务的任务线程向确定的任务执行服务器发送任务执行命令,使得任务执行服务器执行该待处理任务。任务执行服务器可以是ORACLE数据库服务器。
在本实施例中,任务处理服务器可在向确定的任务执行服务器发送任务执行命令时,将该处理任务的状态标记为启动状态,表示该任务需要被执行。任务执行服务器中的任务检测线程会定时检查本地是否有标记为启动状态的任务,若有,则启用本地的任务线程执行该任务,并在执行任务时维护待处理任务的任务执行状态。
任务执行服务器在任务执行完成后,将任务状态更新为结束状态,并向任务处理服务器反馈任务执行消息,通知任务处理服务器该待处理任务需要在该任务执行服务器上执行的部分已经执行完成,以使得任务处理服务器已进行后续的处理步骤。
若任务执行服务器在任务执行过程中,发现任务出错,无法继续进行,则将任务状态更新为异常状态,通知任务处理服务器该待处理任务需要在该任务执行服务器上执行的部分执行失败,以使得任务处理服务器已进行后续的处理步骤。
在一个实施例中,在配置待处理任务之前,还包括设置任务执行服务器基表,该服务器基表中存储了任务执行服务器的IP地址和对应的任务执行服务器标识。在配置待处理任务时,配置的任务相关信息包括任务执行服务器标识。任务处理服务器在启动待处理任务后,根据待处理任务对应的任务相关信息中包括的任务执行服务器标识,在任务执行服务器基表中查找相应的任务执行服务器IP地址,向该IP地址发送任务执行指令。
S306,从任务执行服务器中筛选出任务状态被标记为启动状态的任务。
具体地,任务处理服务器可遍历存在于任务执行服务器中的任务,在遍历时查看各任务的状态,确定任务状态被标记为启动状态的任务,提取确定的上述任务的任务编号。
S308,当本地与筛选出的任务对应的任务线程不存在时,通知任务执行服务器结束执行筛选出的任务。
具体地,任务处理服务器可遍历本地的任务线程对应的任务编号,在遍历时,将遍历的将本地的任务线程对应的任务编号与获取的筛选出的任务对应的任务编号进行对比。
若对比结果表示两个任务编号一致,则表示该任务是由本地的任务线程启动,那么任务处理服务器可检测该一致的任务编号对应的本地的任务线程是否存在。
若与该一致的任务编号对应的本地的任务线程存在,则表示该任务运行状态正常,任务处理服务器不做处理。若与该一致的任务编号对应的本地的任务线程不存在,则表示该任务出现异常,表示任务执行服务器无需再执行该任务,通知任务执行服务器结束执行筛选出的任务。
S310,重启与筛选出的任务对应的任务线程,将筛选出的任务作为待处理任务,并返回通过本地与待处理任务一一对应的任务线程启动相应的待处理任务的步骤。
具体地,任务处理服务器可将筛选出的任务作为待处理任务,重新在任务线程池中随机挑选处于空闲状态的任务线程,将筛选出的任务对应的任务编号赋予该挑选出的任务线程,重新建立任务线程与待处理任务的一一对应关系,通过该任务线程开启相应编号的待处理任务。
上述任务处理方法,本地启动待处理任务后,在与待处理任务对应的任务执行服务器中执行待处理任务,并标记任务状态,建立本地任务线程与任务执行服务器中执行任务的一一对应关系,使得本地在检测到任务执行服务器中被标记为启动状态的任务对应的本地任务线程不存在时,及时通知任务执行服务器结束执行该任务,避免了本地任务线程已不存在,而任务执行服务器仍在执行任务导致的服务器资源浪费的问题。而且在检测到任务执行服务器中被标记为启动状态的任务对应的本地任务线程不存在时,及时在本地重启任务线程以重启任务,避免了被动等待任务执行服务器反馈任务执行情况,而导致的任务执行出现异常无法及时处理的问题,提高了任务处理效率。
在一个实施例中,任务处理方法中步骤S308之后,还包括:将筛选出的任务对应的任务执行次数计数器增1,检测该筛选出的任务对应的任务执行次数是否超过预设任务执行次数。若筛选出的任务对应的任务执行次数未超过预设任务执行次数,则执行步骤S310;若筛选出的任务对应的任务执行次数超过预设任务执行次数,则输出该待处理任务执行失败的消息。
在本实施例中,设置了任务重试次数,在任务重试次数超过预设值后便不再进行重试,并将失败信息输出,避免了多次进行重试任务仍未成功而浪费服务资源的问题。
如图4所示,在一个实施例中,步骤S302之后,任务处理方法中通知任务执行服务器执行待处理任务的步骤具体还包括如下步骤:
S402,确定与待处理任务对应的任务执行服务器。
具体地,管理员在通过管理员账号登陆任务处理服务器配置待处理任务时,配置了用于执行待处理任务的任务执行服务服务器,可以是直接标记用于执行该任务的任务执行服务器对应的任务执行服务器标识,也可以是用于执行该任务的任务执行服务器对应的IP地址。任务处理服务器在启动待处理任务时,可查找配置信息,确定与待处理任务对应的任务执行服务器。
S404,查询确定的任务执行服务器上的任务记录表。
其中,任务记录表是任务执行服务器中的用于记录在该任务执行服务器执行的任务的列表。任务处理服务器在向任务执行服务器发送任务执行指令时,将该任务的标号写入任务记录表中,并在任务记录表中将该任务的任务执行状态标记为启动状态。具体地,任务处理服务器在确定与待处理任务对应的任务执行服务器后,获取该任务执行服务器上的任务记录表。
S406,当待处理任务未存在于任务记录表中时,执行在与启动的待处理任务对应的任务执行服务器中,将待处理任务的任务状态标记为启动状态,以使得任务执行服务器执行待处理任务,并维护待处理任务的任务状态的步骤。
具体地,在任务处理服务器对任务执行服务器中的任务记录表进行写入操作时,该任务处理服务器对该任务记录表进行排他锁定,其他任务处理服务器无法对该锁定的任务记录表进行写入操作。
当任务处理服务器启动的待处理任务存在于任务记录表中时,表示该待处理任务已经被其他任务处理服务器启动,并在相应的任务执行服务器上执行,无需再次启动,任务处理服务器可结束启动的待处理任务,等待下一个达到任务开启时间的待处理任务。
当任务处理服务器启动的待处理任务未存在于任务记录表中时,表示该待处理任务未被相应的任务执行服务器执行,在与启动的待处理任务对应的任务执行服务器中,将待处理任务的任务状态标记为启动状态,以使得任务执行服务器执行待处理任务,并维护待处理任务的任务状态。
在本实施例中,在通知任务执行服务器执行任务之前,先检测任务执行服务器中的任务记录表中是否有记录该待处理任务,若无则通知任务执行服务器执行该任务,避免了任务重复执行导致的服务器资源浪费的问题。
在一个实施例中,任务处理方法中S406具体包括:将启动的待处理任务写入任务记录表,并在任务记录表中将待处理任务的任务状态标记为启动状态,以使得任务执行服务器在检测到任务表中存在被标记为启动状态的任务时,启用相应的任务执行线程以执行被标记为启动状态的任务,并通过任务执行线程维护执行的任务在任务记录表中的任务状态。
在本实施例中,任务记录表中可记录在相应的任务执行服务器中执行的任务的编号。任务处理服务器在启动的待处理任务后,可遍历任务记录表中记录的任务的编号,在遍历时将启动的任务的编号与遍历的编号对比,若一致,则说明任务已被执行,任务处理服务器可结束启动的待处理任务;若不一致,则在该任务记录表中记录启动的任务的编号,并将该任务的执行状态标记为启动状态,以使得任务执行服务器执行待处理任务,并维护待处理任务的任务状态。
任务执行服务器中的任务检测线程会定时检查本地是否有标记为启动状态的任务,若有,则启用本地的任务线程执行该任务,并在执行任务时维护待处理任务的任务执行状态。任务执行服务器在任务执行完成后,将任务状态更新为结束状态,并向任务处理服务器反馈任务执行消息,通知任务处理服务器该待处理任务需要在该任务执行服务器上执行的部分已经执行完成,以使得任务处理服务器已进行后续的处理步骤。
若任务执行服务器在任务执行过程中,发现任务出错,无法继续进行,则将任务状态更新为异常状态,通知任务处理服务器该待处理任务需要在该任务执行服务器上执行的部分执行失败,以使得任务处理服务器已进行后续的处理步骤。
在本实施例中,任务执行服务器通过任务记录表展示任务执行服务器中任务执行状态,以使得任务处理服务器可方便直观地获得任务执行服务器中执行的任务和任务执行状态,提高任务处理效率。
如图5所示,在一个实施例中,步骤S306具体包括如下步骤:
S502,按照检查周期触发独立于任务线程的检查线程。
其中,检查周期是指事先设置的检测任务执行状态的周期。检查周期如每分钟。检查线程是独立于任务线程存在的用于检测任务执行状态的线程。任务处理服务器可事先设定独立于任务线程的检查线程。具体地,任务处理服务器可在检测到当前时间符合检查周期时,启动该独立于任务线程的检查线程。
S504,通过检查线程查询任务执行服务器上的任务记录表。
S506,从任务记录表中筛选出任务状态被标记为启动状态的任务。
在本实施例中,通过独立于任务线程的检查线程筛选出任务状态被标记为启动状态的任务,使得任务执行与任务状态检测分别由不同的处理者处理,提高了任务效率。
如图6所示,在一个实施例中,提供了一种业务分配方法,该方法具体包括如下步骤:
S602,通过本地与待处理任务一一对应的任务线程启动相应的待处理任务。
S604,确定与待处理任务对应的任务执行服务器。
S606,查询确定的任务执行服务器上的任务记录表。
S608,检测待处理任务是否存在于相应的任务执行服务器上的任务记录表中;若是,则跳转到步骤S610,若否则跳转到步骤S612。
S610,结束启动的待处理任务,等待下一个达到任务开启时间的待处理任务。
S612,将启动的待处理任务写入任务记录表,并在任务记录表中将待处理任务的任务状态标记为启动状态,以使得任务执行服务器在检测到任务表中存在被标记为启动状态的任务时,启用相应的任务执行线程以执行被标记为启动状态的任务,并通过任务执行线程维护执行的任务在任务记录表中的任务状态。
S614,按照检查周期触发独立于任务线程的检查线程,通过检查线程查询任务执行服务器上的任务记录表,从任务记录表中筛选出任务状态被标记为启动状态的任务。
S616,检测本地与筛选出的任务对应的任务线程是否存在;若存在,则跳转至步骤S614,若不存在,则跳转至步骤S618。
S618,通知任务执行服务器结束执行筛选出的任务,重启与筛选出的任务对应的任务线程,将筛选出的任务作为待处理任务,并跳转至步骤S602。
S620,从将待处理任务的任务状态标记为启动状态时开始计时,并检测任务执行服务器反馈的任务执行消息。
S622,检测在预设任务执行最大时长时是否检查到任务执行服务器反馈的任务执行消息;若是,则跳转至步骤610,若否,则跳转至步骤S624。
具体地,任务执行消息是指任务执行服务器在执行任务后反馈的任务执行情况的消息,包括任务执行成功消息和任务执行失败消息。任务处理服务器可预先设定任务执行最大时长,在该时长范围内为检测到任务执行服务器反馈的任务执行消息则判定任务执行出现异常。
S624,在任务执行服务器中将待处理任务的任务状态标记为异常状态,并通知任务执行服务器结束执行待处理任务。
在本实施例中,通过设置任务执行最大时长来控制任务执行时间,避免了长时间执行某个任务而未执行成功,且占用服务器资源的问题,提高了任务处理效率。
如图7所示,为一个实施例中异步任务分布式并发处理的原理图。参考图7,假设任务处理服务器有3个,每个任务处理服务器的任务线程池中有3条任务线程,任务执行服务器有4个,在任务处理服务器通过任务线程启动任务1,并通知对应的任务执行服务器执行该任务后,其他任务处理服务器不再通过任务线程启动任务1,并通知对应的任务执行服务器执行该任务。避免了任务重复执行的问题。
每个任务处理服务器的任务线程池中有3条任务线程,可以并行启动任务,并通知不同的任务执行服务器执行相应的任务。比如,任务执行服务器1中任务线程1启动任务1,通知任务执行服务器1执行该任务;任务执行服务器1中任务线程2启动任务3,通知任务执行服务器4执行该任务。实现了异步任务分布式并发处理。这样,多个任务并行同时处理是,不会影响其他任务的处理,提高了任务处理效率。
如图8所示,在一个实施例中,提供了一种任务处理装置800,包括:任务启动模块801、任务执行模块802、任务筛选模块803、线程检测模块804和任务重启模块805。
任务启动模块801,用于通过本地与待处理任务一一对应的任务线程启动相应的待处理任务。
任务执行模块802,用于在与启动的待处理任务对应的任务执行服务器中,将待处理任务的任务状态标记为启动状态,以使得任务执行服务器执行待处理任务,并维护待处理任务的任务状态。
任务筛选模块803,用于从任务执行服务器中筛选出任务状态被标记为启动状态的任务。
线程检测模块804,用于当本地与筛选出的任务对应的任务线程不存在时,通知任务执行服务器结束执行筛选出的任务。
任务重启模块805,用于重启与筛选出的任务对应的任务线程,将筛选出的任务作为待处理任务,并返回通过本地与待处理任务一一对应的任务线程启动相应的待处理任务的步骤。
上述任务处理装置,本地启动待处理任务后,在与待处理任务对应的任务执行服务器中执行待处理任务,并标记任务状态,建立本地任务线程与任务执行服务器中执行任务的一一对应关系,使得本地在检测到任务执行服务器中被标记为启动状态的任务对应的本地任务线程不存在时,及时通知任务执行服务器结束执行该任务,避免了本地任务线程已不存在,而任务执行服务器仍在执行任务导致的服务器资源浪费的问题。而且在检测到任务执行服务器中被标记为启动状态的任务对应的本地任务线程不存在时,及时在本地重启任务线程以重启任务,避免了被动等待任务执行服务器反馈任务执行情况,而导致的任务执行出现异常无法及时处理的问题,提高了任务处理效率。
在一个实施例中,任务筛选模块803还用于按照检查周期触发独立于任务线程的检查线程;通过检查线程查询任务执行服务器上的任务记录表;从任务记录表中筛选出任务状态被标记为启动状态的任务。
在本实施例中,通过独立于任务线程的检查线程筛选出任务状态被标记为启动状态的任务,使得任务执行与任务状态检测分别由不同的处理者处理,提高了任务效率。
如图9所示,在一个实施例中,提供了一种任务处理装置900,包括:任务启动模块901、任务查询模块902、任务执行模块903、任务筛选模块904、线程检测模块905和任务重启模块906。
任务启动模块901,用于通过本地与待处理任务一一对应的任务线程启动相应的待处理任务。
任务查询模块902,用于确定与待处理任务对应的任务执行服务器;查询确定的任务执行服务器上的任务记录表。
任务执行模块903,用于当待处理任务未存在于任务记录表中时,在与启动的待处理任务对应的任务执行服务器中,将待处理任务的任务状态标记为启动状态,以使得任务执行服务器执行待处理任务,并维护待处理任务的任务状态。
任务筛选模块904,用于从任务执行服务器中筛选出任务状态被标记为启动状态的任务。
线程检测模块905,用于当本地与筛选出的任务对应的任务线程不存在时,通知任务执行服务器结束执行筛选出的任务。
任务重启模块906,用于重启与筛选出的任务对应的任务线程,将筛选出的任务作为待处理任务,并返回通过本地与待处理任务一一对应的任务线程启动相应的待处理任务的步骤。
在本实施例中,在通知任务执行服务器执行任务之前,先检测任务执行服务器中的任务记录表中是否有记录该待处理任务,若无则通知任务执行服务器执行该任务,避免了任务重复执行导致的服务器资源浪费的问题。
在一个实施例中,任务执行模块903还用于将启动的待处理任务写入任务记录表,并在任务记录表中将待处理任务的任务状态标记为启动状态,以使得任务执行服务器在检测到任务表中存在被标记为启动状态的任务时,启用相应的任务执行线程以执行被标记为启动状态的任务,并通过任务执行线程维护执行的任务在任务记录表中的任务状态。
在本实施例中,任务执行服务器通过任务记录表展示任务执行服务器中任务执行状态,以使得任务处理服务器可方便直观地获得任务执行服务器中执行的任务和任务执行状态,提高任务处理效率。
如图10所示,在一个实施例中,提供了一种任务处理装置1000,包括:任务启动模块1001、任务执行模块1002、任务筛选模块1003、线程检测模块1004、任务重启模块1005和任务结束模块1006。
任务启动模块1001,用于通过本地与待处理任务一一对应的任务线程启动相应的待处理任务。
任务执行模块1002,用于在与启动的待处理任务对应的任务执行服务器中,将待处理任务的任务状态标记为启动状态,以使得任务执行服务器执行待处理任务,并维护待处理任务的任务状态。
任务筛选模块1003,用于从任务执行服务器中筛选出任务状态被标记为启动状态的任务。
线程检测模块1004,用于当本地与筛选出的任务对应的任务线程不存在时,通知任务执行服务器结束执行筛选出的任务。
任务重启模块1005,用于重启与筛选出的任务对应的任务线程,将筛选出的任务作为待处理任务,并返回通过本地与待处理任务一一对应的任务线程启动相应的待处理任务的步骤。
任务结束模块1006,用于从将待处理任务的任务状态标记为启动状态时开始计时,并检测任务执行服务器反馈的任务执行消息;若计时时长达到预设任务执行最大时长时仍未检测到任务执行服务器反馈的任务执行消息,则在任务执行服务器中将待处理任务的任务状态标记为异常状态,并通知任务执行服务器结束执行待处理任务。
在本实施例中,通过设置任务执行最大时长来控制任务执行时间,避免了长时间执行某个任务而未执行成功,且占用服务器资源的问题,提高了任务处理效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种任务处理方法,所述方法包括:
通过本地与待处理任务一一对应的任务线程启动相应的待处理任务,所述待处理任务分配有对应的任务编号,每个所述任务线程具有对应的编号,所述编号与所述待处理任务的任务编号一致;
在与启动的所述待处理任务对应的任务执行服务器中,将所述待处理任务的任务状态标记为启动状态,以使得所述任务执行服务器执行所述待处理任务,并维护所述待处理任务的任务状态;
从任务执行服务器中筛选出任务状态被标记为启动状态的任务;
当本地与筛选出的所述任务对应的任务线程不存在时,通知所述任务执行服务器结束执行筛选出的所述任务;
重启与筛选出的任务对应的任务线程,将筛选出的任务作为待处理任务,并返回所述通过本地与待处理任务一一对应的任务线程启动相应的待处理任务的步骤;
所述通过本地与待处理任务一一对应的任务线程启动相应的待处理任务之后,所述方法还包括:
确定与所述待处理任务对应的任务执行服务器;
查询确定的所述任务执行服务器上的任务记录表;
当所述待处理任务未存在于所述任务记录表中时,执行所述在与启动的所述待处理任务对应的任务执行服务器中,将所述待处理任务的任务状态标记为启动状态,以使得所述任务执行服务器执行所述待处理任务,并维护所述待处理任务的任务状态的步骤。
2.根据权利要求1所述的方法,其特征在于,所述在与启动的所述待处理任务对应的任务执行服务器中,将所述待处理任务的任务状态标记为启动状态,以使得所述任务执行服务器执行所述待处理任务,并维护所述待处理任务的任务状态的步骤包括:
将启动的所述待处理任务写入所述任务记录表,并在所述任务记录表中将所述待处理任务的任务状态标记为启动状态,以使得所述任务执行服务器在检测到所述任务表中存在被标记为启动状态的任务时,启用相应的任务执行线程以执行被标记为启动状态的所述任务,并通过所述任务执行线程维护执行的所述任务在所述任务记录表中的任务状态。
3.根据权利要求1所述的方法,其特征在于,所述从任务执行服务器中筛选出任务状态被标记为启动状态的任务的步骤包括:
按照检查周期触发独立于任务线程的检查线程;
通过所述检查线程查询任务执行服务器上的任务记录表;
从所述任务记录表中筛选出任务状态被标记为启动状态的任务。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述在与启动的所述待处理任务对应的任务执行服务器中,将所述待处理任务的任务状态标记为启动状态,以使得所述任务执行服务器执行所述待处理任务,并维护所述待处理任务的任务状态之后,所述方法还包括:
从将所述待处理任务的任务状态标记为启动状态时开始计时,并检测所述任务执行服务器反馈的任务执行消息;
若计时时长达到预设任务执行最大时长时仍未检测到所述任务执行服务器反馈的任务执行消息,则
在所述任务执行服务器中将所述待处理任务的任务状态标记为异常状态,并通知所述任务执行服务器结束执行所述待处理任务。
5.一种任务处理装置,其特征在于,所述装置包括:
任务启动模块,用于通过本地与待处理任务一一对应的任务线程启动相应的待处理任务,所述待处理任务分配有对应的任务编号,每个所述任务线程具有对应的编号,所述编号与所述待处理任务的任务编号一致;
任务执行模块,用于在与启动的所述待处理任务对应的任务执行服务器中,将所述待处理任务的任务状态标记为启动状态,以使得所述任务执行服务器执行所述待处理任务,并维护所述待处理任务的任务状态;
任务筛选模块,用于从任务执行服务器中筛选出任务状态被标记为启动状态的任务;
线程检测模块,用于当本地与筛选出的所述任务对应的任务线程不存在时,通知所述任务执行服务器结束执行筛选出的所述任务;
任务重启模块,用于重启与筛选出的任务对应的任务线程,将筛选出的任务作为待处理任务,并返回所述通过本地与待处理任务一一对应的任务线程启动相应的待处理任务的步骤;
所述装置还包括:
任务查询模块,用于确定与所述待处理任务对应的任务执行服务器;查询确定的所述任务执行服务器上的任务记录表;
所述任务执行模块还用于当所述待处理任务未存在于所述任务记录表中时,在与启动的所述待处理任务对应的任务执行服务器中,将所述待处理任务的任务状态标记为启动状态,以使得所述任务执行服务器执行所述待处理任务,并维护所述待处理任务的任务状态。
6.根据权利要求5所述的装置,其特征在于,所述任务执行模块还用于将启动的所述待处理任务写入所述任务记录表,并在所述任务记录表中将所述待处理任务的任务状态标记为启动状态,以使得所述任务执行服务器在检测到所述任务表中存在被标记为启动状态的任务时,启用相应的任务执行线程以执行被标记为启动状态的所述任务,并通过所述任务执行线程维护执行的所述任务在所述任务记录表中的任务状态。
7.根据权利要求5所述的装置,其特征在于,所述任务筛选模块还用于按照检查周期触发独立于任务线程的检查线程;通过所述检查线程查询任务执行服务器上的任务记录表;从所述任务记录表中筛选出任务状态被标记为启动状态的任务。
8.根据权利要求5至7任一项所述的装置,其特征在于,所述装置还包括:
任务结束模块,用于从将所述待处理任务的任务状态标记为启动状态时开始计时,并检测所述任务执行服务器反馈的任务执行消息;若计时时长达到预设任务执行最大时长时仍未检测到所述任务执行服务器反馈的任务执行消息,则在所述任务执行服务器中将所述待处理任务的任务状态标记为异常状态,并通知所述任务执行服务器结束执行所述待处理任务。
9.一种服务器,所述服务器包括系统总线连接的处理器、非易失性存储介质、内存储器和网络接口,所述内存储器中存储有计算机可读指令,其特征在于,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如权利要求1-4任一项所述的任务处理方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-4任一项所述的任务处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710087372.6A CN107783828B (zh) | 2017-02-17 | 2017-02-17 | 任务处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710087372.6A CN107783828B (zh) | 2017-02-17 | 2017-02-17 | 任务处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107783828A CN107783828A (zh) | 2018-03-09 |
CN107783828B true CN107783828B (zh) | 2020-07-17 |
Family
ID=61437758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710087372.6A Active CN107783828B (zh) | 2017-02-17 | 2017-02-17 | 任务处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107783828B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109213586A (zh) * | 2018-08-23 | 2019-01-15 | 北京奇虎科技有限公司 | 一种任务的调度方法及装置 |
CN110245009B (zh) * | 2019-05-14 | 2024-03-08 | 平安科技(深圳)有限公司 | 周期任务分配方法、装置、计算机设备和存储介质 |
CN110321206A (zh) * | 2019-06-26 | 2019-10-11 | 北京金山安全软件有限公司 | 一种服务管理方法、装置、电子设备及存储介质 |
CN113010287A (zh) * | 2021-03-16 | 2021-06-22 | 恩亿科(北京)数据科技有限公司 | 小型分布式任务处理系统、方法、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8201176B2 (en) * | 2008-08-06 | 2012-06-12 | International Business Machines Corporation | Detecting the starting and ending of a task when thread pooling is employed |
CN103136363A (zh) * | 2013-03-14 | 2013-06-05 | 曙光信息产业(北京)有限公司 | 查询处理方法和集群数据库系统 |
CN104601668A (zh) * | 2014-12-24 | 2015-05-06 | 北京京东尚科信息技术有限公司 | 基于状态管理的数据推送方法、装置和系统 |
CN105446801A (zh) * | 2014-06-23 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 分布式系统中的任务处理方法和装置 |
-
2017
- 2017-02-17 CN CN201710087372.6A patent/CN107783828B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8201176B2 (en) * | 2008-08-06 | 2012-06-12 | International Business Machines Corporation | Detecting the starting and ending of a task when thread pooling is employed |
CN103136363A (zh) * | 2013-03-14 | 2013-06-05 | 曙光信息产业(北京)有限公司 | 查询处理方法和集群数据库系统 |
CN105446801A (zh) * | 2014-06-23 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 分布式系统中的任务处理方法和装置 |
CN104601668A (zh) * | 2014-12-24 | 2015-05-06 | 北京京东尚科信息技术有限公司 | 基于状态管理的数据推送方法、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107783828A (zh) | 2018-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107783828B (zh) | 任务处理方法和装置 | |
JP5365051B2 (ja) | 管理プログラム、管理装置及び管理方法 | |
EP3142011A1 (en) | Anomaly recovery method for virtual machine in distributed environment | |
CN110765026A (zh) | 自动化测试方法、装置、存储介质及设备 | |
CN112199240B (zh) | 一种节点故障时进行节点切换的方法及相关设备 | |
CN108549550A (zh) | 一种硬盘挂载方法及装置 | |
JP2017224051A (ja) | 情報処理装置、情報処理方法およびプログラム | |
CN111506388B (zh) | 容器性能探测方法、容器管理平台及计算机存储介质 | |
CN108595292B (zh) | 一种系统的优化方法、移动终端及计算机存储介质 | |
CN109922014B (zh) | 一种交换机冷热启动判断方法及系统 | |
CN108173892B (zh) | 云端镜像操作方法和装置 | |
CN112882871B (zh) | 主机冲突检测方法、装置、设备及存储介质 | |
CN109376027A (zh) | 一种异常销毁进程的处理方法及终端 | |
CN111382016A (zh) | 测试终端与计算机的连接方法和装置 | |
US11609768B2 (en) | Application management apparatus, in-vehicle system, and application management method | |
CN114398045A (zh) | 一种网络自动化装机方法、装置、服务器及存储介质 | |
CN110764789B (zh) | 工序管控方法、装置、存储介质及电子设备 | |
CN110442467B (zh) | 一种数据共享方法及终端、计算机可读存储介质 | |
CN112860338B (zh) | 软件启动方法和装置 | |
CN106557356B (zh) | 一种任务处理方法及装置 | |
CN106973179B (zh) | 图像形成装置及图像形成方法 | |
CN115344327B (zh) | 应用模块的切换方法、装置、电子设备及可读存储介质 | |
CN105487847A (zh) | 一种功能发布方法和设备 | |
JP2014179047A (ja) | 情報処理装置 | |
CN114020357B (zh) | namenode节点的启动方法、装置、系统及介质 |
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 |