分布式大批量动态任务引擎及采用其处理数据的方法
【专利摘要】本发明公开一种分布式大批量动态任务引擎(DTE)及采用其处理数据的方法,该分布式大批量动态任务引擎包括DTE网关服务器(DTE?Gateway)以及DTE代理服务器(DTE?Agent)两部分;其中,DTE网关服务器用于管理DTE代理服务器,DTE代理服务器是用于执行任务的服务器。当只是需要执行某一类任务时,使用该分布式大批量动态任务引擎的是任务客户端;当需要执行某一组任务,并且需要管理这些任务时,使用该分布式大批量动态任务引擎的是任务管理器。本发明不仅可以并行执行多个任务,而且当任务内容发生改变时,无需更新任务执行的服务器,而仅需对任务脚本进行调整即可实现。
【专利说明】分布式大批量动态任务引擎及采用其处理数据的方法
【技术领域】
[0001]本发明涉及分布式任务【技术领域】,特别涉及一种分布式大批量动态任务引擎及采用该分布式大批量动态任务弓I擎处理数据的方法。
【背景技术】
[0002]在WEB系统中,常常需要实现定时任务执行的部分。在常规的JavaEE系统中,普遍采用Quartz进行简单的任务调度,设置任务的执行频率。到达执行时,在本机执行此任务,并且处理任务的结果进行存储等。但是随着任务数量和种类的增加,系统面临几方面的挑战。
[0003]1.在小型的服务器系统中,一般抓取数据和数据处理都由一台服务器来实现,但随着数据量的增大,一台服务器的效能已经不能满足系统的要求。由于这种单一服务器的系统难以满足任务执行要求,必然需要调用大批量的服务器进行运算执行。
[0004]2.任务的执行内容根据不同的业务要求,可能千差万别,并且随时可能调整变更。常规情况下,不同的任务往往通过不同的参数来区别执行。执行任务的服务器需要装载所有可能任务的执行程序来执行这些不同的任务。当新类型的任务增加时,需要更新所有的任务执行服务器来支持。
[0005]3.任务的结果需要集中式处理和存储。
【发明内容】
[0006]有鉴于此,本发明针对现有技术的问题,提出了一种分布式大批量动态任务引擎(Distribution Task Engine, DTE)。该分布式大批量动态任务引擎包括DTE网关服务器(DTE Gateway)以及DTE代理服务器(DTE Agent)两部分。其中,DTE网关服务器用于管理DTE代理服务器。DTE代理服务器是用于执行任务的服务器。使用该动态任务引擎的是任务客户端(Task Client)和任务管理器(Task Manager)。任务客户端(Task Client)是指某些服务器只是需要执行某一类任务。任务管理器(Task Manager)是指某些服务器需要执行某一组任务,并且需要管理这些任务。
[0007]该动态任务引擎将任务的执行通过相应的任务脚本及配套的参数来表示。当需要执行任务时,需要同时提供任务的脚本、配套参数、回调地址以及任务的唯一身份识别码(ID)、任务的优先级,并且把任务提交到DTE网关服务器。DTE网关服务器将把任务分配到相对空闲的DTE代理服务器(DTE Agent)去执行。
[0008]DTE代理服务器(DTE Agent)中有一个任务等待队列和执行队列。在DTE代理服务器(DTE Agent)的执行队列空闲时,提交过来的任务会被立即放入到执行队列中执行。如果执行队列已满,则DTE代理服务器(DTE Agent)会把任务放入到等待队列中,根据任务的优先级来排序。在相同优先级的情况下,后放入的任务会在先被执行。当执行某个具体任务时,DTE代理服务器(DTE Agent)会加载可执行此任务脚本的脚本引擎,将任务参数和任务脚本组合起来执行。考虑到大多数情况下需要执行的任务中包含很多子任务,DTE代理服务器(DTE Agent)包含一个子任务执行队列。任务执行队列和子任务执行队列都是以并发的模式来执行,加速任务的完成。同时DTE代理服务器(DTE Agent)支持两种子任务的生成机制。第一种是根据任务中的迭代参数产生批量的子任务,第二种是根据任务中提供的子任务管理脚本动态生成。
[0009]DTE代理服务器(DTE Agent)会收集该脚本的结果,将结果通过回调地址传递给相应的任务结果处理服务器。通常情况下,任务结果处理服务器就是任务的发起者,即任务客户端(Task Client)或者任务管理器(Task Manager)。
[0010]当任务的结果数量增大时,也可以将提供专门的任务结果处理服务器集群,将结果回调到该集群来处理。这只需要修改任务的回调地址即可。
[0011]当任务的执行内容或方式变更时,只需要变更任务客户端(Task Client)或者任务管理器(Task Manager)中的任务脚本,而分布式大批量动态任务引擎(DTE)不需要做出任务修改。
[0012]同时,在服务器的部署上也相当灵活。不同的任务管理器(Task Manager)或者任务客户端(Task Client)可以共享一组巨大的DTE代理服务器(DTE Agent)。在特定的情况下,也可以单独部署一组DTE代理服务器(DTE Agent)来处理某些特殊的任务。
【专利附图】
【附图说明】
[0013]图1是本发明提出的分布式大批量动态任务引擎的结构示意图;
[0014]图2是本发明提出的分布式大批量动态任务引擎应用的第一实施例;
[0015]图3是本发明提出的分布式大批量动态任务引擎应用的第二实施例;
[0016]图4是本发明提出的分布式大批量动态任务引擎应用的第三实施例;
【具体实施方式】
[0017]下面,结合附图来对本发明进行更为详细的说明。
[0018]参见图1,本发明提出的分布式大批量动态任务引擎DTE包括DTE网关服务器(DTEGateway)以及DTE代理服务器(DTE Agent)两部分。其中,DTE网关服务器用于管理DTE代理服务器。DTE代理服务器是用于执行任务的服务器。使用该动态任务引擎的是任务客户端(Task Client)和任务管理器(Task Manager)。其中,当只是需要执行某一类任务时,使用该动态任务引擎的是任务客户端(Task Client);当需要执行某一组任务,并且需要管理这些任务时,使用该动态任务引擎的是任务管理器(Task Manager)。
[0019]该动态任务引擎DTE将任务的执行通过相应的任务脚本及配套的参数来表示。当需要执行任务时,需要同时提供任务的脚本、配套参数、回调地址以及任务的唯一身份识别码(ID)、任务的优先级,并且把任务提交到DTE网关服务器。DTE网关服务器将把任务分配到相对空闲的DTE代理服务器(DTE Agent)去执行。
[0020]DTE代理服务器(DTE Agent)中有一个任务等待队列和执行队列。在DTE代理服务器(DTE Agent)的执行队列空闲时,提交过来的任务会被立即放入到执行队列中执行。如果执行队列已满,则DTE代理服务器(DTE Agent)会把任务放入到等待队列中,根据任务的优先级来排序。在相同优先级的情况下,后放入的任务会在先被执行。当执行某个具体任务时,DTE代理服务器(DTE Agent)会加载可执行此任务脚本的脚本引擎,将任务参数和任务脚本组合起来执行。考虑到大多数情况下需要执行的任务中包含很多子任务,DTE代理服务器(DTE Agent)包含一个子任务执行队列。任务执行队列和子任务执行队列都是以并发的模式来执行,加速任务的完成。同时DTE代理服务器(DTE Agent)支持两种子任务的生成机制。第一种是根据任务中的迭代参数产生批量的子任务,第二种是根据任务中提供的子任务管理脚本动态生成。DTE代理服务器(DTE Agent)会收集该脚本的结果,将结果通过回调地址传递给相应的任务客户端(Task Client)或者任务管理器(Task Manager)。
[0021]本发明提出的分布式大批量动态任务引擎DTE的结构,可以使得当任务的执行内容或方式变更时,只需要变更任务客户端(Task Client)或者任务管理器(Task Manager)中的任务脚本即可,而分布式大批量动态任务引擎(DTE)不需要做出任务修改。同时,在服务器的部署上也相当灵活。不同的任务管理器(Task Manager)或者任务客户端(TaskClient)可以共享一组巨大的DTE代理服务器(DTE Agent)。在特定的情况下,也可以单独部署一组DTE代理服务器(DTE Agent)来处理某些特殊的任务。
[0022]在下文中,将通过具体的实施例来说明本发明。
[0023]实施例一
[0024]实施例一是本发明的分布式大批量动态任务引擎用于酒店系统的数据管理的实例;参见图2,酒店系统需要抓取酒店全年的实时价格,大约需要发送10000000左右的消息给到酒店的系统,把抓取到的价格分类存储到相应的数据仓库中(即图2中的数据仓库A-D)。为实现这一目的,我们采用了三组服务器,第一组服务器负责管理这些抓取任务,考虑不同类型的任务参数不同,且频率不同,分别交由不同的服务器来管理(即图2中的任务管理器A-D)。第二组服务器是DTE网关服务器(DTE Gateway)和DTE代理服务器(DTEAgent)。第三组服务器负责存储抓取数据的数据仓库(即图2中的数据仓库A-D)。当任务到达执行时间,第一组服务器、(即图2中的任务管理器A-D)会把任务及存储结果的数据仓库地址发送给DTE网关服务器,DTE代理服务器执行任务,结束后,把数据回调给指定的数据仓库(即图2中的任务管理器A-D)。由于这些任务中包含的子任务都是预先设定的(静态子任务),DTE网关服务器可以根据设定的参数创建出这些子任务。
[0025]实施例二
[0026]实施例二给出了采用本发明的分布式大批量动态任务引擎来定时同步不同数据仓库中的数据的过程。
[0027]参见图3,当需要定时同步不同数据仓库中的数据时,需要每五分钟检查数据仓库Al、A2、A3和A4是否有数据更新,如果有就需要把这些变化的数据同步到数据仓库B中。数据仓库B的数据来源于多个数据仓库(即数据仓库A1-A4),又只包含其中部分数据,而不是所有。
[0028]为了实现这一功能,任务管理器负责把数据仓库B中的数据分片,根据数据的关键字从数据源定位服务器中来获取数据源,根据数据源的数据关键字的数量分组,把同步脚本,一组关键字加上源数据仓库的地址,以及待同步的数据仓库地址传递给DTE网关服务器(DTE Gateway)和 DTE 代理服务器(DTE Agent)。
[0029]DTE网关服务器会首先调用同步脚本中的管理脚本去源数据仓库(即数据仓库A1-A4)检查变化,如果数据没有变化,则该任务就结束,将这个结果通知给待同步数据仓库。如果数据有变化,就会根据变化的数据关键字动态产生一批子任务,每一个子任务负责同步一个数据关键字,将变化内容更新到待同步数据仓库中。
[0030]实施例三
[0031]实施例三给出了采用本发明的分布式大批量动态任务引擎来从不同网站抓取数据的过程。
[0032]参见图4,当需要到不同的网站抓取数据,经分析后存储到一个统一的数据仓库中时,任务管理器把任务提交给DTE网关服务器(DTE Gateway)和DTE代理服务器(DTEAgent)。DTE代理服务器负责到不同的目标网站(即网站1_4)上抓取数据,最后把结果传递给数据仓库来更新。由于不同的网站上抓取任务的差异,我们将任务执行的脚本直接存储在任务管理器上。当有新的网站需要抓取时只需要将新的任务脚本及配置添加到任务管理器中即可。
[0033]通过上述实施例一至三的说明,本发明提出的分布式大批量动态任务引擎不仅可以并行执行多个任务,而且当任务内容发生改变时,无需更新任务执行的服务器,而仅需对任务脚本进行调整即可实现。
[0034]至此,上述描述已经详细的说明了本发明。然而,前文描述的实施例仅仅只是本发明的优选实施例,其并非用于限定本发明。本领域技术人员在不脱离本发明精神的前提下,可对本发明做任何的修改,而本发明的保护范围由所附的权利要求来限定。
【权利要求】
1.一种分布式大批量动态任务引擎,该分布式大批量动态任务引擎包括DTE网关服务器以及DTE代理服务器两部分;其中,DTE网关服务器用于管理DTE代理服务器,DTE代理服务器是用于执行任务的服务器。
2.根据权利要求1所述的分布式大批量动态任务引擎,其特征在于:当只是需要执行某一类任务时,使用该分布式大批量动态任务引擎的是任务客户端;当需要执行某一组任务,并且需要管理这些任务时,使用该分布式大批量动态任务引擎的是任务管理器。
3.一种采用分布式大批量动态任务引擎处理数据的方法,其特征在于: 所述分布式大批量动态任务引擎包括DTE网关服务器以及DTE代理服务器两部分;其中,DTE网关服务器用于管理DTE代理服务器,DTE代理服务器是用于执行任务的服务器; 当需要执行任务时,任务管理器将任务提交到DTE网关服务器,DTE网关服务器把任务分配到相对空闲的DTE代理服务器去执行;在DTE代理服务器的执行队列空闲时,提交过来的任务会被立即放入到执行队列中执行,如果执行队列已满,则DTE代理服务器会把任务放入到等待队列中,根据任务的优先级来排序,在相同优先级的情况下,后放入的任务会在先被执行,当执行某个具体任务时,DTE代理服务器会加载可执行此任务脚本的脚本引擎,将任务参数和任务脚本组合起来执行; DTE代理服务器会收集该脚本的结果,将结果通过回调地址传递给相应的任务管理器。
4.根据权利要求3所述的方法,其特征在于: 如果需要执行的任务中包含很多子任务,则DTE代理服务器还包含一个子任务执行队列;任务执行队列和子任务执行队列以并发的模式来执行,加速任务的完成。
5.根据权利要求4所述的方法,其特征在于: 所述DTE代理服务器支持两种子任务的生成机制,第一种是根据任务中的迭代参数产生批量的子任务,第二种是根据任务中提供的子任务管理脚本动态生成。
6.根据权利要求5所述的方法,其特征在于: 当任务的执行内容或方式变更时,只需要变更任务客户端或者任务管理器中的任务脚本,而分布式大批量动态任务引擎不需要做出任务修改。
【文档编号】G06F17/30GK103678488SQ201310556948
【公开日】2014年3月26日 申请日期:2013年11月12日 优先权日:2013年11月12日
【发明者】杨洋 申请人:德比软件(上海)有限公司