发明内容
针对上述存在的问题,本发明提供一种任务分配执行方法及系统,用以保证任务分配、执行的可靠性。
本发明提供了一种任务分配执行方法,包括:
任务分配方确定存在对任务执行方的待分配任务时,获得所述待分配任务对应的任务文件,将所述任务文件存入分布式文件服务器,并接收所述分布式文件服务器反馈的所述任务文件的存储目录;
所述任务分配方向任务协调服务器发送任务子节点创建请求,所述任务子节点创建请求中包括所述存储目录,以使所述任务协调服务器在与所述任务分配方到所述任务执行方对应的父节点下创建以所述存储目录为标识的任务子节点;其中,所述任务分配方到所述任务执行方对应的父节点表示所述任务分配方和所述任务执行方具有任务分配、执行对应关系,所述对应关系为预先建立的;
所述任务执行方确定所述任务协调服务器中是否存在需要所述任务执行方执行的任务子节点;
若存在需要所述任务执行方执行的任务子节点,则所述任务执行方根据所述任务子节点的标识从所述分布式文件服务器中获取所述任务文件,执行所述任务文件中的任务得到执行结果,将所述执行结果存储在所述存储目录中,并向所述任务协调服务器发送第一通知消息,所述第一通知消息用于指示所述任务协调服务器删除所述任务子节点;
所述任务协调服务器在根据所述第一通知消息删除所述任务子节点后,向所述任务分配方发送第二通知消息,所述第二通知消息用于指示所述任务分配方从所述存储目录中读取所述执行结果。
本发明提供一种任务分配执行系统,包括:
任务分配方、任务执行方、任务协调服务器和分布式文件服务器;
所述任务分配方包括:
处理模块,用于确定存在对所述任务执行方的待分配任务时,获得所述待分配任务对应的任务文件,将所述任务文件存入所述分布式文件服务器;
第一接收模块,用于接收所述分布式文件服务器反馈的所述任务文件的存储目录;
第一发送模块,用于向任务协调服务器发送任务子节点创建请求,所述任务子节点创建请求中包括所述存储目录;
所述任务协调服务器,包括:
创建模块,用于在与所述任务分配方到所述任务执行方对应的父节点下创建以所述存储目录为标识的任务子节点;其中,所述任务分配方到所述任务执行方对应的父节点表示所述任务分配方和所述任务执行方具有任务分配、执行对应关系,所述对应关系为预先建立的;
所述任务执行方,包括:
确定模块,用于确定所述任务协调服务器中是否存在需要所述任务执行方执行的任务子节点;
执行模块,用于若所述确定模块确定存在需要所述任务执行方执行的任务子节点,则根据所述任务子节点的标识从所述分布式文件服务器中获取所述任务文件,执行所述任务文件中的任务得到执行结果,将所述执行结果存储在所述存储目录中;
第二发送模块,用于向所述任务协调服务器发送第一通知消息,所述第一通知消息用于指示所述任务协调服务器删除所述任务子节点;
所述任务协调服务器,还包括:
删除模块,用于根据所述第一通知消息删除所述任务子节点;
第三发送模块,用于向所述任务分配方发送第二通知消息,所述第二通知消息用于指示所述任务分配方从所述存储目录中读取所述执行结果;
所述任务分配方中的所述处理模块,还用于从所述存储目录中读取所述执行结果。
本发明提供的任务分配执行方法及系统,任务分配方有待分配的任务时,将任务文件存储到分布式文件服务器中,进而在任务协调服务器中创建位于任务分配方-任务执行方对应的父节点下的任务子节点,该任务子节点以上述任务文件在分布式文件服务器中的存储目录为标识。进而,在任务执行方确定任务协调服务器中存在其需要执行的任务子节点,即存在与其对应的任务子节点时,根据该任务子节点的标识即任务文件在分布式文件服务器中的存储目录到分布式文件服务器中读取任务文件,进行执行得到执行结果,存储在该目录下。当任务协调服务器接收到任务执行方发送的执行完毕通知消息后,删除该任务子节点并告之任务分配方从上述存储目录下读取执行结果。通过该技术方案,任务分配方和任务执行方无需知道对方的情况,通过任务协调服务器和分布式文件服务器来实现任务分配方和任务执行方的匿名任务分配、执行过程,保证了任务分配、执行的安全可靠。
具体实施方式
图1为本发明任务分配执行方法实施例的流程图,如图1所示,该方法包括:
步骤101、任务分配方确定存在对任务执行方的待分配任务时,获得所述待分配任务对应的任务文件,将所述任务文件存入分布式文件服务器,并接收所述分布式文件服务器反馈的所述任务文件的存储目录。
其中,任务分配方确定存在对任务执行方的待分配任务,可以通过如下方式实现:
任务分配方扫描任务列表,确定所述任务列表是否为空;
若不为空,则所述任务分配方确定存在对任务执行方的待分配任务。
也就是说,在任务分配方维护有一个任务列表,该任务列表用于存储任务分配方需要向任务执行方分配的任务标识,或者也可以存储有与任务标识对应的任务文件。如果任务分配方扫描该列表法相列表不为空,则说明存在需要分配给任务执行方执行的任务,则其获取待分配任务的任务文件。
其中,获取待分配任务的任务文件,在上述任务列表中存储有任务文件的情况下,可以直接从该任务列表中读取获得;也可以根据任务标识从存储有任务文件的其他存储介质中读取。
任务分配方进而将获得的任务文件存入分布式文件服务器,并接收分布式文件服务器反馈的任务文件的存储目录。其中,该存储目录相当于存储路径,表示该任务文件存储在什么位置上。
步骤102、任务分配方向任务协调服务器发送任务子节点创建请求,所述任务子节点创建请求中包括所述存储目录。
步骤103、任务协调服务器在与所述任务分配方到所述任务执行方对应的父节点下创建以所述存储目录为标识的任务子节点;其中,所述任务分配方到所述任务执行方对应的父节点表示所述任务分配方和所述任务执行方具有任务分配、执行对应关系,所述对应关系为预先建立的。
在任务分配方接收到分布式文件服务器反馈的任务文件的存储目录后,任务分配方向任务协调服务器发送任务子节点创建请求,该任务子节点创建请求中包括所述存储目录。从而使得任务协调服务器在与任务分配方到任务执行方对应的父节点下创建以该存储目录为标识的任务子节点。
其中,值得说明的是,在任务协调服务器中存储有一个父节点,该父节点表征的含义是上述任务分配方分配给上述任务执行方的任务将被对应标记在该父节点下,作为该父节点的子节点。而且,该父节点也表示了所述任务分配方和所述任务执行方具有任务分配、执行对应关系,且该对应关系为预先建立的。也就是说,任务分配方可以与任务执行方预先商定使其完成任务分配方分配的任务,如果商定成功,则在任务协调服务器中注册一个表征该任务分配方分配任务令任务执行方执行的父节点。
步骤104、任务执行方确定所述任务协调服务器中是否存在需要所述任务执行方执行的任务子节点,若不存在需要所述任务执行方执行的任务子节点,则执行步骤105,否则,执行步骤107。
具体来说,任务执行方确定任务协调服务器中是否存在需要任务执行方执行的任务子节点,可以通过如下方式实现:
任务执行方向任务协调服务器发送任务查询请求,所述任务查询请求用于查询是否存在需要任务执行方执行的任务子节点;
任务协调服务器确定所述父节点下是否存在任务子节点;
若父节点下存在任务子节点,则任务协调服务器向任务执行方反馈查询响应,所述查询响应中包含查询到的任务子节点的标识。
从而,任务执行方能够确定任务协调服务器中是否存在需要任务执行方执行的任务子节点。
值得说明的是,上述步骤104与上述步骤101-103并无严格的时序限定。也就是说,由于任务分配方和任务执行方在商定就某类任务可以由任务执行方来完成后,双方在具体分配、执行过程中便不知道对方的信息。因此,在任务执行方启动时,其会比如周期性向任务协调服务器查询是否有需要他执行的任务,即任务协调服务器中的对该任务执行方对应的多个父节点下是否有任务子节点。如果有,则说明存在需要该任务执行方执行的任务。
值得说明的是,该任务协调服务器中可能存储有多个父节点,这些父节点中可能存在多个以该任务执行方为执行方的父节点。该任务执行方可以查询获知任何与其对应的父节点下是否存在任务子节点需要执行。
因此,如果在任务执行方查询时刻,没有发现有需要其执行的任务子节点,则执行如下步骤105,如果发现有需要其执行的任务子节点,则直接执行步骤107。
步骤105、任务协调服务器监听所述父节点;
步骤106、若所述任务协调服务器监听到所述父节点下创建了所述任务子节点,则所述任务协调服务器向所述任务执行方发送第三通知消息,所述第三通知消息中包含所述任务子节点的标识。
具体来说,如果任务执行方查询发现没有需要其执行的任务子节点,则任务协调服务器监听与该任务执行方对应的父节点,以监听该父节点下任务子节点的创建情况,如果监听到该父节点下创建了任务子节点,则任务协调服务器通知该任务执行方其需要执行的该任务子节点的标识,即在分布式文件服务器中的存储目录。
步骤107、任务执行方根据所述任务子节点的标识从所述分布式文件服务器中获取所述任务文件,执行所述任务文件中的任务得到执行结果,将所述执行结果存储在所述存储目录中,并向所述任务协调服务器发送第一通知消息,所述第一通知消息用于指示所述任务协调服务器删除所述任务子节点。
当任务执行方通过查询获得或者通过通知获得其需要执行任务的任务子节点的标识后,任务执行方从分布式文件服务器中获取对应的任务文件,执行任务文件中的任务得到执行结果,并将执行结果存储在所述存储目录中。进而,向任务协调服务器发送用于指示任务协调服务器删除该任务子节点的通知消息。
步骤108、任务协调服务器在根据所述第一通知消息删除所述任务子节点后,向所述任务分配方发送第二通知消息,所述第二通知消息用于指示所述任务分配方从所述存储目录中读取所述执行结果。
任务协调服务器在删除任务子节点后,通知任务分配方到上述存储目录中读取执行结果。
值得说明的是,本发明实施例中,任务执行方可以是一个群组的概念,也可以是一个独立设备的概念。也就是说,任务执行方可以包括至少一个执行主体。
上述实施例中的任务执行方可以分别是单一的执行主体。
为了避免单一执行主体宕机等故障是,对任务执行产生的不利影响,可选的,任务执行方可以具有多个执行主体。另外,这多个执行主体预先需要在任务协调服务器中进行注册,使得任务协调服务器中保存有这多个执行主体的标识信息。
此外,任务协调服务器中还维护有一个执行列表,该执行列表用于存储在线的执行主体的标识信息。该执行列表初始时可以包含该任务执行方的所有的执行主体的标识信息。
任务协调服务器可以通过心跳机制监测该多个执行主体的在线状态,并根据监测到的各个执行主体的在线状态更新所述执行列表。
其中,心跳监测机制为现有技术,其原理不再赘述。在执行列表初始时包含该任务执行方的所有的执行主体的标识信息的情况下,当任务协调服务器检测到某个或某些个执行主体一定时间内均不在线,则将其从执行列表中删除,以更新该执行列表。
假设当前正在进行执行任务的是某执行主体A,如果后续任务协调服务器监测到其不在线,则任务协调服务器从更新后的执行列表中选择另一执行主体B接替所述当前分配主体A来执行后续的处理。
对于另一执行主体B的选择方式,比如可以是从其他在线的执行主体中随机选择一个,或者,根据各执行主体在任务协调服务器中注册时的顺序来选择,比如按照注册先后顺序来优先选择先注册的执行主体。
值得说明的是,上述仅以任务分配方分配任务给任务执行方的场景为例进行了说明,实际上,任务分配方在其他场景中可能是作为任务执行方的角色,因此,任务分配方中也可以包含多个执行主体。
以上实施例中,任务分配方有待分配的任务时,将任务文件存储到分布式文件服务器中,进而在任务协调服务器中创建位于任务分配方-任务执行方对应的父节点下的任务子节点,该任务子节点以上述任务文件在分布式文件服务器中的存储目录为标识。进而,在任务执行方确定任务协调服务器中存在其需要执行的任务子节点,即存在与其对应的任务子节点时,根据该任务子节点的标识即任务文件在分布式文件服务器中的存储目录到分布式文件服务器中读取任务文件,进行执行得到执行结果,存储在该目录下。当任务协调服务器接收到任务执行方发送的执行完毕通知消息后,删除该任务子节点并告之任务分配方从上述存储目录下读取执行结果。通过该技术方案,任务分配方和任务执行方无需知道对方的情况,通过任务协调服务器和分布式文件服务器来实现任务分配方和任务执行方的匿名任务分配、执行过程,保证了任务分配、执行的安全可靠。
图2为本发明任务分配执行系统实施例的结构示意图,如图2所示,该系统包括:
任务分配方1、任务执行方2、任务协调服务器3和分布式文件服务器4;
所述任务分配方1包括:
处理模块11,用于确定存在对所述任务执行方的待分配任务时,获得所述待分配任务对应的任务文件,将所述任务文件存入所述分布式文件服务器;
第一接收模块12,用于接收所述分布式文件服务器反馈的所述任务文件的存储目录;
第一发送模块13,用于向任务协调服务器发送任务子节点创建请求,所述任务子节点创建请求中包括所述存储目录;
所述任务协调服务器3,包括:
创建模块31,用于在与所述任务分配方到所述任务执行方对应的父节点下创建以所述存储目录为标识的任务子节点;其中,所述任务分配方到所述任务执行方对应的父节点表示所述任务分配方和所述任务执行方具有任务分配、执行对应关系,所述对应关系为预先建立的;
所述任务执行方2,包括:
确定模块21,用于确定所述任务协调服务器中是否存在需要所述任务执行方执行的任务子节点;
执行模块22,用于若所述确定模块21确定存在需要所述任务执行方执行的所述任务子节点,则根据所述任务子节点的标识从所述分布式文件服务器中获取所述任务文件,执行所述任务文件中的任务得到执行结果,将所述执行结果存储在所述存储目录中;
第二发送模块23,用于向所述任务协调服务器发送第一通知消息,所述第一通知消息用于指示所述任务协调服务器删除所述任务子节点;
所述任务协调服务器3,还包括:
删除模块32,用于根据所述第一通知消息删除所述任务子节点;
第三发送模块33,用于向所述任务分配方发送第二通知消息,所述第二通知消息用于指示所述任务分配方从所述存储目录中读取所述执行结果;
所述任务分配方中的所述处理模块11,还用于从所述存储目录中读取所述执行结果。
进一步地,所述第二发送模块23还用于:
向所述任务协调服务器发送任务查询请求,所述任务查询请求用于查询是否存在需要所述任务执行方执行的任务子节点;
所述任务协调服务器3中还包括:
判断模块34,用于确定所述父节点下是否存在任务子节点;
所述第三发送模块33,还用于若所述判断模块确定所述父节点下存在任务子节点,则向所述任务执行方反馈查询响应,所述查询响应中包含查询到的任务子节点的标识。
进一步地,所述任务协调服务器还包括:
监听模块35,用于若不存在需要所述任务执行方执行的所述任务子节点,则监听所述父节点;
所述第三发送模块33,还用于若所述监听模块监听到所述父节点下创建了所述任务子节点,则向所述任务执行方发送第三通知消息,所述第三通知消息中包含所述任务子节点的标识。
具体地,所述处理模块11具体用于:
扫描任务列表,确定所述任务列表是否为空;
若不为空,则确定存在对任务执行方的待分配任务。
进一步地,所述任务执行方具有至少两个执行主体,所述任务协调服务器中维护有执行列表,所述执行列表中存储有在线的执行主体的标识信息;
所述任务协调服务器3中还包括:
监测模块36,用于通过心跳机制监测所述至少两个执行主体的在线状态;
更新模块37,用于根据监测到的所述在线状态更新所述执行列表;
选择模块38,用于若所述任务协调服务器监测到所述至少两个执行主体中的当前执行主体不在线,则从更新后的执行列表中选择另一执行主体接替所述当前分配主体。
本实施例的系统可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。