一种基于分布式缓存的作业调度方法及装置与流程

专利2022-05-09  64


本申请属于分布式技术领域,具体地讲,涉及一种基于分布式缓存的作业调度方法及装置。



背景技术:

目前,分布式系统中批量作业的调度主要为集中管理模式。即由一个集中管理集群通过预先配置好的参数生成作业执行计划,然后不断扫描待执行作业的信息,并根据触发条件、依赖关系等判断各个作业是否满足执行要求,满足的话,则向服务集群的作业执行器发起调度指令。但是,该模式存在以下缺点:

1、由于单一集群管理和调度方式,作业调度的并发度存在性能瓶颈,无法满足分布式系统海量作业调度的要求。

2、作业调度依赖集中管理集群,若该集群异常则所有的服务集群的作业调度无法执行,不满足分布式系统高可用的需求。



技术实现要素:

本申请提供了一种基于分布式缓存的作业调度方法及装置,以至少解决目前的分布式系统中批量作业的调度无法满足海量作业调度的要求并且作业调度依赖集中管理集群,若该集群异常则所有的服务集群的作业调度无法执行的问题。

根据本申请的第一个方面,提供了一种基于分布式缓存的作业调度方法,包括:

根据获取的本集群内待执行作业的作业配置生成作业执行计划;

根据分布式应用系统时间和分布式缓存中其他作业的执行情况查找作业执行计划中满足执行条件的作业;

判断满足执行条件的作业是否可执行;

如果是,则执行该作业,并在分布式缓存中将该作业的执行状态更新为执行成功。

在一实施例中,判断满足执行条件的作业是否可执行,包括:

在分布式缓存中对满足执行条件的作业加装分布式事务锁;

如果加锁失败则放弃执行该作业;

如果加锁成功则执行该作业。

在一实施例中,基于分布式缓存的作业调度方法还包括:

如果加锁成功,则先将分布式缓存中该作业的执行状态更新为处理中,再执行该作业。

在一实施例中,根据获取的本集群内待执行作业的作业配置生成作业执行计划,包括:

获取本集群内待执行作业的作业配置;

根据作业配置获取该作业的前项依赖作业和作业执行时间;

根据前项依赖作业和作业执行时间生成作业执行计划。

在一实施例中,基于分布式缓存的作业调度方法还包括:

如果作业执行失败,则将分布式缓存中的作业执行状态更新为执行失败,并进行报警。

根据本申请的第二个方面,还提供了一种基于分布式缓存的作业调度装置,包括:

作业执行计划生成单元,用于根据获取的本集群内待执行作业的作业配置生成作业执行计划;

查找单元,用于根据分布式应用系统时间和分布式缓存中其他作业的执行情况查找作业执行计划中满足执行条件的作业;

判断单元,用于判断满足执行条件的作业是否可执行;

执行单元,用于如果是,则执行该作业,并在分布式缓存中将该作业的执行状态更新为执行成功。

在一实施例中,判断单元包括:

加锁模块,用于在分布式缓存中对满足执行条件的作业加装分布式事务锁;

加锁失败模块,用于如果加锁失败则放弃执行该作业;

加锁成功模块,用于如果加锁成功则执行该作业。

在一实施例中,基于分布式缓存的作业调度装置还包括:

第一状态更新模块,用于如果加锁成功,则先将分布式缓存中该作业的执行状态更新为处理中,再执行该作业。

在一实施例中,作业执行计划生成单元包括:

获取模块,用于获取本集群内待执行作业的作业配置;

内容获取模块,用于根据作业配置获取该作业的前项依赖作业和作业执行时间;

执行计划生成模块,用于根据前项依赖作业和作业执行时间生成作业执行计划。

在一实施例中,基于分布式缓存的作业调度装置还包括:

第二状态更新模块,用于如果作业执行失败,则将分布式缓存中的作业执行状态更新为执行失败,并进行报警。

根据本申请的第三个方面,还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现基于分布式缓存的作业调度方法的步骤。

根据本申请的第四个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现基于分布式缓存的作业调度方法的步骤。

由上技术方案可知,本申请提供了一种基于分布式缓存的作业调度方法及装置,方法包括:根据获取的本集群内待执行作业的作业配置生成作业执行计划;根据分布式应用系统时间和分布式缓存中其他作业的执行情况查找作业执行计划中满足执行条件的作业;判断满足执行条件的作业是否可执行;如果是,则执行该作业,并在分布式缓存中将该作业的执行状态更新为执行成功。通过分布式公共缓存作为作业执行的信息共享载体,服务集群自行判断批量作业是否需要出发执行,通过该作业的前后项依赖作业的执行情况,判断执行计划时间、前项作业是否已执行、本作业是否已被执行等触发条件,若符合执行条件则更新分布式缓存中的作业执行状态为执行中,并执行作业,并将执行结束后更新的执行结果存储到分布式缓存中,从而实现了各个服务集群作业调度的逻辑和物理上与作业管理集群隔离,作业的调度由服务集群自身触发,不存在单点性能瓶颈,提高了作业调度并发,消除了各服务集群对管理集群的调度依赖,保障了作业调度的高可用性。

附图说明

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

图1为本申请提供的一种基于分布式缓存的作业调度方法流程图。

图2为本申请实施例中判断满足执行条件的作业是否可执行的流程图。

图3为本申请实施例中生成作业执行计划的流程图。

图4为本申请实施例中一种分布式系统的连接示意图。

图5为本申请提供的一种基于分布式缓存的作业调度装置的结构框图。

图6为本申请实施例中判断单元的结构框图。

图7为本申请实施例中作业执行计划生成单元的结构框图

图8为本申请实施例中一种电子设备的结构示意图。

具体实施方式

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

需要说明的是,本申请公开的基于分布式缓存的作业调度方法及装置可以应用于金融领域,也可用于除金融领域之外的其他领域,本申请对公开的基于分布式缓存的作业调度方法及装置的应用领域不做限定。

目前,分布式系统中批量作业的调度主要为集中管理模式。即由一个集中管理集群通过预先配置好的参数生成作业执行计划,然后不断扫描待执行作业的信息,并根据触发条件、依赖关系等判断各个作业是否满足执行要求,满足的话,则向服务集群的作业执行器发起调度指令。但是,该模式存在缺点,例如由于单一集群管理和调度方式,作业调度的并发度存在性能瓶颈,无法满足分布式系统海量作业调度的要求。以及,作业调度依赖集中管理集群,若该集群异常则所有的服务集群的作业调度无法执行,不满足分布式系统高可用的需求。

基于此,本申请分别提供了一种基于分布式缓存的作业调度方法、基于分布式缓存的作业调度装置、电子设备和计算机可读介质,通过分布式公共缓存作为作业执行的信息共享载体,服务集群自行判断批量作业是否需要出发执行,通过该作业的前后项依赖作业的执行情况,判断执行计划时间、前项作业是否已执行、本作业是否已被执行等触发条件,若符合执行条件则更新分布式缓存中的作业执行状态为执行中,并执行作业,并将执行结束后更新的执行结果存储到分布式缓存中,从而实现了各个服务集群作业调度的逻辑和物理上与作业管理集群隔离,作业的调度由服务集群自身触发,不存在单点性能瓶颈,提高了作业调度并发,消除了各服务集群对管理集群的调度依赖,保障了作业调度的高可用性。

基于上述内容,本申请还提供一种用于实现本申请一个或多个实施例中提供的基于分布式缓存的作业调度方法的基于分布式缓存的作业调度装置,该装置可以自行或通过第三方服务器等与客户端设备之间通信连接,并将执行结果返回给客户端。

可以理解的是,所述客户端设备可以包括智能手机、平板电子设备、网络机顶盒、便携式计算机、台式电脑、个人数字助理(pda)、车载设备、智能穿戴设备等。其中,所述智能穿戴设备可以包括智能眼镜、智能手表、智能手环等。

在另一种实际应用情形中,前述的基于分布式缓存的作业调度装置进行基于分布式缓存的作业调度的部分可以在如上述内容的服务器中执行,也可以所有的操作都在所述客户端设备中完成。具体可以根据所述客户端设备的处理能力,以及用户使用场景的限制等进行选择。本申请对此不作限定。若所有的操作都在所述客户端设备中完成,所述客户端设备还可以包括处理器,用于基于分布式缓存的作业调度的具体处理。

上述的客户端设备可以具有通信模块(即通信单元),可以与远程的服务器进行通信连接,实现与所述服务器的数据传输。所述服务器可以包括任务调度中心一侧的服务器,其他的实施场景中也可以包括中间平台的服务器,例如与任务调度中心服务器有通信链接的第三方服务器平台的服务器。所述的服务器可以包括单台计算机设备,也可以包括多个服务器组成的服务器集群,或者分布式装置的服务器结构。

上述服务器与所述客户端设备之间可以使用任何合适的网络协议进行通信,包括在本申请提交日尚未开发出的网络协议。所述网络协议例如可以包括tcp/ip协议、udp/ip协议、http协议、https协议等。当然,所述网络协议例如还可以包括在上述协议之上使用的rpc协议(remoteprocedurecallprotocol,远程过程调用协议)、rest协议(representationalstatetransfer,表述性状态转移协议)等。

具体通过下述各个实施例及应用实例分别进行详细说明。

本申请提供了一种基于分布式缓存的作业调度方法,如图1所示,包括:

s101:根据获取的本集群内待执行作业的作业配置生成作业执行计划。

s102:根据分布式应用系统时间和分布式缓存中其他作业的执行情况查找作业执行计划中满足执行条件的作业。

s103:判断满足执行条件的作业是否可执行。

s104:如果是,则执行该作业,并在分布式缓存中将该作业的执行状态更新为执行成功。

批量作业执行窗口内,服务集群的每个容器扫描执行计划中的各个作业,结合系统时间、分布式缓存中其他作业执行情况等信息判断是否可执行。对于可执行的作业,在分布式缓存中更新执行状态为处理中并开始执行。最后,作业执行结束后把执行结果更新至分布式缓存中。如图4所示,为一种分布式系统的连接示意图。

在一具体实施例中,在分布式应用系统中,不同服务集群的批量作业名称、调度条件、前后项依赖、执行集群等作业配置信息存放在分布式缓存中;同时,每个服务集群可在分布式缓存上查询其他集群的作业执行情况。当批量作业执行周期开始时,每个集群从分布式缓存读取作业配置并生成本服务集群的批量执行计划并持久化到本地数据库或文件中,执行计划中包括各个批量作业的执行时间、前项依赖作业等信息。

在一实施例中,判断满足执行条件的作业是否可执行,如图2所示,包括:

s201:在分布式缓存中对满足执行条件的作业加装分布式事务锁。

s202:如果加锁失败则放弃执行该作业。

s203:如果加锁成功则执行该作业。

分布式系统内各服务集群的容器读取分布式公共缓存中的作业执行计划,选出需本集群执行的作业,获取与本集群作业存在前后项依赖的作业的执行情况;判断执行计划时间、前项执行是否已执行、本作业是否已被执行等触发条件,若符合执行条件则更新分布式缓存中的作业执行状态为执行中,并执行作业;作业执行结束后更新执行结果到分布式缓存中。

在一具体实施例中,将批量作业名称、调度条件、前后项依赖、执行集群等作业配置存放在分布式缓存中,各服务集群读取分布式缓存中的本集群需执行的作业配置,生成作业执行计划并保存在本集群容器中,服务集群的每个容器结合系统时间、分布式缓存中其他作业执行情况等信息查找执行计划中满足执行条件的作业。当查找到满足执行条件的作业后,对于可执行的作业,尝试着在分布式缓存中对该作业加上分布式事务锁,若加锁失败,说明该作业已被其它容器申请执行,则放弃执行该作业,如果加锁成功,则执行该作业。

在一实施例中,基于分布式缓存的作业调度方法还包括:

如果加锁成功,则先将分布式缓存中该作业的执行状态更新为处理中,再执行该作业。

在一具体实施例中,当加锁成功时,先在分布式缓存中更新作业执行状态为处理中,然后开始执行该作业。

在一实施例中,根据获取的本集群内待执行作业的作业配置生成作业执行计划,如图3所示,包括:

s301:获取本集群内待执行作业的作业配置。

s302:根据作业配置获取该作业的前项依赖作业和作业执行时间。

s303:根据前项依赖作业和作业执行时间生成作业执行计划。

在一具体实施例中,首先分布式应用系统中,不同服务集群的批量作业名称、调度条件、前后项依赖、执行集群等作业配置维护分布式缓存中;同时,每个服务集群可在分布式缓存上查询其他集群的作业执行情况。然后批量作业执行周期开始时,每个集群从分布式缓存读取作业配置并生成本服务集群的批量执行计划并持久化到本地数据库或文件中,执行计划中包括各个批量作业的执行时间,前项依赖等信息。

在一实施例中,基于分布式缓存的作业调度方法还包括:

如果作业执行失败,则将分布式缓存中的作业执行状态更新为执行失败,并进行报警。

在一具体实施例中,如果作业正常执行结束,将分布式缓存中的作业执行状态更新为执行成功;如果作业执行异常结束,先将分布式缓存中作业的执行状态更新为执行失败,然后再向监控平台报警。

本申请提供的方法通过分布式公共缓存作为作业执行的信息共享载体,服务集群自行判断批量作业是否需要出发执行,通过该作业的前后项依赖作业的执行情况,判断执行计划时间、前项作业是否已执行、本作业是否已被执行等触发条件,若符合执行条件则更新分布式缓存中的作业执行状态为执行中,并执行作业,并将执行结束后更新的执行结果存储到分布式缓存中,从而实现了各个服务集群作业调度的逻辑和物理上与作业管理集群隔离,作业的调度由服务集群自身触发,不存在单点性能瓶颈,提高了作业调度并发,消除了各服务集群对管理集群的调度依赖,保障了作业调度的高可用性。

基于同一发明构思,本申请实施例还提供了一种基于分布式缓存的作业调度装置,可以用于实现上述实施例中所描述的方法,如下面实施例所述。由于该基于分布式缓存的作业调度装置解决问题的原理与基于分布式缓存的作业调度方法相似。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

根据本申请的第二个方面,还提供了一种基于分布式缓存的作业调度装置,如图5所示,包括:

作业执行计划生成单元501,用于根据获取的本集群内待执行作业的作业配置生成作业执行计划;

查找单元502,用于根据分布式应用系统时间和分布式缓存中其他作业的执行情况查找作业执行计划中满足执行条件的作业;

判断单元503,用于判断满足执行条件的作业是否可执行;

执行单元504,用于如果是,则执行该作业,并在分布式缓存中将该作业的执行状态更新为执行成功。

批量作业执行窗口内,服务集群的每个容器扫描执行计划中的各个作业,结合系统时间、分布式缓存中其他作业执行情况等信息判断是否可执行。对于可执行的作业,在分布式缓存中更新执行状态为处理中并开始执行。最后,作业执行结束后把执行结果更新至分布式缓存中。如图4所示,为一种分布式系统的连接示意图。

在一具体实施例中,在分布式应用系统中,不同服务集群的批量作业名称、调度条件、前后项依赖、执行集群等作业配置信息存放在分布式缓存中;同时,每个服务集群可在分布式缓存上查询其他集群的作业执行情况。当批量作业执行周期开始时,每个集群从分布式缓存读取作业配置并生成本服务集群的批量执行计划并持久化到本地数据库或文件中,执行计划中包括各个批量作业的执行时间、前项依赖作业等信息。

在一实施例中,如图6所示,判断单元503包括:

加锁模块601,用于在分布式缓存中对满足执行条件的作业加装分布式事务锁;

加锁失败模块602,用于如果加锁失败则放弃执行该作业;

加锁成功模块603,用于如果加锁成功则执行该作业。

分布式系统内各服务集群的容器读取分布式公共缓存中的作业执行计划,选出需本集群执行的作业,获取与本集群作业存在前后项依赖的作业的执行情况;判断执行计划时间、前项执行是否已执行、本作业是否已被执行等触发条件,若符合执行条件则更新分布式缓存中的作业执行状态为执行中,并执行作业;作业执行结束后更新执行结果到分布式缓存中。

在一具体实施例中,将批量作业名称、调度条件、前后项依赖、执行集群等作业配置存放在分布式缓存中,各服务集群读取分布式缓存中的本集群需执行的作业配置,生成作业执行计划并保存在本集群容器中,服务集群的每个容器结合系统时间、分布式缓存中其他作业执行情况等信息查找执行计划中满足执行条件的作业。当查找到满足执行条件的作业后,对于可执行的作业,尝试着在分布式缓存中对该作业加上分布式事务锁,若加锁失败,说明该作业已被其它容器申请执行,则放弃执行该作业,如果加锁成功,则执行该作业。

在一实施例中,基于分布式缓存的作业调度装置还包括:

第一状态更新模块,用于如果加锁成功,则先将分布式缓存中该作业的执行状态更新为处理中,再执行该作业。

在一具体实施例中,当加锁成功时,先在分布式缓存中更新作业执行状态为处理中,然后开始执行该作业。

在一实施例中,如图7所示,作业执行计划生成单元501包括:

获取模块701,用于获取本集群内待执行作业的作业配置;

内容获取模块702,用于根据作业配置获取该作业的前项依赖作业和作业执行时间;

执行计划生成模块703,用于根据前项依赖作业和作业执行时间生成作业执行计划。

在一具体实施例中,首先分布式应用系统中,不同服务集群的批量作业名称、调度条件、前后项依赖、执行集群等作业配置维护分布式缓存中;同时,每个服务集群可在分布式缓存上查询其他集群的作业执行情况。然后批量作业执行周期开始时,每个集群从分布式缓存读取作业配置并生成本服务集群的批量执行计划并持久化到本地数据库或文件中,执行计划中包括各个批量作业的执行时间,前项依赖等信息。

在一实施例中,基于分布式缓存的作业调度装置还包括:

第二状态更新模块,用于如果作业执行失败,则将分布式缓存中的作业执行状态更新为执行失败,并进行报警。

在一具体实施例中,如果作业正常执行结束,将分布式缓存中的作业执行状态更新为执行成功;如果作业执行异常结束,先将分布式缓存中作业的执行状态更新为执行失败,然后再向监控平台报警。

本申请提供了一种基于分布式缓存的作业调度装置,通过分布式公共缓存作为作业执行的信息共享载体,服务集群自行判断批量作业是否需要出发执行,通过该作业的前后项依赖作业的执行情况,判断执行计划时间、前项作业是否已执行、本作业是否已被执行等触发条件,若符合执行条件则更新分布式缓存中的作业执行状态为执行中,并执行作业,并将执行结束后更新的执行结果存储到分布式缓存中,从而实现了各个服务集群作业调度的逻辑和物理上与作业管理集群隔离,作业的调度由服务集群自身触发,不存在单点性能瓶颈,提高了作业调度并发,消除了各服务集群对管理集群的调度依赖,保障了作业调度的高可用性。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

本申请的实施例还提供能够实现上述实施例中的方法中全部步骤的一种电子设备的具体实施方式,参见图8,所述电子设备具体包括如下内容:

处理器(processor)801、内存802、通信接口(communicationsinterface)803、总线804和非易失性存储器805;

其中,所述处理器801、内存802、通信接口803通过所述总线804完成相互间的通信;

所述处理器801用于调用所述内存802和非易失性存储器805中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的方法中的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:

s101:根据获取的本集群内待执行作业的作业配置生成作业执行计划。

s102:根据分布式应用系统时间和分布式缓存中其他作业的执行情况查找作业执行计划中满足执行条件的作业。

s103:判断满足执行条件的作业是否可执行。

s104:如果是,则执行该作业,并在分布式缓存中将该作业的执行状态更新为执行成功。

批量作业执行窗口内,服务集群的每个容器扫描执行计划中的各个作业,结合系统时间、分布式缓存中其他作业执行情况等信息判断是否可执行。对于可执行的作业,在分布式缓存中更新执行状态为处理中并开始执行。最后,作业执行结束后把执行结果更新至分布式缓存中。

在一具体实施例中,在分布式应用系统中,不同服务集群的批量作业名称、调度条件、前后项依赖、执行集群等作业配置信息存放在分布式缓存中;同时,每个服务集群可在分布式缓存上查询其他集群的作业执行情况。当批量作业执行周期开始时,每个集群从分布式缓存读取作业配置并生成本服务集群的批量执行计划并持久化到本地数据库或文件中,执行计划中包括各个批量作业的执行时间、前项依赖作业等信息。

通过待执行作业的前后项依赖作业的执行情况,判断执行计划时间、前项作业是否已执行、本作业是否已被执行等触发条件,若符合执行条件则更新分布式缓存中的作业执行状态为执行中,并执行作业,并将执行结束后更新的执行结果存储到分布式缓存中,从而实现了各个服务集群作业调度的逻辑和物理上与作业管理集群隔离,作业的调度由服务集群自身触发,不存在单点性能瓶颈,提高了作业调度并发,消除了各服务集群对管理集群的调度依赖,保障了作业调度的高可用性。

本申请的实施例还提供能够实现上述实施例中的方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:

s101:根据获取的本集群内待执行作业的作业配置生成作业执行计划。

s102:根据分布式应用系统时间和分布式缓存中其他作业的执行情况查找作业执行计划中满足执行条件的作业。

s103:判断满足执行条件的作业是否可执行。

s104:如果是,则执行该作业,并在分布式缓存中将该作业的执行状态更新为执行成功。

批量作业执行窗口内,服务集群的每个容器扫描执行计划中的各个作业,结合系统时间、分布式缓存中其他作业执行情况等信息判断是否可执行。对于可执行的作业,在分布式缓存中更新执行状态为处理中并开始执行。最后,作业执行结束后把执行结果更新至分布式缓存中。

在一具体实施例中,在分布式应用系统中,不同服务集群的批量作业名称、调度条件、前后项依赖、执行集群等作业配置信息存放在分布式缓存中;同时,每个服务集群可在分布式缓存上查询其他集群的作业执行情况。当批量作业执行周期开始时,每个集群从分布式缓存读取作业配置并生成本服务集群的批量执行计划并持久化到本地数据库或文件中,执行计划中包括各个批量作业的执行时间、前项依赖作业等信息。

通过待执行作业的前后项依赖作业的执行情况,判断执行计划时间、前项作业是否已执行、本作业是否已被执行等触发条件,若符合执行条件则更新分布式缓存中的作业执行状态为执行中,并执行作业,并将执行结束后更新的执行结果存储到分布式缓存中,从而实现了各个服务集群作业调度的逻辑和物理上与作业管理集群隔离,作业的调度由服务集群自身触发,不存在单点性能瓶颈,提高了作业调度并发,消除了各服务集群对管理集群的调度依赖,保障了作业调度的高可用性。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件 程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。虽然本说明书实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书实施例的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。以上所述仅为本说明书实施例的实施例而已,并不用于限制本说明书实施例。对于本领域技术人员来说,本说明书实施例可以有各种更改和变化。凡在本说明书实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的权利要求范围之内。


技术特征:

1.一种基于分布式缓存的作业调度方法,其特征在于,包括:

根据获取的本集群内待执行作业的作业配置生成作业执行计划;

根据分布式应用系统时间和分布式缓存中其他作业的执行情况查找所述作业执行计划中满足执行条件的作业;

判断满足执行条件的作业是否可执行;

如果是,则执行该作业,并在分布式缓存中将该作业的执行状态更新为执行成功。

2.根据权利要求1所述的基于分布式缓存的作业调度方法,其特征在于,所述判断满足执行条件的作业是否可执行,包括:

在分布式缓存中对满足执行条件的作业加装分布式事务锁;

如果加锁失败则放弃执行该作业;

如果加锁成功则执行该作业。

3.根据权利要求2所述的基于分布式缓存的作业调度方法,其特征在于,还包括:

如果加锁成功,则先将分布式缓存中该作业的执行状态更新为处理中,再执行该作业。

4.根据权利要求1所述的基于分布式缓存的作业调度方法,其特征在于,所述根据获取的本集群内待执行作业的作业配置生成作业执行计划,包括:

获取本集群内待执行作业的作业配置;

根据所述作业配置获取该作业的前项依赖作业和作业执行时间;

根据所述前项依赖作业和所述作业执行时间生成作业执行计划。

5.根据权利要求3或4所述的基于分布式缓存的作业调度方法,其特征在于,还包括:

如果作业执行失败,则将分布式缓存中的作业执行状态更新为执行失败,并进行报警。

6.一种基于分布式缓存的作业调度装置,其特征在于,包括:

作业执行计划生成单元,用于根据获取的本集群内待执行作业的作业配置生成作业执行计划;

查找单元,用于根据分布式应用系统时间和分布式缓存中其他作业的执行情况查找所述作业执行计划中满足执行条件的作业;

判断单元,用于判断满足执行条件的作业是否可执行;

执行单元,用于如果是,则执行该作业,并在分布式缓存中将该作业的执行状态更新为执行成功。

7.根据权利要求6所述的基于分布式缓存的作业调度装置,其特征在于,所述判断单元包括:

加锁模块,用于在分布式缓存中对满足执行条件的作业加装分布式事务锁;

加锁失败模块,用于如果加锁失败则放弃执行该作业;

加锁成功模块,用于如果加锁成功则执行该作业。

8.根据权利要求7所述的基于分布式缓存的作业调度装置,其特征在于,还包括:

第一状态更新模块,用于如果加锁成功,则先将分布式缓存中该作业的执行状态更新为处理中,再执行该作业。

9.根据权利要求6所述的基于分布式缓存的作业调度装置,其特征在于,所述作业执行计划生成单元包括:

获取模块,用于获取本集群内待执行作业的作业配置;

内容获取模块,用于根据所述作业配置获取该作业的前项依赖作业和作业执行时间;

执行计划生成模块,用于根据所述前项依赖作业和所述作业执行时间生成作业执行计划。

10.根据权利要求8或9所述的基于分布式缓存的作业调度装置,其特征在于,还包括:

第二状态更新模块,用于如果作业执行失败,则将分布式缓存中的作业执行状态更新为执行失败,并进行报警。

11.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至5任一项所述的基于分布式缓存的作业调度方法的步骤。

12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至5任一项所述的基于分布式缓存的作业调度方法的步骤。

技术总结
本发明提供了一种基于分布式缓存的作业调度方法及装置,可用于金融领域,方法包括:根据获取的本集群内待执行作业的作业配置生成作业执行计划;根据分布式应用系统时间和分布式缓存中其他作业的执行情况查找作业执行计划中满足执行条件的作业;判断满足执行条件的作业是否可执行;如果是,则执行该作业,并在分布式缓存中将该作业的执行状态更新为执行成功。本申请实现了各个服务集群作业调度的逻辑和物理上与作业管理集群隔离,作业的调度由服务集群自身触发,不存在单点性能瓶颈,提高了作业调度并发,消除了各服务集群对管理集群的调度依赖,保障了作业调度的高可用性。

技术研发人员:苏泽华;阳理理;苏宇;毛淑平
受保护的技术使用者:中国工商银行股份有限公司
技术研发日:2021.05.28
技术公布日:2021.08.03

转载请注明原文地址:https://doc.8miu.com/read-9588.html

最新回复(0)