一种在集群环境下实现任务的方法、装置及系统的制作方法

文档序号:7669347阅读:161来源:国知局
专利名称:一种在集群环境下实现任务的方法、装置及系统的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及一种在集群环境下实现任务的方 法、系统及装置。
背景技术
为了提高系统的容灾能力和性能,集群技术被越来越多地应用。但是许 多以前单机版的功能一旦迁移到集群环境下,就可能会出现问题。如实现任 务功能,因为集群时各个服务器节点的应用共享数据库(如附图1所示),因 此,处于不同服务器中的多个应用可能同时获取同 一个数据库中的同 一个任 务(比如启动或重启过程),这样将使得一个任务可能会被多个应用重复加 载,从而导致一个任务被错误地变成了多个任务在执行。
为了避免上述错误场景的出现,现有的处理方案是在任务的数据库表中 增加一个字段用来标识该任务是否已经启动(如是否已经存在内存中),若 该任务已经启动,则其他应用不能启动该任务,从而避免了上述错误场景的 出现。
上述现有技术中采用的解决问题的系统结构复杂,且很难保证可以准确 标记任务的启动状态,例如,应用服务器启动后, 一个应用从数据库中取到 一个任务,做一个标记,在执行取任务与做标记这两个操作之间可能存在一 个延迟,而在该延迟的时间段内另一个应用将有可能也取到了同一个任务, 进而导致一个任务被多次应用启动。
进一步地,在上述现有技术中,如果某个应用服务器发生异常或关闭,现有的系统不能够将任务自动迁移到其它正常工作的应用服务器上,使得发 生异常或关闭的系统中任务无法被应用。
另外,在上述现有技术中,当某一个应用先行启动后,可能会将所有的 任务均加载到某一应用上,导致该应用成为整个集群的性能瓶颈。

发明内容
本发明实施例要解决的主要技术问题是提供一种在集群环境下实现任务 的方法、系统及装置,以确保在集群环境下,任务不会被重复加载。
本发明实施例提供了 一种在集群环境下实现任务的方法,包括 由指定的应用从数据库中获取任务;
所述指定的应用加载获取的所述任务,创建任务实例,并将所述任务实
例保存在该指定的应用所属服务器内存中。
本发明实施例还提供了一种实现任务的装置,包括
判断单元,判断作为指定的应用是否需要执行任务加载操作;
任务处理单元,用于在所述判断单元确定作为指定的应用需要执行任务
加载操作后,获取并加载任务,创建任务实例,将所述任务实例保存在该装
置所属服务器内存中。
本发明实施例还提供了一种在集群环境下实现任务的系统,包括 数据库,用于保存任务及其时间戳;
任务实现装置,用于在判断到需要执行任务加载操作时,获取并加载保 存在所述数据库中的任务,创建任务实例,将所述任务实例保存在该装置所 属服务器内存中。
由上述本发明实施例提供的技术方案可以看出,在本发明实施例中,通 过在集群中,指定负责获取数据库中任务的应用,并由指定的应用加载获取 的任务,创建任务实例,并将任务实例保存在该应用所属服务器内存中,以在集群环境下避免出现数据库中任务被多次加载的情况。


图1为现有技术中在集群环境下实现任务的示意图; 图2为本发明实施例一提供的方法具体实现流程示意图; 图3为本发明实施例一提供的方法中实现扫描线程示意图; 图4为本发明实施例一提供的方法具体实现部署示意图一; 图5为本发明实施例一提供的方法具体实现部署示意图二; 图6为本发明实施例二提供的系统具体实现结构示意图。
具体实施例方式
本发明实施例提供了 一种在集群环境下实现任务的方法。所述方法中, 首先可以由指定的应用从数据库中获取任务,并加载获取的所述任务,创建 任务实例(即通过加载执行相应任务得到所述任务实例),将所述任务实例 保存在该指定的应用所属服务器内存中。然后,所述指定的应用启动扫描线 程,将数据库中的发生变化或新增的任务同步到所述服务器内存中,从而在 集群环境下,正确的实现任务操作。
本发明实施例提供的在集群环境下实现任务的方法,进一步还包括设置 启动模式,即设置所述指定的应用的步骤,且该步骤包括
将集群环境中的一个或多个应用设置为任务调度启动-漠式,所述设置为 任务调度启动模式的应用作为所述指定的应用;
将集群环境中的其他应用设置为节点启动模式,所述设置为节点启动模 式的应用用于创建任务,将创建的任务保存在数据库中,并对数据库中的任 务进行更新操作。
下面将结合附图对本发明实施例作进一步地详细描述。
本发明实施例提供的在集群环境下实现任务的方案是在现有单机任务管理基础上,提出了任务调度的概念,通过为集群中不同服务器中的应用设置 不同的启动模式,从而使得在集群环境下,仅由指定的应用执行相应的任务 加载的操作,进而可以正确地实现相应的任务,如定时任务或其他各种任务 等,解决现有技术中存在的弊端。
进一步地,本发明实施例中所涉及的启动模式具体可以为单机启动模
式、节点启动模式、任务调度启动模式,其中
单机启动模式,通常应用于非集群环境下,工作在单机启动模式下的应 用,单独完成任务的加载、执行和生命周期(即任务的生存周期)的管理, 可以理解为与现有技术处理流程类似,因此,本实施例不在赘述;
节点启动模式,通常应用于集群环境下,工作在节点启动模式下的应用 不再完成任务的加载、执行和生命周期的管理,只是涉及客户端对数据库中 任务的创建,以及增加、删除或修改等更新操作,或者其它操作。因此,工 作在节点启动模式下的应用在启动时,不会启动数据库中任务,不会发生抢 占系统资源的情况,通常,可以将集群内大多数服务器中的应用被设置成节 点启动模式;
任务调度启动模式,通常应用于集群环境下,工作在任务调度启动模式 下的应用,可以完成任务的加载、执行和生命周期的管理,是集群内的核心 应用;且工作在任务调度模式下的应用,还可以不再涉及任务的创建,以及 客户端对任务的更新处理操作。
在本发明实施例具体应用过程中,可以预先通过配置文件对集群中的不 同服务器中的应用设置不同的启动模式,之后,还可以根据需要对相应的设 置进行更改。
在上述任务调度启动模式下,相应的应用可以通过扫描线程对数据库中 的任务进行处理,具体的处理方式可以包括由工作在任务调度启动模式的 应用,在完成任务的加载及任务实例的创建后,扫描数据库中任务的时间戳,并将时间戳大于已被获取的任务的启动加载时间的任务从数据库过滤出 来,同步到该应用所属服务器内存中。
在上述扫描线程中,具体可以可按一定周期,即定时扫描,也可以根据 需要,进行任意设定模式的扫描操作。
在上述扫描线程中涉及的时间戳,通常是指在数据库中,任务被创建, 或者,任务发生启动、增加、删除或修改操作,或者其它操作的时间,通常 可以理解为,集群内工作在节点启动模式的应用根据客户端的要求创建任务 的时间,或者根据客户端的要求,对已经保存在数据库中的任务进行增加、 删除或修 丈操作的时间,或者如任务被启动的时间等其它操作的时间。
当扫描到的任务时间戳大于已经被加载的任务启动时间,则表明在数据 库中保存的任务被加载后,客户端通过节点启动模式的应用对数据库中的任 务进行了增加、删除或修改等操作,这意味着已经被加载的任务存在变更的 可能,或者数据库中出现新的任务。所以,当被设置成任务调度启动模式的 应用扫描到上述情况时,需要将已经创建的任务实例,与数据库中发生变更 的任务,或新增加的任务进行同步操作,从而确保数据库中的任务被正确的 执行。
存的任务实例相比较,根据比较结果采用的处理如下
(1) 如果二者的任务标识一致,即在所述服务器内存中找到与所述过滤 出来的任务相同的任务标识,则更新所迷服务器内存中任务实例的属性,或 者,若从数据库中过滤出的所述任务处于删除状态,则删除服务器内存对应 的任务实例;其中,所述任务标识用于唯一标识一任务;
(2) 如果在所述服务器内存中没有找到与所述过滤出来的任务相同的任 务标识,则在服务器内存中创建该新任务的任务实例。
本实施例提供的在集群环境下实现任务的方法,具体实现过程可以如附图2所示,包括
步骤21,为集群中,分属于不同服务器中的应用设置启动模式。 如上所述,在本发明实施例具体应用过程中,可以预先对集群中,不同
服务器中的应用设置不同启动模式,并根据需要进行更改,且启动模式具体
可以包括单机启动模式、节点启动模式或任务调度启动模式,各模式下具
体需要实现的功能前面已经描述在此不再详述。
步骤22,被设置为节点启动模式的应用根据客户端的任务指令创建并保
存任务。
被设置为节点启动模式的应用,根据客户端的任务指令创建任务,比如 在某日二十点开通300张电话卡,并将该任务保存在数据库中。
在保存任务后,还要在数据库中记录增加、删除或修改任务的时间戳等 信息。
需要说明的是,步骤22与步骤21在执行过程中,无先后顺序之分。 步骤23,当应用启动时,根据预先设置的启动模式,由设置为指定启动 模式(即设置为任务调度启动模式)的应用从数据库中获取任务。
当集群中,分属于不同服务器的应用启动或重启时,应用首先要读取自 身的启动模式,如节点启动模式或任务调度启动模式,以便于根据相应的启 动才莫式l丸行相应处理
(1 )若应用读取自身的启动模式为节点启动模式,此时,该应用不再管 理任务的加载、执行和生命周期管理,即不获取数据库中的任务,只涉及根 据客户的要求,创建并保存任务,以及对数据库中的任务进行更新,即对数 据库中的任务进行增加、修改或删除操作,或者其它操作;比如,客户要求 更改开通300张电话的时间,或者开通电话卡的数量由300变成500,或者取 消这次任务,或者增加了一个新任务,则工作在节点启动模式的应用根据客 户的要求,对数据库中的任务进行增加、删除或修改操作,此时,在数据库中需要记录上述增加、删除或修改任务的时间戳,以便于准确处理相应的任 务;
(2)若应用读取自身的启动模式为任务调度模式,则该应用荻取数据库
中的任务,并执行步骤24。
步骤24,被设置为任务调度模式的应用加载获取的任务,创建任务实 例,并保存在该应用所属服务器内存中。
即工作在任务调度模式下的应用加载在数据库中获取的任务,创建任务 实例,如上述在某日二十点开通300张电话卡;并将创建的任务实例保存在该 应用所属服务器的内存中。
步骤25,被设置为任务调度模式的应用启动扫描线程,同步数据库中的 任务到服务器内存中。
当所述指定的应用根据在数据库中获取任务,创建任务实例后,还可以 启动扫描线程功能,按预先制订的时间周期,扫描数据库中任务的时间戳。 并把时间戳大于已被启动加载的任务的启动加载的时间的任务,从数据库中 过滤出来,并与在服务器内存中的任务实例进行同步操作。
描述过滤处理流程如附图3所示,具体可以包括
步骤251,判断扫描时间是否到来。
若扫描时间到来,则执行步骤252,否者,循环执行步骤251,等待扫描 时间的到来。
步骤252,扫描数据库。
若扫描时间到来,则开始扫描数据库中任务的时间戳。
步骤253,判断时间戳是否大于任务启动加载时间。
若应用扫描到数据库中任务的时间戳大于该应用所属服务器内存保存的 任务实例所对应的任务的启动加载时间,则执行步骤254,否则,执行步骤 251。步骤254,将数据库中任务过滤出来。
将数据库中,满足步骤253判断条件的任务过滤出来,即获取满足条件的 任务。
步骤255,将过滤出来的任务与内存中任务实例进行同步操作。 将过滤出来的任务,与应用所属服务器内存中的任务实例进行同步操 作。且同步操作具体过程可以为将过滤出来的任务与服务器内存中保存的 任务实例相比较,如果二者的任务标识一致,则更新所述服务器内存中任务 实例的属性,或者,若从数据库中过滤出的所述任务处于删除状态,则删除 服务器内存对应的任务实例;如果在所述服务器内存中没有找到与所述过滤 出来的任务相同的任务标识,则在服务器内存中创建该新任务的任务实例。 通过上述扫描线程可以实现任务的更新操作,如删除或修改等。 在完成上述操作后,重新执行步骤251,执行下一次的处理流程。
本发明实施例提供的在集群环境下实现任务的方法,通过为集群中,不 同服务器中的应用设置不同的启动模式,且工作在任务调度启动模式下的应 用只负责完成任务的加载、执行和生命周期的管理,不再涉及客户端对任务 的创建及更新处理操作,这样即使在某一个设置为任务调度启动模式的应用 先行启动,且系统将所有的任务均加载到该应用上,也由于该应用仅负责任 务的加载操作及加载后任务的执行、管理操作,不涉及其他业务的处理,因 此,在该应用处不会成为整个集群系统的性能瓶颈。
而且,工作在节点启动模式下的应用,只涉及创建任务,以及客户端对 数据库中任务的增加、删除或修改等操作,不再管理任务的加载、执行和生 命周期的管理,因此,工作在节点启动模式下的应用在启动时,不会启动数 据库中任务,不会发生抢占系统资源的情况,这样就避免了一个任务被多个 应用重复加载的情况。
本发明实施例提供的在集群环境下实现任务的方法,具体应用过程可以如附图4所示,将集群中的业务应用服务器中的应用设置成节点启动模式,将 独立于集群环境下的应用服务器中的应用设置成任务调度启动模式,即让应 用服务器成为任务调度服务器。而且,如果出于集群容灾能力的考虑,可以 将任务调度服务器设置为多机,较佳的方式设置为双机,且双机互为备份, 即一主一备,这样既可以避免发生当应用启动时抢占系统资源的情况,又可 以增加系统在容灾方面安全系数。
本实施例提供的在集群环境下实现任务的方法,在具体应用过程中,如 果出于硬件成本的考虑,则可以把集群环境下的某一台业务应用服务器配置
成任务调度服务器,如附图5所示,这样,相对于附图4所示的配置方式,降 低了集群的构造成本。
本发明实施例还提供了一种在集群环境下实现任务的系统,如附图6所 示,该系统包括启动模式设置装置601,数据库602,被设置为节点启动模式 的任务创建及更新装置603以及被设置为任务调度启动模式任务实现装置 607,其中
启动模式设置装置601,用于为集群中,与任务相关联的装置(603和/或 607)设置启动模式。
启动模式设置装置601设置的启动模式具体可以包括单机启动模式,节 点启动模式,任务调度启动模式。其中,由于单机启动模式数据非集群环境 下工作模式,因此本发明实施例不再赘述。
启动模式设置装置601可以预先为系统中,与任务相关联的装置(603和/ 或607)设置不同的启动模式,并根据需要进行修改。
数据库602,用于保存被创建的任务及其时间戳。
被设置为节点启动模式的任务创建及更新装置603,用于根据用户的信 息,创建并保存任务至数据库602中,并对数据库中的任务进行更新操作。 任务创建及更新装置603包括更新判断单元604,用于在任务创建及更新装置603启动时,判断装置 603的启动模式是否为节点启动模式,即判断装置603是否需要创建任务和/或 对数据库603中的任务进行更新操作。
任务创建及保存单元605,用于在更新判断单元604确定装置603需要创 建任务时,根据用户的要求创建任务,并将创建的任务保存在数据库中602 中。
任务更新操作单元606,用于在更新判断单元604确定装置603需要对数 据库602中的任务进行更新操作后,根据用户的要求,对数据库602中的任务 进行更新操作,具体可以包括增加、删除或修改数据库602中的任务。
本发明实施例提供的在集群环境下实现任务的系统中,可以存在一个, 或者多个装置603,但装置603不再完成任务的加载、执行和生命周期的管 理,只是涉及客户端对数据库602中任务的创建、增加、删除或修改操作,或 者其它操作,因此,装置603不会启动数据库602中任务,避免了一个任务被 多个应用重复加载的情况。
被设置为任务调度启动模式的任务实现装置607,用于在判断到需要执行 任务加载操作时,获取并加载保存在所述数据库602中的任务,创建任务实 例,将所述任务实例保存在该装置607所属服务器内存中。并启动扫描线程, 将数据库中的任务同步到所述服务器内存中。
任务实现装置607包括:'
判断单元608,用于在任务实现装置607启动时,判断装置607的启动才莫 式是否为任务调度启动模式,即判断装置607是否需要执行数据库602中的任务。
任务处理单元609,用于在所述判断单元608确定需要执行任务加载操作 后,获取并加载任务,创建任务实例,将所述任务实例保存在该装置所属服 务器内存中。可选地,该实时任务实现装置607还可以包括同步处理单元610,用于启 动扫描线程,将数据库602中的任务同步到所述服务器内存中。 该同步处理单元610具体可以包括
扫描过滤单元611,用于扫描数据库602中任务的时间戳,并将数据库 602中保存的任务的时间戳,大于所述任务处理单元609获取所述数据库中任 务的时间的任务过滤出来。
同步单元612,用于对扫描过滤单元611过滤出的任务,与服务器内存保 存的任务实例进行同步操作。
同步单元612具体操作过程可以为将扫描过滤单元611过滤出来的任务 与服务器内存中保存的任务实例相比较,如果二者的任务标识一致,则更新 所述服务器内存中任务实例的属性,或者,若扫描过滤单元611从数据库602 中过滤出的所述任务处于删除状态,则删除服务器内存对应的任务实例;如 果在所述服务器内存中没有找到与所述过滤出来的任务相同的任务标识,则 在服务器内存中创建该新任务的任务实例。
本发明实施例提供的在集群环境下实现任务的系统中,可以存在一个或 多个任务实现装置607,较佳的方式为设置互为备份的双机模式,即一主一 备,这样既可以避免发生现有技术中存在的,当应用启动时抢占系统资源的 情况,又可以增加系统在容灾方面安全系数。而且任务实现装置607只负责完 成任务的加载、执行和生命周期的管理,不再涉及客户端对任务的更新处理 操作,这样就避免了当某一个应用先行启动时,系统可能就会把所有的有关 任务的操作加载到这个应用上,造成这个应用可能就会成为整个集群的性能 瓶颈的问题。
本发明实施例中提供的在集群环境下实现任务的系统中的任务创建及更 新装置603、任务实现装置607可以设置于服务器中。
综上所述,本发明实施例的实现有效解决了现有技术中存在的问题,具体可以产生的有益效果包括
(1) 由于采用了仅由设置为任务调度模式的应用实现任务的加载操作, 因此,若仅设置一个应用为任务调度模式,则不再会出现一个任务被多个应
用加载的情况;
(2) 在本发明实施例中,若某个应用服务器发生异常或关闭,则可以通
过重新设置其他应用服务器中的应用的启动模式的方式将数据库中的任务自 动迁移到其它正常工作的应用服务器上,从而保证相应的任务仍然可以被正
常应用;
(3) 在本发明实施例中,由于可以通过灵活地设置选择加载任务的服务 器中的应用,且该应用仅负责任务的加载操作,因此,可以有效避免将所有 的任务均加载到某一处理能力较弱或处理任务繁重的应用上,导致该应用成 为整个集群的性能瓶颈。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不 局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可 轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明 的保护范围应该以权利要求的保护范围为准。
权利要求
1、一种在集群环境下实现任务的方法,其特征在于,包括由指定的应用从数据库中获取任务;所述指定的应用加载获取的所述任务,创建任务实例,并将所述任务实例保存在该指定的应用所属服务器内存中。
2、 根据权利要求1所述的方法,其特征在于,在所述指定的应用完成加 载及创建操作后,该方法还包括将数据库中发生变化或新增的任务同步到所述服务器内存中。
3、 根据权利要求2所述的方法,其特征在于,该方法还包括设置所述指 定的应用的步骤,且该步骤包括将集群环境中的一个或多个应用设置为任务调度启动模式,所述设置为 任务调度启动模式的应用作为所述指定的应用;将集群环境中的其他应用设置为节点启动模式,所述设置为节点启动模 式的应用用于对数据库中的任务进行更新操作。
4、 根据权利要求3所述的方法,其特征在于,在由指定的应用从数据库 中获取任务之前还包括由设置为节点启动模式的应用创建任务,并保存在数据库中,同时保存 任务的时间戳,其中,所述任务的时间戳为创建、启动、增加、删除或修改 任务的操作时间。
5、 根据权利要求4所述的方法,其特征在于,所述将数据库中发生变化 或新增的任务同步到所述服务器内存中的过程包括启动扫描线程,扫描数据库中保存的任务的时间戳,并把时间戳大于所 述已被获取的任务的启动加载时间的任务从数据库过滤出来,同步到所述服 务器内存中。
6、 根据权利要求5所述的方法,其特征在于,所述将过滤出来的任务同步到所述服务器内存中的过程包括任务标识一致,更新所述服务器内存中任务实例的属性,或者,若从数据库 中过滤出的所述任务处于删除状态,则删除服务器内存对应的任务实例;如 果在所述服务器内存中没有找到与所述过滤出来的任务相同的任务标识,则 在服务器内存中创建该新任务的任务实例。
7、 一种实现任务的装置,其特征在于,包括判断单元,判断作为指定的应用是否需要执行任务加载操作; 任务处理单元,用于在所述判断单元确定作为指定的应用需要执行任务加载操作后,获取并加载任务,创建任务实例,将所述任务实例保存在该装置所属服务器内存中。
8、 根据权利要求7所述的装置,其特征在于,该装置还包括同步处理单元,用于将数据库中的任务同步到所述服务器内存中。
9、 根据权利要求8所述的装置,其特征在于,所述同步处理单元具体包括扫描过滤单元,用于扫描数据库中任务的时间戳,并将数据库中保存的 任务的时间戳大于所述任务处理单元获取所述数据库中任务的时间的任务过 滤出来;同步单元,用于对扫描过滤单元过滤出的所述任务,与所述服务器内存 保存的任务实例进行同步操作。
10、 一种在集群环境下实现任务的系统,其特征在于,包括 数据库,用于保存任务及其时间戳;任务实现装置,用于在判断到需要执行任务加载操作时,获取并加载保 存在所述数据库中的任务,创建任务实例,将所述任务实例保存在该装置所属服务器内存中。
11、 根据权利要求10所述的系统,其特征在于,所述系统还包括 任务创建及更新装置,用于创建任务并保存任务至所述数据库中,并对所述数据库中任务进行更新操:作;启动模式设置装置,用于为系统中,与任务相关的装置设置启动模式, 且所述工作模式包括任务调度启动模式、节点启动模式、单机模式。
12、 根据权利要求11所述的系统,其特征在于,所述任务更新装置包括任务创建保存单元,用于创建任务,并将创建的任务保存在所述数据库中; 、更新判断单元,用于判断是否执行对数据库中任务进行更新操作; 任务更新操作单元,用于在所述更新判断单元确定需要进行更新操作时,对数据库中任务进行更新操作。
全文摘要
本发明涉及一种在集群环境下实现任务的方法、装置及系统。在本发明实施例中,由集群环境中指定的应用从数据库中获取任务,并加载获取的所述任务,创建任务实例,并将所述任务实例保存在该指定的应用所属服务器内存中,从而在避免了集群环境下,出现数据库中任务被多次加载的情况。
文档编号H04L12/24GK101471810SQ200710305099
公开日2009年7月1日 申请日期2007年12月28日 优先权日2007年12月28日
发明者章志国 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1