集群系统定时任务调度方法及集群系统与流程

文档序号:19737362发布日期:2020-01-18 04:41阅读:351来源:国知局
集群系统定时任务调度方法及集群系统与流程

本发明涉及计算机软件领域,尤其是一种集群系统定时任务调度方法及集群系统。



背景技术:

在软件系统应用中,为了提高系统的性能、可靠性、可用性等,用户会使用集群部署的方式,把一个软件程序部署到多台机器上运行。当用户使用定时任务,即在约定某个时间点上执行某个软件程序,例如每天零时的时间点执行数据库备份、报表统计等操作均属于定时任务,由于集群系统部署的原因,程序会被部署到多台机器的软件执行,同时被多次执行,这样会导致系统资源的浪费,并且由于重复执行造成数据和程序错误等问题。

如何在集群环境下执行定时任务,目前有一些实现方案,比较常见的是单独部署定时任务服务器,这种情况下集群系统需要添加外部接口,以便通过外部接口访问执行的目标程序,同时开发定时任务服务器,并在该服务器上配置时间规则,定时的访问上述外部接口进行定时任务执行,由于外部接口的访问只会在集群系统中的某个节点进行接收和处理,所以不会出现多个节点重复执行同一个定时任务的现象。

但是该实现方案有较为明显的缺点,1)需要添加定时任务服务器,这会增加系统复杂度;2)除了在目标系统上进行开发,还需要在定时任务服务器上进行开发,增加开发和维护工作量;3)定时任务封装成外部接口,会降低系统安全性;4)需要额外的开发工作来保障定时任务服务器自身的可靠性和可用性。因此需要提出一种集群系统定时任务调度方法,能够在集群系统环境下,无需额外开发新系统,对系统侵入性小,同时保证集群系统安全性和可靠性的前提下,解决定时任务被多个集群节点重复执行的问题。



技术实现要素:

本发明实施例旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明实施例的目的是提供一种保证集群系统安全性和可靠性的集群系统定时任务调度方法。

本发明实施例所采用的技术方案是:

第一方面,本发明实施例提供一种集群系统定时任务调度方法,包括:

获取集群节点的节点编号;

所述集群节点访问分布式缓存服务申请凭证;

申请到所述凭证的集群节点作为执行节点获得执行权限执行定时任务。

进一步地,所述执行节点申请到所述凭证后更新持有凭证标记。

进一步地,所述凭证的组成包括:节点标识和凭证失效时间,所述节点标识为所述执行节点的节点编号。

进一步地,所述执行节点在所述凭证失效时间到达之前进行续期更新所述凭证失效时间。

进一步地,当所述执行节点出现宕机情况时,所述执行节点的凭证过期后,每个所述集群节点重新申请凭证。

进一步地,所述集群系统为redis集群系统。

第二方面,本发明实施例还提供一种集群系统定时任务调度装置,包括:

获取节点编号模块:用于获取集群节点的节点编号;

申请凭证模块:用于所述集群节点访问分布式缓存服务申请凭证;

执行定时任务模块:用于申请到所述凭证的集群节点作为执行节点获得执行权限执行定时任务。

第三方面,本发明实施例还提供一种集群系统,所述集群系统包括多个集群节点,每个集群节点有唯一节点编号,当所述集群系统发布定时任务时,根据如第一方面任一项所述的一种集群系统定时任务调度方法在所述集群节点中选择执行节点执行所述定时任务。

第四方面,本发明实施例提供一种集群系统定时任务调度设备,包括:

至少一个处理器,以及与所述至少一个处理器通信连接的存储器;

其中,所述处理器通过调用所述存储器中存储的计算机程序,用于执行如第一方面任一项所述的方法。

第五方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如第一方面任一项所述的方法。

本发明实施例的有益效果是:

本发明实施例通过获取集群节点的节点编号,并在每个集群节点上启动逻辑控制定时任务,利用逻辑控制定时任务访问分布式缓存服务申请凭证,申请到凭证的集群节点作为执行节点获得执行权限执行定时任务。克服了现有技术中定时任务被多个集群节点重复执行的问题,能够在原有集群系统环境下实现,无需额外开发新系统,对系统侵入性小,同时保证集群系统安全性和可靠性,并且通过凭证来判断执行权限,降低了定时任务调度难度。

进一步地,本发明实施例中申请到凭证的执行节点在凭证失效前可以选择一直续期,保证该节点一直作为执行节点执行定时任务,效果等同于单机执行,所以能够有效解决现有集群节点对同一定时任务重复执行的问题。

可广泛应用于分布式架构集群系统中。

附图说明

图1是本发明中集群系统定时任务调度方法的一具体实施例的实现流程图;

图2是本发明中集群系统定时任务调度方法的一具体实施例的具体流程图;

图3是本发明中集群系统定时任务调度装置的一具体实施例的结构框图。

具体实施方式

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

实施例一:

本发明实施例一提供一种集群系统定时任务调度方法,定时任务可以是在预设时间触发执行的任务,也可以是按预设周期触发执行的任务,其中,定时任务的触发是指满足该定时任务的执行条件时开始执行该定时任务,例如,当到达该定时任务的预设的触发时间,该定时任务开始执行。

在现有的各种系统,如管理系统等,定时任务都是十分常见的功能类型。例如,定时任务可以为定期的对数据库中新获得的数据进行压缩、每天的固定时刻对数据进行一次筛选、每天零时的时间点执行数据库备份、报表统计等。定时任务被创建后,创建该定时任务的服务器或应用,可以自动启动一个线程或进程使该定时任务在指定的触发时刻或按一定的周期执行。

图1为本实施例提供的集群系统定时任务调度方法的实现流程图,如图1所示,该方法包括以下步骤:

s1:获取集群节点的节点编号。

本实施例中,给集群中每个节点进行编号,得到每个集群节点的节点编号,用于区分不同的集群节点,例如通过随机生成的方式为每一个集群节点生成一个唯一身份标识,同时每个集群节点上启动逻辑控制定时任务,主要用于进行凭证申请、凭证续期、定时任务执行等操作。

s2:集群节点定时访问分布式缓存服务申请凭证。

进一步地,凭证是唯一的,是一种包含节点标识和凭证失效时间的缓存数据,其中,节点标识为成功申请到凭证的集群节点的节点编号。

本实施例的集群环境下,各集群节点分布式缓存服务申请凭证,缓存服务器维护节点编号列表,同时利用分布式缓存服务的消息发布和订阅功能,各集群节点向分布式缓存服务订阅定时任务消息。

s3:申请到凭证的集群节点作为执行节点获得执行权限执行定时任务,具体的,集群系统中的多个集群节点谁先成功申请到凭证,谁就作为执行节点获得执行定时任务的权限执行定时任务。

本实施例的实现方式简单,不需要额外开发系统,因此集群系统复杂度低,开发成本低,同时由于不需要在多个系统上进行开发和维护代码,所以开发效率高,并且由于不需要把定时任务执行程序进行外部接口封装,提高了系统安全。

进一步地,执行节点可以在凭证失效时间到达之前进行续期更新凭证失效时间,即在凭证失效之前采用续期的方式重新修改凭证失效时间,一旦某个集群节点成功申请到凭证后,通过续期的方式,该集群节点能够一直持有凭证,并且一直有权限执行定时任务,效果等同于单机执行,而其他集群节点由于没有申请到凭证,所以没有权限执行定时任务,避免集群系统下定时任务被多个集群节点重复执行。

进一步地,当执行节点出现宕机情况时,执行节点的凭证由于没有在凭证失效时间前续期,导致凭证过期失效后,其余的集群节点逻辑控制定时任务重新向分布式缓存申请凭证并根据需要进行续期。

上述过程是为了提高集群系统的容错性能,由于本实施例中集群节点持有的凭证包含凭证失效时间的,当执行节点出现故障宕机时,凭证在凭证失效时间来临时失效,这样集群系统中的其它节点能够申请到凭证,并且有权限执行定时任务,保证定时任务不因为执行节点宕机而被延误,保证定时任务继续执行,提高集群系统可靠性。

可以理解的是,本实施例也可以在执行完一次定时任务之后,重新通过申请凭证的方式选择下一次定时任务的执行节点,其目的是保证只有一个执行节点执行定时任务,至于每次是不是同一个节点作为执行节点,本实施例不做限定。

如图2所示,为本实施例提供的集群系统定时任务调度方法的具体流程图。结合图2可知,分为两部分:逻辑控制定时任务部分和定时任务部分,下面以集群节点a和集群节点b进行介绍该流程。

节点a的执行过程如下所述,假设节点a申请时,第一个申请到凭证。

s11:节点a生成节点编号,该节点编号是节点a的唯一标识,例如“a”。

s12:节点a启动凭证申请,同时启动续期定时器,当节点a申请到凭证后,续期定时器检查当前时间,以实现在凭证失效时间之前进行凭证续期。

s13:节点a向分布式缓存申请获取凭证,凭证包括:节点标识和凭证失效时间,可选的,凭证的数据结构包括:键、值和凭证失效时间,其中键为固定值用于进行凭证标识,例如“schedule_key”,值用于保存节点标识,即节点a的节点编号“a”,凭证失效时间可以根据需求进行设置,例如设置为60s。

s14:判断凭证是否被其他节点申请,即键为“schedule_key”的凭证是否存在,存在则进入下一步,否则返回的凭证为空。

s15:生成分布式缓存数据的凭证,同时节点a拥有该凭证。

s16:节点a作为执行节点申请到凭证后更新“持有凭证标记”为“是”。

s21:节点a启动任务定时器,该定时器用于检查当前时间点是否满足定时任务的预设的时间条件,如果满足则进入下一步。

s22:判断节点a是否持有凭证,即判断节点a的“持有凭证标记”是否为“是”,如果结果为“是”,则进入下一步.

s23:节点a执行定时任务。

节点b的执行过程如下所述。

s11:节点b生成节点编号,该节点编号是节点b的唯一标识,例如“b”。

s12:节点b启动凭证申请,同时启动续期定时器,当节点b申请到凭证后,续期定时器检查当前时间,以实现在凭证失效时间之前进行凭证续期。

s13:节点b向分布式缓存申请获取凭证。

s14:节点b检查到凭证已经被节点a申请,即键为“schedule_key”的凭证存在,且该凭证的值为“a”。

s16:节点b更新“持有凭证标记”为“否”。

s21:节点b启动任务定时器,该定时器用于检查当前时间点是否满足定时任务的预设的时间条件,如果满足则进入下一步。

s22:判断得知节点b的“持有凭证标记”为“否”,则节点b不执行任务。

当节点a出现宕机情况时,节点a的凭证由于没有在凭证失效时间前续期,导致凭证过期失效后,节点b可能会申请到凭证并根据需要进行续期,其运行过程与上述节点a的运行过程相同。

进一步地,本实施例中集群系统为redis集群系统,redis集群系统是一种高可用高负载集群方案,应用本实施例的集群系统定时任务调度方法能够提高系统定时任务执行效率。

本实施例通过使用一个凭证和凭证续期任务,使集群系统中只有某个集群节点一直持有凭证,作为执行节点有权限执行定时任务,克服了现有技术中定时任务被多个集群节点重复执行的问题,能够在原有集群系统环境下实现,无需额外开发新系统,对系统侵入性小,同时保证集群系统安全性和可靠性,并且通过凭证来判断执行权限,降低了定时任务调度难度。

实施例二:

本实施例提供一种集群系统定时任务调度装置,用于执行如实施例一任一项所述的方法。如图3所示,为本实施例的集群系统定时任务调度装置结构框图,包括:

获取节点编号模块10:用于获取集群节点的节点编号;

申请凭证模块20:用于集群节点访问分布式缓存服务申请凭证;

执行定时任务模块30:用于申请到凭证的集群节点作为执行节点获得执行权限执行定时任务。

上述中集群系统定时任务调度装置模块的具体细节已经在实施例一对应的集群系统定时任务调度方法中进行了详细的描述,因此此处不再赘述。

实施例三:

本实施例提供一种集群系统,包括多个集群节点,每个集群节点有唯一的节点编号,当集群系统发布定时任务时,根据如实施例一任一项所述的一种集群系统定时任务调度方法在集群节点中选择执行节点执行定时任务。

另外,本发明还提供集群系统定时任务调度设备,包括:

至少一个处理器,以及与所述至少一个处理器通信连接的存储器;

其中,所述处理器通过调用所述存储器中存储的计算机程序,用于执行如实施例一所述的方法。计算机程序即程序代码,当程序代码在集群系统定时任务调度设备上运行时,程序代码用于使集群系统定时任务调度设备执行本说明书上述实施例一部分描述的集群系统定时任务调度方法中的步骤。

另外,本发明还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,其中计算机可执行指令用于使计算机执行如实施例一所述的方法。

可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

本发明实施例通过获取集群节点的节点编号,并在每个集群节点上启动逻辑控制定时任务,利用逻辑控制定时任务访问分布式缓存服务申请凭证,申请到凭证的集群节点作为执行节点获得执行权限执行定时任务。可广泛应用于分布式架构集群系统中。

以上各实施例仅用以说明本发明的技术方案,而非对其限制,尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

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