一种协调执行任务的系统及方法
技术领域
本发明涉及计算机领域,特别涉及一种协调执行任务的系统及方法。
背景技术
随着计算机技术的发展,可以将大规模的业务拆分为多个小的子业务,分别由计算机网络中的多个计算机分别执行后,再汇总得到业务结果。这时,就需要计算机网络中的计算机之间互相协调。
在申请日为2013年12月12日,申请号为201310681028.1,名称为“一种面向实时云平台的故障检测与容错方法及系统”的专利申请中,就提出了一种当任务为对云平台的故障检测与纠错时的处理方案。具体地说,该专利申请的解决方案涉及一种面向实时云平台的故障检测与容错方法及系统,包括:发送命令,提交任务,并将分配给工作节点的任务存储在相应路径下的客户端;用于监控各工作节点的运行状态,根据工作节点上传的心跳信息进行节点级故障检测与容错,执行故障节点中任务的迁移的全局状态监控模块;用于存储全局状态监控模块和各个工作节点的工作状态及心跳信息的全局状态存储模块;用于执行任务,运行守护进程来守护工作进程,并执行程序级故障检测与容错的工作节点;本发明中使整个集群的状态信息全部存储在Zookeeper系统中,实现节点的无状态架构,节点故障不会造成状态丢失,具有完善的故障检测与容错机制,实现多级容错,保障实时业务的不间断运行。
可以看出,上述方案主要是解决了实时的故障检测和容错的方法,它的实现包括4个角色:客户端、全局状态监控模块、全局状态存储模块及工作节点,任务是由客户端分配并分发到全局状态存储模块,然后工作节点定时去取分配给自己的任务进行处理。采用这种方案协调执行任务,存在着缺点:由于客户端在协调执行任务过程中是核心,所以存在单节点的风险,客户端出了问题所有任务都会出现延迟处理,并且上述方案也没有给出如何动态扩容的方法,例如在任务数突然剧增、大量任务面临延迟时如何动态的增加节点处理。
发明内容
有鉴于此,本发明实施例提供一种协调执行任务的系统,该系统能够在多节点协调执行任务过程中,防止任务处理延迟,且能够动态扩容。
本发明实施例还提供一种协调执行任务的方法,该方法能够在多节点协调执行任务过程中,防止任务处理延迟,且能够动态扩容。
根据上述目的,本发明是这样实现的:
一种协调执行任务的系统,包括:控制节点及任务节点,其中,
控制节点,用于配置任务的执行策略,根据任务的执行策略将任务划分为多个子任务及确定执行任务的任务处理节点数量;
多个任务处理节点中的每一个任务处理节点注册到zookeeper上,基于zookeeper动态选取产生管理任务处理节点和执行任务处理节点,管理任务处理节点,用于基于确定任务的任务处理节点数量,分别为多个执行任务处理节点分配对应的子任务;所述多个执行任务处理节点根据管理任务处理节点的分配执行子任务。
所述控制节点,还用于确定执行任务的任务处理节点中的工作线程数量。
所述任务处理节点采用全局唯一标识进行标识。
所述动态选取是根据所设置的选取规则进行选取的。
所述任务处理节点,还用于启动工作线程抓取和执行对应的子任务,并启动心跳线程定时更新管理任务处理节点的状态。
一种协调执行任务的方法,该方法包括:
控制节点基于zookeeper配置任务的执行策略;
控制节点根据任务的执行策略将任务划分为多个子任务及确定执行任务的任务处理节点数量。
所述控制节点确定执行任务的任务处理节点中的工作线程数量,子任务的划分数量与工作线程数量相同,一个任务处理节点具有多个工作线程。
一种协调执行任务的方法,包括:
A、多个任务处理节点中的其中一个任务处理节点注册到zookeeper上;
B、基于zookeeper动态选取产生管理任务处理节点和执行任务处理节点时,当该任务处理节点选取为管理任务处理节点时,基于从控制节点获取的确定任务的任务处理节点数量,分别为多个执行任务处理节点分配对应的从任务节点所获取的子任务;
当该任务处理节点为执行任务处理节点时,根据管理任务处理节点的分配执行子任务。
所述动态选取是根据所设置的选取规则进行选取的;
所述任务处理节点启动工作线程抓取和执行对应的子任务,并启动心跳线程定时更新管理任务处理节点的状态。
所述步骤B定时重复执行,直到所有任务都处理完。
由上述方案可以看出,本发明实施例提供的协调执行任务系统由控制节点及任务处理节点组成,其中,控制节点,用于配置任务的执行策略,根据任务的执行策略将任务划分为多个子任务及确定执行任务的任务处理节点数量;多个任务处理节点中的每一个任务处理节点注册到zookeeper上,基于zookeeper动态选取产生管理任务处理节点(leader)和执行任务处理节点,管理任务处理节点基于确定任务的任务处理节点数量,分别为执行子任务的多个执行任务处理节点分配子任务,所述多个执行任务处理节点根据管理任务处理节点的分配执行子任务。由于管理任务处理节点是基于zookeeper动态选取产生,管理任务处理节点并不像背景技术的客户端是一个固定节点,所以不存在单节点风险,防止了任务处理延迟,由于本发明实施例的控制节点是根据任务量依据执行策略分配任务处理节点数量及分配执行的多个子任务,所以可以根据需要对任务处理节点动态扩容。
附图说明
图1为本发明实施例提供的协调执行任务的系统结构示意图;
图2为本发明实施例提供的协调执行任务的方法一流程图;
图3为本发明实施例提供的协调执行任务的方法二流程图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
背景技术的方案无法保证所有的任务能及时地被执行,在有些对稳定性和实时性要求非常高的计算机网络中会存在隐患。因此,本发明实施例为了多节点协调执行任务过程中,防止任务处理延迟,且能够动态扩容,基于zookeeper技术设置计算机网络。zookeeper技术是一个分布式的,开放源码的分布式应用程序协调服务,其是一个针对分布式计算机网络的可靠协调机制,可以为分布式计算机网络提供的功能为:配置维护、名字服务、分布式同步及组服务等,其可以在分布式计算机网络中动态选取管理任务处理节点后,由当前所选举出的管理任务处理节点为其他作为执行业务处理节点的业务处理节点分配子业务并指示其进行对应子业务的执行。
因此,本发明实施例提供的协调执行任务系统由控制节点及任务处理节点组成,其中,控制节点,用于配置任务的执行策略,根据任务的执行策略将任务划分为多个子任务及确定执行任务的任务处理节点数量;多个任务处理节点中的每一个任务处理节点注册到zookeeper上,基于zookeeper动态选取产生管理任务处理节点(leader)和执行任务处理节点,管理任务处理节点基于确定任务的任务处理节点数量,分别为执行子任务的多个执行任务处理节点分配子任务,所述多个执行任务处理节点根据管理任务处理节点的分配执行子任务。由于管理任务处理节点是基于zookeeper动态选取产生,管理任务处理节点并不像背景技术的客户端是一个固定节点,所以不存在单节点风险,防止了任务处理延迟,由于本发明实施例的控制节点是根据任务量依据执行策略分配任务处理节点数量及分配执行的多个子任务,所以可以根据需要对任务处理节点动态扩容。
图1为本发明实施例提供的协调执行任务的系统结构示意图,包括:控制节点及任务节点,其中,
控制节点,用于配置任务的执行策略,根据任务的执行策略将任务划分为多个子任务及确定执行任务的任务处理节点数量;
多个任务处理节点中的每一个任务处理节点注册到zookeeper上,基于zookeeper动态选取产生管理任务处理节点和执行任务处理节点,管理任务处理节点基于确定任务的任务处理节点数量,分别为多个执行任务处理节点分配对应的子任务,所述多个执行任务处理节点根据管理任务处理节点的分配执行子任务。
具体地说,控制节点负责配置任务的执行策略,例如,将任务切割成多少个子任务,确定执行任务的任务处理节点数量,控制节点还可以动态的控制任务处理节点当前处理的子任务,比如,可以手动停止、恢复某个子任务,或手动停止、恢复执行某个子任务的任务处理节点。在这里,将任务切割成多少个子任务采用的是该任务需要启动多少工作线程来处理任务等。
多个任务处理节点是一组线程构成的多个任务处理节点,每个任务处理节点都设置有一个唯一的全局标识,一般以IP$UUID的形式出现。一个任务划分的多个子任务可以有多个任务处理节点执行,子任务与任务处理节点之间并不是一对一的关系,每个子任务由一个工作线程处理,而每个任务处理节点可以有多个工作线程。这多个任务处理节点可以在同一基于JAVA的虚拟计算机网络(JVM)中,也克服分布在不同的JVM中。每个执行任务处理节点包括一个心跳线程,用于确定管理任务处理节点的状态及子任务的分配,每个执行任务处理节点还包括一组工作线程,用于查询并处理对应的子任务。
控制节点,还用于确定执行任务的任务处理节点中的线程数量,这样就可以确定任务划分的子任务,在完成后,基于zookeeper上设置完成。
在该系统中,基于zookeeper动态选取产生管理任务处理节点的选取策略可以预先设置,比如设置为注册早的任务处理节点作为管理任务处理节点。所述多个执行任务处理节点根据管理任务处理节点的分配执行子任务为:启动工作线程抓取和执行对应的子任务,并启动心跳线程定时更新管理任务处理节点的状态。这个过程会定时重复,这样,控制节点就可以动态的增加或减少执行任务的任务处理节点,或者当其中执行子任务的任务处理节点宕机后,由当前的管理任务处理节点将该子任务再分配给其他的执行任务处理节点执行。
图2为本发明实施例提供的协调执行任务的方法一流程图,其具体步骤为:
步骤201、控制节点基于zookeeper配置任务的执行策略;
步骤202、控制节点根据任务的执行策略将任务划分为多个子任务及确定执行任务的任务处理节点数量。
在该方法中,控制节点确定执行任务的任务处理节点中的工作线程数量,子任务的划分数量与工作线程数量相同,一个任务处理节点具有多个工作线程,这样,就可以得到任务处理节点数量。
图3为本发明实施例提供的协调执行任务的方法二流程图,其他具体步骤为:
步骤301、多个任务处理节点中的其中一个任务处理节点注册到zookeeper上;
步骤302、基于zookeeper动态选取产生管理任务处理节点和执行任务处理节点时,当该任务处理节点选取为管理任务处理节点时,基于从控制节点获取的确定任务的任务处理节点数量,分别为多个执行任务处理节点分配对应的从任务节点所获取的子任务;
步骤303、当该任务处理节点为执行任务处理节点时,根据管理任务处理节点的分配执行子任务。
在该方法中,所述任务处理节点采用全局唯一标识进行标识。
在该方法中,所述任务处理节点启动工作线程抓取和执行对应的子任务,并启动心跳线程定时更新管理任务处理节点的状态。
在该方法中,所述动态选取是根据所设置的选取规则进行选取的,比如采用先注册制选取。
在该方法中,步骤302和步骤303定时重复执行,直到所有任务都处理完。
从本发明实施例可以看出,本发明能够使得批量任务或者不断变化的任务,能够被动态的分配到多个JVM中的任务处理节点中并行执行。所有的任务能够被不重复且不遗漏地快速处理。
以上举较佳实施例,对本发明的目的、技术方案和优点进行了进一步详细说明,所应理解的是,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。