一种异步批量处理方法及系统与流程

文档序号:11864511阅读:589来源:国知局
一种异步批量处理方法及系统与流程

本发明涉及异步批量处理技术领域,更具体的说,涉及一种异步批量处理方法及系统。



背景技术:

当前,银行系统中的很多应用采用同步处理方法对应用数据进行处理。当应用数据较为复杂时,所需的处理时间就会比较长,操作人员等待系统的响应时间也相应变长,与此同时,应用数据需长时间保持连接状态,从而使后端服务器和网络的压力变大,导致后端服务器死机、网速变慢等。

综上,如何提供一种异步批量处理方法及系统提高对数据的处理效率是本领域技术人员亟待解决的技术问题。



技术实现要素:

有鉴于此,本发明公开一种异步批量处理方法及系统,以实现对数据处理效率的提高。

一种异步批量处理方法,包括:

接收前端和/或后端发送的异步批量业务请求;

根据所述异步批量业务请求生成对应的事件信息和任务信息,其中,所述事件信息包括:事件队列和事件参数,所述任务信息包括:任务队列和任务步骤;

按照预设顺序轮询所述任务队列,从所述任务队列中获取满足允许主控调度条件和预设执行条件的待执行任务,以及所述待执行任务的事件ID;

从所述任务步骤中,查询所述待执行任务对应的待执行任务步骤;

当所述待执行任务步骤的前置步骤处理完成后,判断所述待执行任务步骤中,所述前置步骤的后续步骤是否能够并发;

若所述后续步骤能够并发,则实例化多线程并发处理所述后续步骤的每个步骤,并根据所述事件ID,获取所述事件信息和所需处理参数,进行实际业务处理。

优选的,还包括:

若所述后续步骤不能够并发,则依次单线程处理所述后续步骤的每个步骤。

优选的,由所述后端生成所述异步批量业务请求的过程包括:

轮询定时任务参数表;

当所述定时任务参数表中记录有定时任务类型时,判断日终处理是否完成;

如果所述日终处理完成,则循环处理所述定时任务参数表中记录的每一条定时任务类型,并在处理每一条定时任务类型时,判断当前时间是否在预设允许时间范围内;

如果所述当前时间在所述预设允许时间范围内,则判断当前定时任务类型是否允许重复执行;

如果所述当前定时任务类型不允许重复执行,则在当前日期与上次执行日期不相等时,根据所述当前定时任务类型生成所述异步批量业务请求;

如果所述当前定时任务类型允许重复执行,则判断所述上次执行时间是否为空;

如果所述上次执行时间为空,则直接根据所述当前定时任务类型生成所述异步批量业务请求;

如果所述上次执行时间不为空,则在所述当前时间不小于所述上次执行时间和预设时间间隔之和时,根据所述当前定时任务类型生成所述异步批量业务请求。

优选的,在所述按照预设顺序轮询所述任务队列,从所述任务队列中获取满足允许主控调度条件和预设执行条件的待执行任务,以及所述待执行任务的事件ID之后,还包括:

修改所述待执行任务和当前事件的处理状态以及开始处理时间。

优选的,在所述对所述待执行任务步骤进行步骤处理,并根据所述事件ID,获取所述事件信息和所需处理参数,进行实际业务处理之后,还包括:

在所述实际业务处理完成后,修改所述待执行任务和当前事件的处理状态以及结束处理时间。

优选的,在所述后续步骤并发处理完成后,还包括:

获取所述待执行任务的处理状态;

根据所述处理状态,判断所述待执行任务是否完成处理;

如果是,则修改所述待执行任务和当前事件的处理状态以及结束处理时间;

如果否,则从所述任务步骤中,判断是否还有所述待执行任务对应的未执行任务步骤;

如果有所述未执行任务步骤,则执行所述未执行任务步骤,并修改当前任务步骤处理状态和开始处理时间;

如果没有所述未执行任务步骤,则在预设时间段后,再次获取所述待执行任务的处理状态。

一种异步批量处理系统,包括:

接收单元,用于接收前端和/或后端发送的异步批量业务请求;

生成单元,用于根据所述异步批量业务请求生成对应的事件信息和任务信息,其中,所述事件信息包括:事件队列和事件参数,所述任务信息包括:任务队列和任务步骤;

第一获取单元,用于按照预设顺序轮询所述任务队列,从所述任务队列中获取满足允许主控调度条件和预设执行条件的待执行任务,以及所述待执行任务的事件ID;

查询单元,用于从所述任务步骤中,查询所述待执行任务对应的待执行任务步骤;

判断单元,用于当所述待执行任务步骤的前置步骤处理完成后,判断所述待执行任务步骤中,所述前置步骤的后续步骤是否能够并发;

处理单元,用于若所述后续步骤能够并发,则实例化多线程并发处理所述后续步骤的每个步骤,对所述待执行任务步骤进行步骤处理,并根据所述事件ID,获取所述事件信息和所需处理参数,进行实际业务处理。

优选的,还包括:

单线程处理单元,用于若所述后续步骤不能够并发,则依次单线程处理所述前置步骤的下一个步骤。

优选的,还包括:第一修改单元,用于在所述第一获取单元按照预设顺序轮询所述任务队列,从所述任务队列中获取满足允许主控调度条件和预设执行条件的待执行任务,以及所述待执行任务的事件ID之后,修改所述待执行任务和当前事件的处理状态以及开始处理时间。

优选的,还包括:

第二修改单元,用于在所述处理单元对所述待执行任务步骤进行步骤处理,并根据所述事件ID,获取所述事件信息和所需处理参数,进行实际业务处理之后,修改所述待执行任务和当前事件的处理状态以及结束处理时间。

优选的,还包括:

第二获取单元,用于在所述后续步骤并发处理完成后,获取所述待执行任务的处理状态;

第一判断单元,用于根据所述处理状态,判断所述待执行任务是否完成处理;

修改单元,用于在所述第一判断单元判断为是的情况下,修改所述待执行任务和当前事件的处理状态以及结束处理时间;

第二判断单元,用于在所述第一判断单元判断为否的情况下,从所述任务步骤中,判断是否还有所有待执行任务对应的未执行任务步骤;

执行修改单元,用于在所述第二判断单元判断为是的情况下,执行所述未执行任务步骤,并修改当前任务步骤处理状态和开始处理时间;

再次获取单元,用于在所述第二判断单元判断为否的情况下,在预设时间段后,再次获取所述待执行任务的处理状态。

从上述的技术方案可知,本发明公开了一种异步批量处理方法及系统,根据前端和/或后端发送的异步批量业务请求,生成事件信息和任务信息,轮询任务信息包含的任务队列,获取满足允许主控调度条件和预设执行条件的待执行任务以及该待执行任务的事件ID,从任务信息包含的任务步骤中,查询待执行任务对应的待执行任务步骤,当待执行任务步骤的前置步骤处理完成且该前置步骤的后续步骤能够并发时,通过实例化多线程并发处理后续步骤的每个步骤,并根据事件ID获取事件信息和所需处理参数,进行实际业务处理。由此可知,本发明通过轮询任务队列,实时获取任务队列中的待执行任务,并对该待执行任务进行实时处理,实现任务并发处理,与此同时,当与该待执行任务对应的待执行任务步骤的前置步骤处理完成,且该前置步骤的后续步骤能够并发时,通过实例化多线程并发处理后续步骤的每个步骤,实现步骤并发处理。因此,本发明实现了异步批量处理,相比同步处理而言,本发明可以大大缩短数据的处理时间,从而提高了数据处理效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据公开的附图获得其他的附图。

图1为本发明实施例公开的一种异步批量处理方法的方法流程图;

图2为本发明实施例公开的一种后端生成异步批量业务请求的方法流程图;

图3为本发明实施例公开的一种异步批量处理系统的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

由客户端发送到服务端的应用请求可理解为任务,对客户端的应用请求分为实时反馈和异步反馈,对于异步反馈这种任务属于异步任务的一种,另一种异步任务为纯后台任务,也即,在该任务执行前,无需前端操作员发送应用请求,例如,定时任务。

当前端操作员发起应用请求时,为避免前端操作员长时间等待响应,就需要采用异步处理方式,即,当前端操作员发起应用请求后,立即向客户端发送应用请求已收到的响应,与此同时,后台根据应用请求进行相关数据处理。当任务为纯后台任务时也需要进行异步处理。当同时有批量异步任务时,为提高数据处理效率,就需要进行异步批量处理,也即,对异步任务进行并发处理。

本发明实施例公开了一种异步批量处理方法及系统,以实现对数据处理效率的提高。

参见图1,本发明实施例公开的一种异步批量处理方法的方法流程图,该方法包括步骤:

步骤S11、接收前端和/或后端发送的异步批量业务请求;

需要说明的是,当前端操作员点击前端界面的按钮后,前端会根据对应的业务单据生成异步批量业务请求,前端生成的异步批量业务请求也可称为前端界面业务请求。

其中,异步批量业务请求中包含有事件类型(即异步批量业务类型)、来源单据、事件参数(计划、企业、提交时间、提交人、允许开始时间)等。

后端发送的异步批量业务请求由后端根据定时任务参数表生成,其中,后端发送的异步批量业务请求也可称为定时业务请求。

步骤S12、根据所述异步批量业务请求生成对应的事件信息和任务信息;

举例说明,当前端操作员在前端界面点击包含缴费入账的异步批量业务请求后,首先根据该异步批量业务请求生成包含缴费到账、提交时间、提交人和缴费到账单据号、计划编码的事件信息;然后再根据异步批量业务请求中包含的事件的业务类型,查询对应的异步批量任务配置信息表,生成对应的任务信息。

当后端发送的异步批量业务请求为每日批量的定时事件请求时,根据该定时事件请求生成对应的事件信息和任务信息,其中,事件信息中包含的事件参数为:任务类型、提交时间、上次执行日期、上次执行时间。

其中,所述事件信息包括:事件队列和事件参数,所述任务信息包括:任务队列和任务步骤。

需要说明的是,在接收到异步批量业务请求后,通过在预设事件队列表中插入一条与该异步批量业务请求对应的记录,生成事件队列。通过将异步批量业务中包含的事件相关参数记录在预设事件参数表中,生成事件参数。同时根据异步批量业务请求中包含的时间类型和异步任务配置信息(包括任务配置和步骤配置)生成任务队列以及与该任务队列对应的任务步骤。

步骤S13、按照预设顺序轮询所述任务队列,从所述任务队列中获取满足允许主控调度条件和预设执行条件的待执行任务,以及所述待执行任务的事件ID;

其中,预设顺序可以为任务队列中的任务的优先级从高到低,或是任务提交时间从前到后。

允许主控调度条件具体为:线程池有空闲线程。

预设执行条件指的是任务的当前时间在预设允许时间段范围内,任务的优先级别高、提交时间靠前、任务处于待处理、处理失败或暂停状态。

事件ID指的是待执行任务的标识符号。

步骤S14、从所述任务步骤中,查询所述待执行任务对应的待执行任务步骤;

步骤S15、当所述待执行任务步骤的前置步骤处理完成后,判断所述待执行任务步骤中,所述前置步骤的后续步骤是否能够并发,如果是,则执行步骤S16;

步骤S16、实例化多线程并发处理所述后续步骤的每个步骤,并根据所述事件ID,获取所述事件信息和所需处理参数,进行实际业务处理。

综上可知,本发明公开了一种异步批量处理方法,根据前端和/或后端发送的异步批量业务请求,生成事件信息和任务信息,轮询任务信息包含的任务队列,获取满足允许主控调度条件和预设执行条件的待执行任务以及该待执行任务的事件ID,从任务信息包含的任务步骤中,查询待执行任务对应的待执行任务步骤,当待执行任务步骤的前置步骤处理完成且该前置步骤的后续步骤能够并发时,通过实例化多线程并发处理后续步骤的每个步骤,并根据事件ID获取事件信息和所需处理参数,进行实际业务处理。由此可知,本发明通过轮询任务队列,实时获取任务队列中的待执行任务,并对该待执行任务进行实时处理,实现任务并发处理,与此同时,当与该待执行任务对应的待执行任务步骤的前置步骤处理完成,且该前置步骤的后续步骤能够并发时,通过实例化多线程并发处理后续步骤的每个步骤,实现步骤并发处理。因此,本发明实现了异步批量处理,相比同步处理而言,本发明可以大大缩短数据的处理时间,从而提高了数据处理效率。

其中,前端操作员还可以在异步批量处理进度查询中查看任务队列中各任务的处理状态,并可根据实际业务场景,对任务进行某些操作,例如,终止未开始处理的批量任务、作废某些任务或是继续处理某些业务等。

同时,前端操作员还可以通过操作界面或者后台日志监控后端生成的异步批量任务的处理状态。

为进一步优化上述实施例,在步骤S15之后,还包括:

若所述后续步骤不能够并发,则依次单线程处理所述后续步骤的每个步骤。

关于步骤间的并发处理:如果当前待执行任务步骤的后续待执行任务步骤无依赖步骤或依赖步骤已完成,则可根据后续待执行任务步骤数量触发多个线程,对当前待执行任务步骤以及后续待执行任务步骤进行并发处理。

需要说明的是,可以根据待执行任务步骤的配置确定是否进行步骤本身的并发,具体如下:

首先判断当前待执行任务步骤是否可并发,如果并发数>1,则线根据该步骤配置的并发数实例化多个线程并发处理每个步骤,如果并发数为空或者等于1,则实例化一个线程来处理当前待执行任务步骤。

如果当前待执行任务步骤为并发处理,则在多个线程并发处理完成后再更新步骤状态,如果其中一个线程返回“暂停”,则将当前待执行任务步骤状态设置为“暂停”;如果其中一个线程返回“失败”,则将当前待执行任务步骤状态设置为“失败”;只有所有线程均返回“成功”,才能将当前待执行任务步骤状态设置为“成功”。

如果当前待执行任务步骤不是并发处理,则直接根据线程返回的状态更新当前待执行任务步骤状态。

本领域技术人员可以理解的是,通过对待执行步骤进行并发处理可以大大缩短数据处理时间,从而提高了数据处理效率。

需要说明的是,后端发送的异步批量业务请求根据定时任务参数表生成,该异步批量业务请求主要包含两类定时任务:

第一类:通过业务规则判断,过滤生成具体实现的任务;

例如,自动成交汇总:在定时参数配置表(具体见表1)中,记录有一条自动成交汇总的配置。根据该配置定时(每日8:00)生成“自动成交汇总”的任务,在执行该任务时,通过业务规则判断,过滤生成每个计划对应的成交汇总任务。

第二类:具体实现的任务;

例如日终处理:在定时参数配置表(具体见表1)中,记录有一条日终处理的配置。根据该配置在定时时间或定时时间段内生成一条或多条(判断是否重复标志)“日终处理”的任务,在执行该任务时,进行具体日终业务逻辑处理。

表1

参见图2,本发明另一实施例公开的一种后端生成异步批量业务请求的方法流程图,包括步骤:

步骤S21、轮询定时任务参数表;

步骤S22、当所述定时任务参数表中记录有定时任务类型时,判断日终处理是否完成,如果是,则执行步骤S23,否则,返回步骤S21;

需要说明的是,判断日终处理是否完成的目的是避免异步批量处理与日终产生资源竞争,等待日终处理完成后,再处理每条定时业务类型记录。

步骤S23、循环处理所述定时任务参数表中记录的每一条定时任务类型,并在处理每一条定时任务类型时,判断当前时间是否在预设允许时间范围内,如果是,则执行步骤S24;

步骤S24、则判断当前定时任务类型是否允许重复执行,如果否,则执行步骤S25,如果是,则执行步骤S26;

步骤S25、在当前日期与上次执行日期不相等时,根据当前定时任务类型生成所述异步批量业务请求;

步骤S26、判断所述上次执行时间是否为空,如果是,则执行步骤S27,否则,执行步骤S28;

步骤S27、直接根据所述当前定时任务类型生成所述异步批量业务请求;

步骤S28、在所述当前时间不小于所述上次执行时间和预设时间间隔之和时,根据所述当前定时任务类型生成所述异步批量业务请求。

需要说明的是,在满足如下条件中的任意一个条件时,直接跳过当前处理的定时任务类型,转至处理下一条定时任务类型,该条件包括:

(1)判定当前时间不在预设允许时间范围内;

(2)判定当前定时类型不允许重复执行且当前日期与上次执行日期相等;

(3)上次执行时间不为空且当前时间小于上次执行时间和预设时间间隔之和。

为进一步优化上述实施例,步骤S13之后,还包括:

修改所述待执行任务和当前事件的处理状态以及开始处理时间。

其中,轮询任务队列的过程具体为:

判断任务队列在当前是否还有需要待执行任务,当有待执行任务时,则按照与当前待执行任务对应的待执行任务步骤进行处理,并在当前待执行任务执行完成,修改当前待执行任务和当前时间的处理状态以及开始处理时间,并对下一个待执行任务进行处理;当没有待执行任务时,表明任务队列中在当前时刻所有任务均已经开始处理或是无需处理,此时,在等待预设时间段后,再次判断任务队列中是否还有需要待执行任务。

需要说明的是,只要线程池有空闲线程,则对任务队列发起任务执行线程。

为进一步优化上述实施例,步骤S15之后,还包括:

在所述实际业务处理完成后,修改所述待执行任务和当前事件的处理状态以及结束处理时间。

需要说明的是,在对待执行任务步骤进行步骤处理时,首先需判断当前待执行任务步骤是否可执行,如果当前待执行任务步骤无依赖步骤或依赖步骤都已经完成,则可执行当前待执行任务步骤。

关于步骤间的并发处理:如果当前待执行任务步骤的后续待执行任务步骤无依赖步骤或依赖步骤已完成,则可根据后续待执行任务步骤数量触发多个线程,对当前待执行任务步骤以及后续待执行任务步骤进行并发处理。

最后需要根据待执行任务步骤的处理状态,修改待执行任务和当前事件的处理状态以及结束处理时间。

其中,本发明公开的异步批量处理方法中除有步骤间的并发处理外,还包括:主控并发、任务并发和线程并发。

为方便理解各类批量任务的调度处理,本发明提供了两个主控,分别为定时主控和任务调度主控,定时主控用于在后端根据定时任务参数生成定时业务请求,任务调度主控用于轮询任务队列。

主控并发:在系统后台可以部署多个任务调度主控(即线程),同时对任务队列进行轮询处理。为避免不同任务调度主控同时对同一个任务队列进行处理,可通过任务队列中的任务状态和时间戳进行控制。例如,线程1和线程2同时获取任务队列A,并同时获取到任务队列A中a任务的任务主键和时间戳,如线程1根据任务主键和时间戳更新a任务的状态为“处理中”,并将时间戳更新为当前时间,则线程2无法根据原有任务主键和时间戳再次更新a任务状态及时间戳,从而避免不同任务调度主控同时对同一个任务队列进行处理。

任务并发:只要有空闲的线程且任务队列中有满足允许主控调度条件和预设执行条件的待执行任务,则可以启动线程处理待执行任务,其中,待执行任务所需线程数不能超过线程池允许最大线程数。

线程并发:通过步骤配置中是否包含有允许多线程并发的标志来控制。当该标识为数字时,根据数字的大小确定处理该待执行任务步骤的线程数,当该数字大于1时,表示该待执行任务步骤采用多线程处理,在并发时,每个线程读待处理中间表中不同的未处理的记录,根据线程数取余,处理记录=记录序号%线程数。例如,任务队列中有100000条记录(记录序号1-100000),3个线程并发处理,则线程1处理记录1、4、7、10……,线程2处理记录2、5、8、11……,线程3处理记录3、6、9、12……,每个线程处理完1万条记录提交一次事物。

其中,为进一步优化图1公开的实施例,在后续步骤并发处理完成后,还可以包括步骤:

获取待执行任务的处理状态;

根据所述处理状态,判断所述待执行任务是否完成处理;

如果是,则修改所述待执行任务和当前事件的处理状态以及结束处理时间;

如果否,则从所述任务步骤中,判断是否还有所有待执行任务对应的未执行任务步骤;

如果有所述未执行任务步骤,则执行所述未执行任务步骤,并修改当前任务步骤处理状态和开始处理时间;

如果没有所述未执行任务步骤,则在预设时间段后,再次获取所述待执行任务的处理状态。

可以理解的是,采用异步批量处理方式对数据进行处理的过程中,可能会由于某些原因导致异步批量处理失败,此时,可以在任务队列中查看具体的错误码和错误描述,并查看出现错误的任务对应的任务步骤信息,根据任务步骤执行结构中的错误码确定具体错误原因。如果在进行相关参数修改后可以继续处理任务,则可以在任务界面输出用于提示可以任务继续的提示信息,重新从错误步骤开始继续处理该任务;如果任务需要作废,则输出用于提示是否作废任务的提示信息,以使前端操作人员对该任务进行作废处理。

与上述方法实施例相对应,本发明还公开了一种异步批量处理系统。

参见图3,本发明实施例公开的一种异步批量处理系统的结构示意图,处理系统包括:

接收单元31,用于接收前端和/或后端发送的异步批量业务请求;

需要说明的是,当前端操作员点击前端界面的按钮后,前端会根据对应的业务单据生成异步批量业务请求,前端生成的异步批量业务请求也可称为前端界面业务请求。

其中,异步批量业务请求中包含有事件类型(即异步批量业务类型)、来源单据、事件参数(计划、企业、提交时间、提交人、允许开始时间)等。

后端发送的异步批量业务请求由后端根据定时任务参数表生成,其中,后端发送的异步批量业务请求也可称为定时业务请求。

生成单元32,用于根据所述异步批量业务请求生成对应的事件信息和任务信息,其中,所述事件信息包括:事件队列和事件参数,所述任务信息包括:任务队列和任务步骤;

第一获取单元33,用于按照预设顺序轮询所述任务队列,从所述任务队列中获取满足允许主控调度条件和预设执行条件的待执行任务,以及所述待执行任务的事件ID;

其中,预设顺序可以为任务队列中的任务的优先级从高到低,或是任务提交时间从前到后。

允许主控调度条件具体为:线程池有空闲线程。

预设执行条件指的是任务的当前时间在预设允许时间段范围内,任务的优先级别高、提交时间靠前、任务处于待处理、处理失败或暂停状态。

事件ID指的是待执行任务的标识符号。

查询单元34,用于从所述任务步骤中,查询所述待执行任务对应的待执行任务步骤;

判断单元35,用于当所述待执行任务步骤的前置步骤处理完成后,判断所述待执行任务步骤中,所述前置步骤的后续步骤是否能够并发;

处理单元36,用于若所述后续步骤能够并发,则实例化多线程并发处理所述后续步骤的每个步骤,对所述待执行任务步骤进行步骤处理,并根据所述事件ID,获取所述事件信息和所需处理参数,进行实际业务处理。

综上可知,本发明公开了一种异步批量处理系统,根据前端和/或后端发送的异步批量业务请求,生成事件信息和任务信息,轮询任务信息包含的任务队列,获取满足允许主控调度条件和预设执行条件的待执行任务以及该待执行任务的事件ID,从任务信息包含的任务步骤中,查询待执行任务对应的待执行任务步骤,当待执行任务步骤的前置步骤处理完成且该前置步骤的后续步骤能够并发时,通过实例化多线程并发处理后续步骤的每个步骤,并根据事件ID获取事件信息和所需处理参数,进行实际业务处理。由此可知,本发明通过轮询任务队列,实时获取任务队列中的待执行任务,并对该待执行任务进行实时处理,实现任务并发处理,与此同时,当与该待执行任务对应的待执行任务步骤的前置步骤处理完成,且该前置步骤的后续步骤能够并发时,通过实例化多线程并发处理后续步骤的每个步骤,实现步骤并发处理。因此,本发明实现了异步批量处理,相比同步处理而言,本发明可以大大缩短数据的处理时间,从而提高了数据处理效率。

其中,前端操作员还可以在异步批量处理进度查询中查看任务队列中各任务的处理状态,并可根据实际业务场景,对任务进行某些操作,例如,终止未开始处理的批量任务、作废某些任务或是继续处理某些业务等。

同时,前端操作员还可以通过操作界面或者后台日志监控后端生成的异步批量任务的处理状态。

为进一步优化上述实施例,还包括:

单线程处理单元,用于若所述后续步骤不能够并发,则依次单线程处理所述前置步骤的下一个步骤。

关于步骤间的并发处理:如果当前待执行任务步骤的后续待执行任务步骤无依赖步骤或依赖步骤已完成,则可根据后续待执行任务步骤数量触发多个线程,对当前待执行任务步骤以及后续待执行任务步骤进行并发处理。

本领域技术人员可以理解的是,通过对待执行步骤进行并发处理可以大大缩短数据处理时间,从而提高了数据处理效率。

为进一步优化上述实施例,还包括:

第一修改单元,用于在第一获取单元33按照预设顺序轮询所述任务队列,从所述任务队列中获取满足允许主控调度条件和预设执行条件的待执行任务,以及所述待执行任务的事件ID之后,修改所述待执行任务和当前事件的处理状态以及开始处理时间。

其中,轮询任务队列的过程具体为:

判断任务队列在当前是否还有需要待执行任务,当有待执行任务时,则按照与当前待执行任务对应的待执行任务步骤进行处理,并在当前待执行任务执行完成,修改当前待执行任务和当前时间的处理状态以及开始处理时间,并对下一个待执行任务进行处理;当没有待执行任务时,表明任务队列中在当前时刻所有任务均已经开始处理或是无需处理,此时,在等待预设时间段后,再次判断任务队列中是否还有需要待执行任务。

需要说明的是,只要线程池有空闲线程,则对任务队列发起任务执行线程。

为进一步优化上述实施例,还包括:

第二修改单元,用于在处理单元35对所述待执行任务步骤进行步骤处理,并根据所述事件ID,获取所述事件信息和所需处理参数,进行实际业务处理之后,修改所述待执行任务和当前事件的处理状态以及结束处理时间。

需要说明的是,在对待执行任务步骤进行步骤处理时,首先需判断当前待执行任务步骤是否可执行,如果当前待执行任务步骤无依赖步骤或依赖步骤都已经完成,则可执行当前待执行任务步骤。

关于步骤间的并发处理:如果当前待执行任务步骤的后续待执行任务步骤无依赖步骤或依赖步骤已完成,则可根据后续待执行任务步骤数量触发多个线程,对当前待执行任务步骤以及后续待执行任务步骤进行并发处理。

最后需要根据待执行任务步骤的处理状态,修改待执行任务和当前事件的处理状态以及结束处理时间。

其中,本发明公开的异步批量处理方法中除有步骤间的并发处理外,还包括:主控并发、任务并发和线程并发。

为方便理解各类批量任务的调度处理,本发明提供了两个主控,分别为定时主控和任务调度主控,定时主控用于在后端根据定时任务参数生成定时业务请求,任务调度主控用于轮询任务队列。

主控并发:在系统后台可以部署多个任务调度主控(即线程),同时对任务队列进行轮询处理。为避免不同任务调度主控同时对同一个任务队列进行处理,可通过任务队列中的任务状态和时间戳进行控制。例如,线程1和线程2同时获取任务队列A,并同时获取到任务队列A中a任务的任务主键和时间戳,如线程1根据任务主键和时间戳更新a任务的状态为“处理中”,并将时间戳更新为当前时间,则线程2无法根据原有任务主键和时间戳再次更新a任务状态及时间戳,从而避免不同任务调度主控同时对同一个任务队列进行处理。

任务并发:只要有空闲的线程且任务队列中有满足允许主控调度条件和预设执行条件的待执行任务,则可以启动线程处理待执行任务,其中,待执行任务所需线程数不能超过线程池允许最大线程数。

线程并发:通过步骤配置中是否包含有允许多线程并发的标志来控制。当该标识为数字时,根据数字的大小确定处理该待执行任务步骤的线程数,当该数字大于1时,表示该待执行任务步骤采用多线程处理,在并发时,每个线程读待处理中间表中不同的未处理的记录,根据线程数取余,处理记录=记录序号%线程数。例如,任务队列中有100000条记录(记录序号1-100000),3个线程并发处理,则线程1处理记录1、4、7、10……,线程2处理记录2、5、8、11……,线程3处理记录3、6、9、12……,每个线程处理完1万条记录提交一次事物。

其中,为进一步优化图3公开的实施例,还可以包括:

第二获取单元,用于在所述后续步骤并发处理完成后,获取所述待执行任务的处理状态;

第一判断单元,用于根据所述处理状态,判断所述待执行任务是否完成处理;

修改单元,用于在所述第一判断单元判断为是的情况下,修改所述待执行任务和当前事件的处理状态以及结束处理时间;

第二判断单元,用于在所述第一判断单元判断为否的情况下,从所述任务步骤中,判断是否还有所有待执行任务对应的未执行任务步骤;

执行修改单元,用于在所述第二判断单元判断为是的情况下,执行所述未执行任务步骤,并修改当前任务步骤处理状态和开始处理时间;

再次获取单元,用于在所述第二判断单元判断为否的情况下,在预设时间段后,再次获取所述待执行任务的处理状态。

可以理解的是,采用异步批量处理方式对数据进行处理的过程中,可能会由于某些原因导致异步批量处理失败,此时,可以在任务队列中查看具体的错误码和错误描述,并查看出现错误的任务对应的任务步骤信息,根据任务步骤执行结构中的错误码确定具体错误原因。如果在进行相关参数修改后可以继续处理任务,则可以在任务界面输出用于提示可以任务继续的提示信息,重新从错误步骤开始继续处理该任务;如果任务需要作废,则输出用于提示是否作废任务的提示信息,以使前端操作人员对该任务进行作废处理。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1