作业处理方法和系统的制作方法

文档序号:6353800阅读:200来源:国知局
专利名称:作业处理方法和系统的制作方法
技术领域
本发明涉及数据处理技术领域,更具体的说是涉及一种作业处理方法和系统。
背景技术
作业一般是指放在后台运行并且不需要与用户进行交互的、大数据量的处理程 序,批量作业即是指这样的批量处理程序。在很多大中型企业,尤其是金融、电信等领域的信息系统当中,都存在大量的复杂 的自动化批量处理业务需求。显著增多的多样性的任务已代替了早先的批量作业,并且作 业的规模与复杂性仍在持续的上扬。面对企业信息化的飞速发展的需要,对批量处理系统 在性能、开发框架统一化等方面的研究也越来越深入。目前,一种批量处理系统,设置有总控端和多个应用端组成的应用集群,总控端是 批量作业处理的控制者和发起者,应用端是完成批量作业的业务操作的接收者和执行者。 由总控端获取批量作业以及待处理的数据,从数据库中获取批量作业的执行顺序,将作业 进行分发,由应用集群中的多个应用端获取并执行所述作业,从而完成作业要执行的任务。 在这种批量处理系统中,由总控端将需要批量处理的作业分发给多个应用端执行,使得作 业分发和作业执行分开,从而可提高批量作业的处理效率。但是,在这种批量处理系统中,虽然可以将批量作业分发给多个应用端执行,但是 一个作业只能在一个应用端上执行,当应用端需要处理的作业为一个大作业时,大作业即 是指对资源和时间要求很高,在执行上有重复性的循环操作,或者执行过程可能很耗时的 处理任务,由于其处理过程复杂,涉及的数据量大,造成应用端的处理压力,即便采用所述 的批量处理系统,仍然会影响作业处理的效率。

发明内容
有鉴于此,本发明提供一种作业处理方法和系统,用于解决作业处理效率低的问题。为实现上述目的,本发明提供如下技术方案一种作业处理方法,所述方法包括当待处理的作业为大作业时,获取所述大作业预先定义好的拆分算法;将所述拆分算法和大作业发送给中间服务器,以便于应用集群中的可用应用端获 取所述拆分算法,并执行所述拆分算法将所述大作业拆分成分作业;接收所述可用应用端经中间服务器返回的所述分作业;将所述分作业经中间服务器分发给应用集群中的应用端,以便于应用端执行所述 分作业。优选地,所述方法还包括当确定可用应用端执行所述拆分算法失败时,将所述大作业经中间服务器发送给 应用端,以便于应用端执行所述大作业。
优选地,确定可用应用端执行所述拆分算法失败包括当接收到可用应用端经中间服务器返回的错误信息时,确定可用应用端执行所述 拆分算法失败。优选地,当所述待处理的大作业数量为多个时,所述将所述分作业经中间服务器 分发给应用集群中的应用端包括将不同大作业拆分出的分作业按照原有大作业间的逻辑关系进行组合;将所述组合后的分作业经中间服务器分发给应用集群中的应用端。 优选地,所述拆分算法根据所述大作业实现的业务操作的业务规则定义。一种作业处理系统,所述系统包括总控端、中间服务器和由应用端组成的应用集 群,所述总控端,用于当待处理的作业为大作业时,获取所述大作业预先定义好的拆 分算法;将所述拆分算法和大作业发送给中间服务器,从所述中间服务器中获取拆分后的 分作业;将所述分作业经中间服务器分发给应用集群中的应用端;中间服务器,用于接收总控端发送的作业和拆分算法并向应用端提供所述作业和 拆分算法,并将应用端的执行结果反馈给总控端;应用端,用于执行拆分算法将所述大作业拆分成分作业,并经中间服务器返回给 总控端;执行总控端经中间服务器发送的作业。优选地,所述总控端包括获取单元,用于当待处理的作业为大作业时,获取所述大作业预先定义的拆分算 法;第一发送单元,用于将所述拆分算法和大作业发送给中间服务器;第一接收单元,用于接收应用端经中间服务器返回的所述分作业;第二发送单元,用于将所述分作业经中间服务器分发给应用集群中的应用端。优选地,所述总控端还包括确定单元,用于确定可用应用端执行所述拆分算法失败;第三发送单元,用于将所述大作业经中间服务器发送给应用端。优选地,所述确定单元具体用于当接收应用端经中间服务器返回的错误信息时, 确定可用应用端执行所述拆分算法失败。优选地,所述总控端还包括组合单元,用于当所述待处理的大作业数量为多个时,将不同大作业拆分出的分 作业按照原有大作业间的逻辑关系进行组合,则,所述第二发送单元还用于将所述组合后的分作业经中间服务器分发给应用集群 中的应用端。经由上述的技术方案可知,与现有技术相比,本发明提供了一种作业处理方法和 系统,当待处理的作业为大作业时,总控端不直接发送所述大作业,而是获取所述大作业预 先定义好的拆分算法,将拆分算法发至应用端,由应用端执行所述拆分算法,实现将所述大 作拆分成多个分作业,拆分的个数根据拆分算法的要求而不同,之后将拆分后的分作业返 回给总控端,再由总控端将分作业分发给多个应用端执行,从而缓解了由一个应用端执行 大作业时的压力,将大作业拆分为多个分作业由多个应用端执行,缩短了作业执行时间,提高了作业的处理效率。



为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据 提供的附图获得其他的附图。图1为本发明一种作业处理方法实施例1的流程图;图2为本发明一种作业处理方法实施例2的流程图;图3为本发明一种作业处理系统具体实施例的结构示意图;图4为本发明一种作业处理系统中总控端的结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。本发明实施例公开了一种作业处理方法和系统,当待处理的作业为大作业时,总 控端不直接发送所述大作业,而是获取所述大作业预先定义好的拆分算法,将拆分算法发 至应用端,由应用端执行所述拆分算法,实现将所述大作拆分成多个分作业,之后将拆分后 的分作业返回给总控端,再由总控端将分作业分发给多个应用端执行,从而缓解了由一个 应用端执行大作业时的压力,将大作业拆分为多个分作业由多个应用端执行,缩短了执行 时间,提高了作业的处理效率。参见图1,示出了本发明一种作业处理方法实施例1的流程图,可以包括以下步 骤步骤101 当待处理的作业为大作业时,获取所述大作业的预先定义好的拆分算法。大作业是指在作业执行中对资源和时间要求很高的处理程序,即当执行的作业有 重复性的循环操作,如执行一样的代码,或者作业需要执行很耗时的操作。以统计全国存款 余额这一作业为例,发现对于所有省市的统计方式是一样的,这时就可以按照本发明提供 的作业处理方法将该统计全国存款余额这一大作业拆分为按省市统计余额的多个小作业 并发执行,从而可以缓解应用端压力,缩短处理时间,提高处理效率。大作业的判断可以是在作业处理之前,根据其执行的业务操作内容,即实现什么 样的任务判断得出,或者,在作业执行过程中,查找出影响系统处理效率的作业即为大作 业。当待处理的作业为大作业时,系统并不直接执行所述大作业,而是由总控端先获 取为所述大作业预先定义好的拆分算法,由系统先执行所述拆分算法,将大作业进行拆分。其中,所述拆分算法是根据所述大作业执行的业务操作的业务规则定义的,在面 向对象语言设计中,所述拆分算法具体为一段应用程序。所述业务规则指出了作业可拆分的个数,该拆分个数可以根据不同实际情况动态确定,即业务规则包括了不同规则下的作 业拆分个数,例如,为过生日的人发送邮件这一大作业,将根据过生日的人数进行拆分,而 每天过生日的人数不一样,业务规则规定了每天过生日的人数,也即作业可拆分的个数。拆 分算法即根据该业务规则进行配置编写,以实现作业的可动态拆分。 步骤102 将所述拆分算法和大作业发送给中间服务器,以便于应用集群中的可 用应用端获取所述拆分算法,并执行所述拆分算法将所述大作业拆分成分作业。总控端将所述拆分算法以及大作业发送至中间服务器,由应用集群中的可用应用 端来获取,可用应用端即是指应用集群可用于执行任务的应用端,这可以根据各应用端自 身运行情况和状态,由剩余资源高的应用端来获取。可用应用端执行所述拆分算法,从而实现将大作业拆分为多个分作业。步骤103 接收所述可用应用端经中间服务器返回的所述分作业。应用端执行拆分算法,将大作业拆分成多个小作业,返回给中间服务器,由中间服 务器将所述分作业传送给总控端,总控端即可接收到拆分完成的分作业。步骤104 将所述分作业经中间服务器分发给应用集群中的应用端,以便于应用 端获取所述分作业并执行。总控端将接收的分作业发送至中间服务器,由于将原有大作业拆分成了多个分作 业,因此可由应用集群中的根据自身运行状态,剩余资源高的多个应用端从中间服务器获 取,并执行所述分作业实现批量作业处理,从而完成该作业需要的业务操作。需要说明的是,本发明实施例中,由于作业以及涉及的拆分算法是指相应的应用 程序,系统在执行作业的过程中,本领域技术人员应该了解的是,其必然会涉及相应数据的 处理,数据的传送与处理,也是由系统中的总控端获取、中间服务器暂存,由相应应用端执 行的一个过程,其具体的实现过程与现有批量处理系统相似。还需要说明的是,当待处理的大作业有多个时,且多个大作业间存在逻辑关系,则 不同大作业拆分出的分作业返回至总控端时,总控端按照原有大作业间的逻辑关系进行组 合,之后再将组合后的分作业经中间服务器分发给应用集群中的应用端。在本发明实施例中,总控端不直接发送所述大作业,而是获取所述大作业预先定 义好的拆分算法,将所述拆分算法发至应用端,由应用端执行所述拆分算法,实现将所述大 作业拆分成多个分作业,拆分的个数根据拆分算法具体要求而不同,之后将拆分后的分作 业返回给总控端,再由总控端将分作业分发给多个应用端执行,从而缩短了作业执行时间, 提高了作业处理效率。参见图2,示出了本发明一种作业拆分方法具体实施例2的流程图,可以包括以下 步骤步骤201 当处理的作业为大作业时,总控端获取所述大作业的预先定义好的拆
分算法。在处理大作业时,其中,总控端可以从调度模型库中获取所述大作业的预先定义 好的拆分算法。调度模型是为批量系统提供作业执行顺序与规则的可定制的静态模型配 置,一般存储于数据库或文件中,例如可以是XML文件或文本文件。在调度模型库中增加拆 分算法字段,以用于定制拆分算法。拆分算法可以具体为一段应用程序,在面向对象的编程语言中,如java编程语言,拆分算法需实现基本的拆分算法接口,接口提供统一的拆分方法,其标签如下 public List < Job Execution Context > chunk (Job Execution Context context)throws Job Chunk Exception ;拆分算法需要按照设计好的接口规范进行开发。技术人员可以在拆分方法中根据 业务规则编写拆分逻辑,为不同的大作业配置指定的拆分算法。算法执行过程中,拆分方法 接收的参数来自于作业运行上下文Job Execution Context,算法执行结果也存于上下文 中并放在上下文列表中再返回给总控端。需要说明的,拆分算法的实现可以采用多种编程语言,只要能实现拆分功能即可, 并不局限于java语言。需要说明的是,由于系统可以进行批量作业的处理,总控端接收的大作业数量可 以不止一个,系统可以同时进行多个大作业的拆分,如果大作业之间存在一定的逻辑关系, 那么拆分后的分作业也会按照该逻辑关系并发执行。步骤202 总控端将所述拆分算法和大作业发送给中间服务器。步骤203 应用集群中的可用应用端从中间服务器获取所述拆分算法,并执行所 述拆分算法。可用应用端即是指应用集群可用于执行任务的应用端,这可以根据各应用端自身 运行情况和状态,由剩余资源高的应用端来获取。步骤204 所述应用端判断所述拆分算法是否执行成功,如果是,进入步骤205,如 果否,则进入步骤209。步骤205 所述应用端将通过执行拆分算法将所述大作业拆分出的分作业返回给 中间服务器。步骤206 中间服务器将所述分作业反馈给总控端。步骤207 总控端将所述分作业经中间服务器分发给应用集群中的应用端。总控端将分作业同样发送至中间服务器,由应用集群中的多个可用应用端获取所 述分作业。需要说明的是,当待处理的大作业有多个时,且多个大作业间存在逻辑关系,则不 同大作业拆分出的分作业返回至总控端时,总控端按照原有大作业间的逻辑关系进行组 合,之后再将组合后的分作业经中间服务器分发给应用集群中的应用端。还需要说明的是,在本实施例中,步骤206和步骤207,是由中间服务器将分作业 反馈给总控端,总控端在将分作业分发给应用端。其他优选的实施例还可以是,由总控端从 中间服务器主动获取所述分作业,再将所述分作业分发给应用端。步骤208 应用端执行所述分作业。执行分作业的过程即是实现相应业务操作的过程,例如发送邮件,生成报表等实 际业务,在执行业务过程,其需要的相应的数据的处理过程与现有技术批量系统处理数据 的过程类似,在此不再赘述。步骤209 应用端生成错误信息并所述错误信息经中间服务器返回给总控端。以java编程语言为例,拆分算法在执行过程中如果出现异常,异常是java编程中 用于暴露错误的一种手段,则抛出作业拆分异常Job Chunk Exc印tion,算法执行失败,生 成错误信息,将所述错误信息放入作业上下文列表中,经中间服务器返回给总控端。其中的错误信息包括拆分异常类型,以及拆分异常消息,所述的异常消息可以是错误日志,或者, 用于解释该错误的术语。步骤210 总控端确认所述拆分算法执行失败,将所述大作业经中间服务器发送
给应用端。步骤211 所述应用端执行所述大作业。拆分算法执行失败时,作业拆分失败,系统可以直接处理所述大作业。需要说明的是,本实施例中,拆分算法执行失败时,则取消拆分算法,直接处理原 大作业。其还可以是,该大作业的执行过程被吊起,直至异常问题被解决,重新执行所述拆 分过程。还需要说明的是,在本实施例中,应用端执行算法失败时,生成错误信息返回给总 控端,总控端确认拆分算法执行失败,其还可以是,总控端在一定时间内接收不到应用端返 回的分作业信息,即可确认拆分算法执行失败,本实施例所描述的确认拆分算法执行失败 的方法只是其中一种方式。在本发明实施例中,待处理的作业为大作业时,总控端先获取所述大作业预先定 义好的拆分算法,由应用端执行所述拆分算法,将大作业拆分成多个分作业,拆分个数由根 据业务规则定义的拆分算法决定,之后将拆分后的分作业返回给总控端,再由总控端将分 作业分发给多个应用端执行,且当大作业拆分失败时,可以直接处理原有大作业,通过本发 明的实施例,缩短了作业处理时间,从而提高了作业处理效率。参见图3,示出了本发明一种作业处理系统具体实施例的结构示意图,所述系统包 括总控端301、中间服务器302以及由多个应用端303组成的应用集群304,其中总控端301 用于当待处理的作业为大作业时,获取所述大作业预先定义好的拆 分算法;将所述拆分算法和大作业发送给中间服务器,从所述中间服务器中获取拆分后的 分作业;将所述分作业经中间服务器分发给应用集群中的应用端。中间服务器302 用于接收总控端发送的作业和拆分算法并向应用端提供所述作 业和拆分算法,并将应用端的执行结果反馈给总控端。应用端303 用于执行拆分算法将所述大作业拆分成分作业,并经中间服务器返 回给总控端;执行总控端经中间服务器发送的分作业。本发明所提供的系统,总控端,中间服务器以及由应用端组成的应用集群,同样具 有批量作业的处理的功能,同现有的批量处理系统,在此不再赘述。其中,参见图4,为本发明作业处理系统中总控端的结构示意图,所述总控端可以 包括获取单元401,用于当待处理的作业为大作业时,获取所述大作业预先定义的拆分算法。第一发送单元402,用于将所述拆分算法和大作业发送给中间服务器。第一接收单元403,用于接收应用端经中间服务器返回的所述分作业。第二发送单元404,用于将所述分作业经中间服务器分发给应用集群中的应用端。系统执行所述拆分算法,当执行失败时,所述总控端还包括确定单元405 用于确定可用应用端执行所述拆分算法失败。第三发送单元406 用于将所述大作业经中间服务器发送给应用端。
其中,所述总控端的确定可用端执行所述拆分算法失败,确定单元405具体可以 是用于当接收到可用应用端经中间服务器返回的错误信息时,确定可用应用端执行所述拆 分算法失败。其还可以是当在一定时间内接收不到应用端返回的分作业时,即确定拆分算 法执行失败。由于系统可以进行批量作业的处理,总控端接收的大作业数量可以不止一个,系 统可以同时进行多个大作业的拆分,如果大作业之间存在一定的逻辑关系,那么拆分后的 分作业也会按照该逻辑关系并发执行,则所述总控端还可以包括组合单元,用于当所述待处理的大作业数量为多个时,将不同大作业拆分出的分 作业按照原有大作业间的逻辑关系进行组合。则,所述第二发送单元还用于将所述组合后的分作业经中间服务器分发给应用集 群中的应用端。在本发明实施例中,当待处理的作业为大作业时,系统不直接执行该作业,而是由 总控端获取预先为该大作业定义好的拆分算法,由应用集群中的可用应用端执行所述拆分 算法,实现将大作业拆分成多个分作业,并经中间服务器返回给总控端,由总控端在将所述 分作业经中间服务器分发给应用集群中的多个应用端,并由多个应用端并发执行所述分作 业,其中,中间服务器是用于信息的传递与分发,采用本发明实施例缩短了作业执行时间, 从而提高了作业的处理效率。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他 实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置 而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说 明即可。 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将 一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作 之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体 意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括 那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或
者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......,,限定的要素,
并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本 发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可 借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质 上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品 可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备 (可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些 部分所述的方法。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。 对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的 一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所 公开的原理和新颖特点相一 致的最宽的范围。
权利要求
1.一种作业处理方法,其特征在于,所述方法包括当待处理的作业为大作业时,获取所述大作业预先定义好的拆分算法; 将所述拆分算法和大作业发送给中间服务器,以便于应用集群中的可用应用端获取所 述拆分算法,并执行所述拆分算法将所述大作业拆分成分作业; 接收所述可用应用端经中间服务器返回的所述分作业;将所述分作业经中间服务器分发给应用集群中的应用端,以便于应用端执行所述分作业。
2.根据权利要求1所述的方法,其特征在于,还包括当确定可用应用端执行所述拆分算法失败时,将所述大作业经中间服务器发送给应用 端,以便于应用端执行所述大作业。
3.根据权利要求2所述的方法,其特征在于,确定可用应用端执行所述拆分算法失败 包括当接收到可用应用端经中间服务器返回的错误信息时,确定可用应用端执行所述拆分 算法失败。
4.根据权利要求1所述的方法,其特征在于,当所述待处理的大作业数量为多个时,所 述将所述分作业经中间服务器分发给应用集群中的应用端包括将不同大作业拆分出的分作业按照原有大作业间的逻辑关系进行组合; 将所述组合后的分作业经中间服务器分发给应用集群中的应用端。
5.根据权利要求1所述的方法,其特征在于,所述拆分算法根据所述大作业实现的业 务操作的业务规则定义。
6.一种作业处理系统,其特征在于,所述系统包括总控端、中间服务器和由应用端组成 的应用集群,所述总控端,用于当待处理的作业为大作业时,获取所述大作业预先定义好的拆分算 法;将所述拆分算法和大作业发送给中间服务器,从所述中间服务器中获取拆分后的分作 业;将所述分作业经中间服务器分发给应用集群中的应用端;中间服务器,用于接收总控端发送的作业和拆分算法并向应用端提供所述作业和拆分 算法,并将应用端的执行结果反馈给总控端;应用端,用于执行拆分算法将所述大作业拆分成分作业,并经中间服务器返回给总控 端;执行总控端经中间服务器发送的作业。
7.根据权利要求6所述的系统,其特征在于,所述总控端包括获取单元,用于当待处理的作业为大作业时,获取所述大作业预先定义的拆分算法; 第一发送单元,用于将所述拆分算法和大作业发送给中间服务器; 第一接收单元,用于接收应用端经中间服务器返回的所述分作业; 第二发送单元,用于将所述分作业经中间服务器分发给应用集群中的应用端。
8.根据权利要求7所述的系统,其特征在于,所述总控端还包括 确定单元,用于确定可用应用端执行所述拆分算法失败;第三发送单元,用于将所述大作业经中间服务器发送给应用端。
9.根据权利要求8所述的系统,其特征在于,所述确定单元具体用于当接收应用端经 中间服务器返回的错误信息时,确定可用应用端执行所述拆分算法失败。
10.根据权利要求7所述的系统,其特征在于,所述总控端还包括 组合单元,用于当所述待处理的大作业数量为多个时,将不同大作业拆分出的分作业 按照原有大作业间的逻辑关系进行组合,则,所述第二发送单元还用于将所述组合后的分作业经中间服务器分发给应用集群中的 应用端。
全文摘要
本发明提供了作业处理方法和系统,所述方法包括当待处理的作业为大作业时,获取所述大作业预先定义好的拆分算法;将所述拆分算法和大作业发送给中间服务器,以便于应用集群中的可用应用端获取所述拆分算法,并执行所述拆分算法将所述大作业拆分成分作业;接收所述应用端经中间服务器返回的所述分作业;将所述分作业经中间服务器分发给应用集群中的应用端,以便于应用端执行所述分作业。通过本发明实施例,将一个大作业拆分成多个分作业由多个应用端并发执行,缩短了作业执行时间,从而提高了作业的处理效率。
文档编号G06F9/50GK102147750SQ20111002939
公开日2011年8月10日 申请日期2011年1月27日 优先权日2011年1月27日
发明者朱玥, 聂经纬, 邓伟仲 申请人:中国农业银行股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1