本发明专利技术公开了一种分布式任务处理方法。在初始化时将通用代码分发至集群的其他节点中,当接收到用户提交的任务时,判断与任务对应的任务代码是否包含于集群的通用代码中,并在任务代码包含于通用代码中时直接根据通用代码运行与任务对应的运算逻辑。从而弥补了传统方案中分布式任务运行启动速度和灵活性稳定不可兼得的劣势,在业务变更中能够支持快速响应的同时又保证了整体项目的稳定性。
【技术实现步骤摘要】
本专利技术涉及通信
,特别涉及一种分布式任务处理方法。本专利技术同时还涉及一种分布式任务处理设备。
技术介绍
分布式计算是一种计算方法,和集中式计算是相对的。随着计算技术的发展,有些应用需要非常巨大的计算能力才能完成,如果采用集中式计算,需要耗费相当长的时间来完成。分布式计算将该应用分解成许多小的部分,分配给多台计算机进行处理。这样可以节约整体计算时间,大大提高计算效率。如图1所示,为现有技术中集群执行任务逻辑的流程示意图,在目前使用集群执行任务逻辑时,技术人员首先要先通过用户提交任务到主节点中,接着集群主节点进行代码的分发,分发的目的地是集群的其他的节点。其他节点在接收到运行任务的代码后启动集群机器,初始化任务运行需要的资源。接着集群的节点开始运行主节点分发任务,将集群中任务情况汇报给集群的主节点进行统一汇总,决策。最后任务逻辑运行完毕。需要对资源进行回收释放。通过以上过程可以看出,由于每次提交任务都要启动集群,分发代码,同时要初始化集群的资源,在集群机器中开启处理逻辑真正进行逻辑运算,真正进行业务逻辑处理。整个步骤中每个任务都要耗费大量的非任务逻辑的运行时间,对任务结果实时性要求较高的时候,整个集群的响应延迟较为严重,严重影响用户体验。而为了能实时使用的计算结果,现有的使用场景对于集群运算响应时间的要求越来越高,基于目前采取的分布式任务运算的启动逻辑不能满足实时使用的需求的情况,需要对原本的方式进行优化。对于上述问题,业内常用的方案是抽象出可枚举、不可变运算逻辑接口。使用的方式是将抽象业务逻辑接口部署在集群中。在每个任务编写时调用定义好的接口。任务的逻辑实现就是调用一系列接口的总和,于是任务在运行时就能等于调用一系列的运算接口。然而,专利技术人在实现本专利技术的过程中发现,在使用业内常用抽象出可枚举、不可变运算逻辑接口将提前部署在集群中的方案时,首先要对业务足够的抽象,同时需要提前抽象出可能需要使用的接口,在任务代码没有开始前就提早进行实现。整体框架的部署也必须在任务开始之前。由于互联网企业业务发展快,业务逻辑变化频繁,不可变接口是不够灵活的。在业务上需要新添逻辑接口时,就需要将代码添加到整个运算框架中。同时每次逻辑接口更改时,就需要更改整体框架的代码,也需要更改运行任务的代码。由此可见,如何在节省资源以及提高灵活性的前提下,尽量减少集群运算响应时间以提高实时使用的计算结果,以及使分布式任务运算的启动逻辑满足实时使用的需求,成为本领域技术人员亟待解决的技术问题。
技术实现思路
本专利技术提供了一种分布式任务处理方法,用以减少任务提交时耗费的时间以及提升运行效率,该方法包括:当接收到用户提交的任务时,判断与所述任务对应的任务代码是否包含于集群的通用代码中,所述通用代码是在初始化时分发至所述集群的其他节点中;若所述任务代码包含于所述通用代码中,根据所述通用代码运行与所述任务对应的运算逻辑。优选地,还包括:若所述任务代码的部分或全部不包含于所述通用代码中,将所述通用代码中所不包含的任务代码动态加载生效于所述集群;根据集群加载后的通用代码运行与所述任务对应的运算逻辑。优选地,在接收到用户提交的任务之前,还包括:向所述集群中的节点分发所述通用代码,并进行初始化资源处理;判断当前是否存在可回收资源;若当前存在可回收资源,将所述可回收资源进行回收处理;若当前不存在可回收资源,在预设的时间阈值后判断当前是否存在可回收资源。优选地,在根据所述通用代码运行与所述任务对应的运算逻辑或根据集群加载后的通用代码运行与所述任务对应的运算逻辑之后,还包括:当所述运算逻辑执行完毕后,将用于执行所述运算逻辑的资源进行回收处理。相应地,本专利技术还提出了一种分布式任务处理设备,该方法包括:判断模块,在当所述分布式任务处理设备接收到用户提交的任务时判断与所述任务对应的任务代码是否包含于集群的通用代码中,所述通用代码是在初始化时分发至所述集群的其他节点中;运行模块,在所述任务代码包含于所述通用代码时根据所述通用代码运行与所述任务对应的运算逻辑。优选地,还包括:加载模块,在所述任务代码的部分或全部不包含于所述通用代码时将所述通用代码中所不包含的任务代码动态加载生效于所述集群,并指示所述运行模块根据集群加载后的通用代码运行与所述任务对应的运算逻辑。优选地,还包括:初始化模块,向所述集群中的节点分发所述通用代码,并进行初始化资源处理;回收模块,判断当前是否存在可回收资源,在当前存在可回收资源时将所述可回收资源进行回收处理,以及在当前不存在可回收资源时在预设的时间阈值后判断当前是否存在可回收资源。优选地,所述回收模块,还用于在所述运算逻辑执行完毕后,将用于执行所述运算逻辑的资源进行回收处理。由此可见,通过应用本专利技术的技术方案,在初始化时将通用代码分发至集群的其他节点中,当接收到用户提交的任务时,判断与任务对应的任务代码是否包含于集群的通用代码中,并在任务代码包含于通用代码中时直接根据通用代码运行与任务对应的运算逻辑。从而弥补了传统方案中分布式任务运行启动速度和灵活性稳定不可兼得的劣势,在业务变更中能够支持快速响应的同时又保证了整体项目的稳定性。附图说明图1为现有技术中集群执行任务逻辑的流程示意图;图2为本专利技术提出的一种分布式任务处理方法的流程示意图;图3为本专利技术提出的一种分布式任务处理设备的结构示意图。具体实施方式有鉴于现有技术中的问题,本专利技术提出了一种分布式任务处理方法,通过在分布式任务启动之前预先启动需要的集群机器以及初始化所有需要的通用资源,这样在真正任务运行时了复用这些初始化的资源,使得多个任务能够共享预先初始好的资源并同时共享存储。从减少任务提交时耗费的时间以及提升运行效率。如图2所示,为本专利技术提出的一种分布式任务处理方法的流程示意图,包括以下步骤:S201,当接收到用户提交的任务时,判断与所述任务对应的任务代码是否包含于集群的通用代码中,所述通用代码是在初始化时分发至所述集群的其他节点中。出于任务提交流程的限制,任务的提交者每次任务提交都要通过手工或者脚本程序,将运行的任务的代码进行编译,打包,提交到集群中。集群的主节点根据调度策略将需要打包好的任务分发到运行的集群中,而集群的其他节点在接受到主节点分发的任务代码后时,才进行任务程序的启动,才开始将任务中各种需要运行到的资源初始化。在初始化完毕后,真正的任务逻辑才开始执行执行。整套流程需要花费很长的时间在于非关键运算上,导致总体任务的返回是时间也会整体变得长。针对该问题,本专利技术将传统的任务提交时才进行的共用操作(包含分发代码操作和初始化资源操作)抽象出来,使得一组需要相近资源的任务能够共用一套资源管理方案,并提早启动加载、发布等操作,实现资源的初始化及回收等管理职责。在优选的实施例中,在该步骤之前,首先向所述集群中的节点分发所述通用代码,并进行初始化资源处理,随后判断当前是否存在可回收资源,基于以下两种情况区别处理:(1)若当前存在可回收资源,将所述可回收资源进行回收处理;(2)若当前不存在可回收资源,在预设的时间阈值后判断当前是否存在可回收资源。以上流程通过在用户在提交任务之前就先启动共用资源管理的方案,提前完成了“分发通用代码、启动集群、初始化连接、初始本文档来自技高网...
【技术保护点】
一种分布式任务处理方法,其特征在于,该方法包括:当接收到用户提交的任务时,判断与所述任务对应的任务代码是否包含于集群的通用代码中,所述通用代码是在初始化时分发至所述集群的其他节点中;若所述任务代码包含于所述通用代码中,根据所述通用代码运行与所述任务对应的运算逻辑。
【技术特征摘要】
1.一种分布式任务处理方法,其特征在于,该方法包括:当接收到用户提交的任务时,判断与所述任务对应的任务代码是否包含于集群的通用代码中,所述通用代码是在初始化时分发至所述集群的其他节点中;若所述任务代码包含于所述通用代码中,根据所述通用代码运行与所述任务对应的运算逻辑。2.如权利要求1所述的方法,其特征在于,还包括:若所述任务代码的部分或全部不包含于所述通用代码中,将所述通用代码中所不包含的任务代码动态加载生效于所述集群;根据集群加载后的通用代码运行与所述任务对应的运算逻辑。3.如权利要求1或2任一项所述的方法,其特征在于,在接收到用户提交的任务之前,还包括:向所述集群中的节点分发所述通用代码,并进行初始化资源处理;判断当前是否存在可回收资源;若当前存在可回收资源,将所述可回收资源进行回收处理;若当前不存在可回收资源,在预设的时间阈值后判断当前是否存在可回收资源。4.如权利要求3所述的方法,其特征在于,在根据所述通用代码运行与所述任务对应的运算逻辑或根据集群加载后的通用代码运行与所述任务对应的运算逻辑之后,还包括:当所述运算逻辑执行完毕后,将用于执行所述运算逻辑的资源进行...
【专利技术属性】
技术研发人员:张凤婷,蔡永保,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛;KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。