一种任务处理方法和装置的制造方法

文档序号:10534952阅读:230来源:国知局
一种任务处理方法和装置的制造方法
【专利摘要】本发明提供一种任务处理方法和装置,应用于包括客户端节点、多个服务节点、多个工作节点的系统中,所述方法应用在客户端节点,所述方法包括:针对每个服务节点,获得服务节点对应的总数据处理能力;将待处理任务划分成多个子任务,并利用每个服务节点对应的总数据处理能力,为每个服务节点分配对应数量的子任务;将为每个服务节点分配的子任务发送给对应的服务节点,以使服务节点将接收到的子任务分配给自身连接的工作节点进行处理。通过本发明的技术方案,使得每个工作节点处理的子任务与总数据处理能力相适应,在服务节点与工作节点之间的网络连接断开的情况下,能够适应性的调整该服务节点分配到的子任务,从而保证子任务的合理分配。
【专利说明】
一种任务处理方法和装置
技术领域
[0001 ]本发明涉及通信技术领域,尤其涉及一种任务处理方法和装置。
【背景技术】
[0002]随着大数据时代的到来,不同数据库之间的数据交换需求越来越多,而ETL(Extract Transform Load,抽取转换加载)用于从源数据库中抽取数据,并将抽取的数据加载到目标数据库中。例如,从RDBMS(Relat1nal Database Management System,关系数据库管理系统)数据库(例如,Oracle、MySQL等)中抽取数据,并将抽取的数据加载到Hadoop(分布式)数据库中。或者,从Hadoop数据库中抽取数据,并将抽取的数据加载到RDBMS数据库中。
[0003]在大数据时代,面对大量的数据抽取和数据加载工作,单个工作节点已经无法满足用户需求,通常需要多个工作节点共同完成大量的数据抽取和数据加载工作,即将数据抽取和数据加载工作分配到多个工作节点进行处理。

【发明内容】

[0004]本发明提供一种任务处理方法,应用于包括客户端节点、多个服务节点、多个工作节点的系统中,所述方法应用在客户端节点,所述方法包括:
[0005]针对每个服务节点,获得所述服务节点对应的总数据处理能力;
[0006]将待处理任务划分成多个子任务,并利用所述每个服务节点对应的总数据处理能力,为所述每个服务节点分配对应数量的子任务;
[0007]将为所述每个服务节点分配的子任务发送给对应的服务节点,以使服务节点将接收到的子任务分配给自身连接的工作节点进行处理。
[0008]所述服务节点对应的总数据处理能力包括:所述服务节点连接的所有工作节点的数据处理能力之和;工作节点的数据处理能力包括:所述工作节点在单位时间内的数据处理量除以所述工作节点连接的服务节点数量。
[0009]所述获得所述服务节点对应的总数据处理能力的过程,具体包括:
[0010]接收所述服务节点上报的总数据处理能力;所述总数据处理能力是所述服务节点利用与所述服务节点连接的每个工作节点的数据处理能力计算的;或者,接收所述服务节点上报的与所述服务节点连接的每个工作节点的数据处理能力,并利用所述每个工作节点的数据处理能力计算所述总数据处理能力;其中,每个工作节点统计本工作节点的数据处理能力,并将本工作节点的数据处理能力发送给本工作节点连接的所有服务节点。
[0011 ]利用所述每个服务节点对应的总数据处理能力,为所述每个服务节点分配对应数量的子任务,包括:计算所述每个服务节点对应的总数据处理能力之间的比值;按照所述比值为所述每个服务节点分配对应数量的子任务。
[0012]本发明提供一种任务处理方法,该方法应用于包括客户端节点、多个服务节点、多个工作节点的系统中,所述方法包括以下步骤:
[0013]工作节点将自身的数据处理能力发送给自身连接的所有服务节点;
[0014]服务节点利用与所述服务节点连接的每个工作节点的数据处理能力计算总数据处理能力,并将所述总数据处理能力发送给客户端节点;或者,将与所述服务节点连接的每个工作节点的数据处理能力发送给客户端节点;
[0015]针对每个服务节点,客户端节点获得该服务节点对应的总数据处理能力;
[0016]所述客户端节点将待处理任务划分成多个子任务,并利用所述每个服务节点对应的总数据处理能力,为所述每个服务节点分配对应数量的子任务;
[0017]所述客户端节点将为所述每个服务节点分配的子任务发送给对应的服务节点,以使服务节点将接收到的子任务分配给自身连接的工作节点进行处理。
[0018]所述工作节点的数据处理能力包括:所述工作节点在单位时间内的数据处理量除以所述工作节点连接的服务节点数量;所述服务节点对应的总数据处理能力包括:所述服务节点连接的所有工作节点的数据处理能力之和。
[0019]所述客户端节点利用所述每个服务节点对应的总数据处理能力,为所述每个服务节点分配对应数量的子任务的过程,具体包括:
[0020]所述客户端节点计算每个服务节点对应的总数据处理能力之间的比值;
[0021]所述客户端节点按照所述比值为每个服务节点分配对应数量的子任务。
[0022]本发明提供一种任务处理装置,应用于包括客户端节点、多个服务节点、多个工作节点的系统中,所述装置应用在客户端节点,所述装置包括:
[0023]获得模块,用于获得每个服务节点对应的总数据处理能力;
[0024]分配模块,用于将待处理任务划分成多个子任务,并利用所述每个服务节点对应的总数据处理能力,为所述每个服务节点分配对应数量的子任务;
[0025]发送模块,用于将为所述每个服务节点分配的子任务发送给对应的服务节点,以使服务节点将接收到的子任务分配给自身连接的工作节点进行处理。
[0026]所述服务节点对应的总数据处理能力包括:所述服务节点连接的所有工作节点的数据处理能力之和;工作节点的数据处理能力包括:所述工作节点在单位时间内的数据处理量除以所述工作节点连接的服务节点数量;
[0027]所述获得模块,具体用于在获得服务节点对应的总数据处理能力的过程中,接收所述服务节点上报的总数据处理能力;所述总数据处理能力是所述服务节点利用与所述服务节点连接的每个工作节点的数据处理能力计算的;或者,接收所述服务节点上报的与所述服务节点连接的每个工作节点的数据处理能力,利用所述每个工作节点的数据处理能力计算所述总数据处理能力;
[0028]其中,每个工作节点统计本工作节点的数据处理能力,并将本工作节点的数据处理能力发送给本工作节点连接的所有服务节点。
[0029]所述分配模块,具体用于在利用所述每个服务节点对应的总数据处理能力,为所述每个服务节点分配对应数量的子任务中,计算所述每个服务节点对应的总数据处理能力之间的比值;按照所述比值为所述每个服务节点分配对应数量的子任务。
[0030]基于上述技术方案,本发明实施例中,客户端节点可以基于每个服务节点对应的总数据处理能力,为每个服务节点分配对应数量的子任务,并将为每个服务节点分配的子任务发送给对应的服务节点,以使服务节点将接收到的子任务分配给自身连接的工作节点进行处理。基于上述方式,客户端节点可以基于各服务节点对应的总数据处理能力来为每个服务节点分配对应数量的子任务,使得每个工作节点处理的子任务与本服务节点对应的总数据处理能力相适应,在服务节点与工作节点之间的网络连接断开的情况下,能够适应性的调整该服务节点分配到的子任务,从而保证子任务的合理分配。
【附图说明】
[0031]为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
[0032]图1是本发明一种实施方式中的系统结构示意图;
[0033]图2是本发明一种实施方式中的任务处理方法的流程图;
[0034]图3是本发明另一种实施方式中的任务处理方法的流程图;
[0035]图4是本发明一种实施方式中的客户端节点的硬件结构图;
[0036]图5是本发明一种实施方式中的任务处理装置的结构图。
【具体实施方式】
[0037]在本申请使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
[0038]应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
[0039]在大数据时代,为了完成大量数据抽取和数据加载工作,可以采用图1所示的网络架构,其中包含客户端节点(client )、多个服务节点(server)、多个工作节点(worker)。客户端节点是请求的发起者,用于获得待处理任务,并将待处理任务提供给服务节点,该待处理任务会包含需要完成数据抽取和数据加载的数据信息,例如,当需要将源数据库中的数据1-数据3000加载到目标数据库时,则数据信息可以是数据1-数据3000的信息。服务节点是请求的调度者,用于将来自客户端节点的任务分配给工作节点。工作节点是请求的处理者,用于完成大量的数据抽取和数据加载工作,如从源数据库中抽取数据,将抽取的数据加载到目标数据库中,源数据库是RDBMS或者Hadoop数据库数据库,目标数据库是Hadoop数据库或者RDBMS数据库。
[0040]基于上述应用场景,在一种可行的实施方式中,客户端节点获取待处理任务,如该待处理任务用于将源数据库A中的数据1-数据3000加载到目标数据库B中,客户端节点获取待处理任务的方式可以根据实际情况决定,例如,用户在客户端节点上下发命令,客户端节点基于该命令获取待处理任务。
[0041]客户端节点将待处理任务划分成多个子任务,并为每个服务节点分配相同数量的子任务。例如,客户端节点将待处理任务划分成子任务1、子任务2、子任务3、子任务4、子任务5、子任务6,并将子任务1、子任务2、子任务3分配给服务节点I,将子任务4、子任务5、子任务6分配给服务节点2。
[0042]服务节点I将子任务I分配给自身连接的工作节点I,并将子任务2分配给自身连接的工作节点2,并将子任务3分配给自身连接的工作节点3。而且,服务节点2将子任务4分配给自身连接的工作节点I,并将子任务5分配给自身连接的工作节点2,并将子任务6分配给自身连接的工作节点3。
[0043]工作节点I处理子任务I和子任务4,如将数据1-数据500、数据1501-数据2000从源数据库加载到目标数据库。工作节点2处理子任务2和子任务5,如将数据501-数据1000、数据2001-数据2500从源数据库加载到目标数据库。工作节点3处理子任务3和子任务6,如将数据1001-数据1500、数据2501-数据3000从源数据库加载到目标数据库。进一步的,各工作节点向服务节点返回数据处理结果,服务节点将该数据处理结果返回给客户端节点,由客户端节点接收该数据处理结果,并将该数据处理结果显示给用户。
[0044]在一个例子中,假设服务节点I与工作节点I之间的网络连接断开(如发生故障),则服务节点I将子任务I和子任务2分配给自身连接的工作节点2,并将子任务3分配给自身连接的工作节点3。服务节点2将子任务4分配给自身连接的工作节点I,并将子任务5分配给自身连接的工作节点2,并将子任务6分配给自身连接的工作节点3。基于此,工作节点I处理子任务4,工作节点2处理子任务1、子任务2和子任务5,工作节点3处理子任务3和子任务6。显然,在这样的处理方式下,会导致不同工作节点处理的子任务数量并不相同,服务节点I连接的工作节点的处理能力会比服务节点2连接的工作节点的处理能力低,导致服务节点I上的子任务完成较慢。
[0045]针对上述发现,本发明实施例中提出一种任务处理方法,可以应用于包括客户端节点、多个服务节点、多个工作节点的系统中,以图1为本发明实施例的应用场景示意图,该系统中可以包括工作节点1、工作节点2、工作节点3、服务节点1、服务节点2、客户端节点。图1中的源数据库可以为RDBMS数据库(如Oracle、MySQL等),目标数据库可以为Hadoop数据库,或者,源数据库可以为Hadoop数据库,目标数据库可以为RDBMS数据库。
[0046]本发明实施例中,针对客户端节点获得的第一个待处理任务,将该待处理任务划分成多个子任务,并为每个服务节点分配相同数量的子任务。针对客户端节点获得的第二个以及后续的待处理任务,将该待处理任务划分成多个子任务,并采用每个服务节点对应的总数据处理能力,为每个服务节点分配对应数量的子任务,而不是直接为每个服务节点分配相同数量的子任务。
[0047]针对采用每个服务节点对应的总数据处理能力,为每个服务节点分配对应数量的子任务的过程,如图2所示,该任务处理方法可以包括以下步骤:
[0048]步骤201,工作节点将本工作节点的数据处理能力发送给本工作节点连接的所有服务节点。其中,本工作节点的数据处理能力具体可以包括:本工作节点在单位时间内的数据处理量除以本工作节点连接的服务节点数量。
[0049]工作节点在接收到来自服务节点的子任务之后,对该子任务进行处理,并在完成子任务的处理后,统计本工作节点在单位时间内的数据处理量,并将该数据处理量除以本工作节点连接的服务节点数量,得到本工作节点的数据处理能力,并将该数据处理能力发送给本工作节点连接的所有服务节点。
[0050]步骤202,服务节点利用与本服务节点连接的每个工作节点的数据处理能力计算总数据处理能力,并将总数据处理能力发送给客户端节点;或者,将与本服务节点连接的每个工作节点的数据处理能力发送给客户端节点。
[0051]本发明实施例中,服务节点对应的总数据处理能力具体可以包括:本服务节点连接的所有工作节点的数据处理能力之和。
[0052]服务节点在接收到与本服务节点连接的每个工作节点的数据处理能力之后,可以将每个工作节点的数据处理能力进行求和处理,得到总数据处理能力,并将总数据处理能力发送给客户端节点;或者,可以直接将与本服务节点连接的每个工作节点的数据处理能力发送给客户端节点。
[0053]步骤203,客户端节点获得每个服务节点对应的总数据处理能力。
[0054]本发明实施例中,针对每个服务节点,如果服务节点直接将总数据处理能力发送给客户端节点,则客户端节点接收服务节点上报的总数据处理能力,并获得该服务节点对应的总数据处理能力。或者,如果服务节点将与本服务节点连接的每个工作节点的数据处理能力发送给客户端节点,则客户端节点接收服务节点上报的与该服务节点连接的每个工作节点的数据处理能力,并利用每个工作节点的数据处理能力计算该服务节点对应的总数据处理能力,即将每个工作节点的数据处理能力进行求和处理,得到总数据处理能力。
[0055]步骤204,客户端节点将待处理任务划分成多个子任务,并利用每个服务节点对应的总数据处理能力,为每个服务节点分配对应数量的子任务。
[0056]本发明实施例中,客户端节点利用每个服务节点对应的总数据处理能力,为每个服务节点分配对应数量的子任务的过程,具体可以包括但不限于如下方式:客户端节点计算每个服务节点对应的总数据处理能力之间的比值。客户端节点按照该比值为每个服务节点分配对应数量的子任务。例如,服务节点I的总数据处理能力与服务节点2的总数据处理能力之间的比值为2:1时,则服务节点I分配到的子任务的数量与服务节点2分配到的子任务的数量之间的比值为2:1。假设客户端节点将待处理任务划分成6个子任务,则将4个子任务分配给服务节点I,并将2个子任务分配给服务节点2。
[0057]当然,在实际应用中,并不局限于采用上述方式来为每个服务节点分配对应数量的子任务,基于每个服务节点对应的总数据处理能力,只要保证总数据处理能力大的服务节点分配到的子任务的数量,大于总数据处理能力小的服务节点分配到的子任务的数量即可,对于其它方式不再详加赘述。
[0058]步骤205,客户端节点将为每个服务节点分配的子任务发送给对应的服务节点,各服务节点将接收到的子任务分配给自身连接的工作节点进行处理。
[0059]工作节点在接收到来自服务节点的子任务后,对该子任务进行处理,统计本工作节点在单位时间内的数据处理量,并将该数据处理量除以本工作节点连接的服务节点数量,得到本工作节点的数据处理能力,返回步骤201。
[0060]基于上述技术方案,本发明实施例中,客户端节点可以基于每个服务节点对应的总数据处理能力,为每个服务节点分配对应数量的子任务,并将为每个服务节点分配的子任务发送给对应的服务节点,以使服务节点将接收到的子任务分配给自身连接的工作节点进行处理。基于上述方式,客户端节点可以基于各服务节点对应的总数据处理能力来为每个服务节点分配对应数量的子任务,使得每个工作节点处理的子任务与本服务节点对应的总数据处理能力相适应,在服务节点与工作节点之间的网络连接断开的情况下,能够适应性的调整该服务节点分配到的子任务,从而保证子任务的合理分配。
[0061]针对客户端节点的处理过程,本发明实施例中还提出一种应用在客户端节点上的任务处理方法,该方法可以应用于包括客户端节点、多个服务节点、多个工作节点的系统中,且以图1为本发明实施例的应用场景示意图。
[0062]本发明实施例中,针对客户端节点获得的第一个待处理任务,将该待处理任务划分成多个子任务,并为每个服务节点分配相同数量的子任务。针对客户端节点获得的第二个以及后续的待处理任务,将该待处理任务划分成多个子任务,并采用每个服务节点对应的总数据处理能力,为每个服务节点分配对应数量的子任务,而不是直接为每个服务节点分配相同数量的子任务。
[0063]针对采用每个服务节点对应的总数据处理能力,为每个服务节点分配对应数量的子任务的过程,如图3所示,该任务处理方法可以包括以下步骤:
[0064]步骤301,针对每个服务节点,获得该服务节点对应的总数据处理能力。
[0065]其中,服务节点对应的总数据处理能力具体可以包括:服务节点连接的所有工作节点的数据处理能力之和。工作节点的数据处理能力具体可以包括:工作节点在单位时间内的数据处理量除以工作节点连接的服务节点数量。
[0066]本发明实施例中,获得服务节点对应的总数据处理能力的过程,具体可以包括但不限于如下方式:方式一、接收该服务节点上报的总数据处理能力,该总数据处理能力是服务节点利用与服务节点连接的每个工作节点的数据处理能力计算的。方式二、接收该服务节点上报的与服务节点连接的每个工作节点的数据处理能力,并利用每个工作节点的数据处理能力计算总数据处理能力。针对方式一和方式二,每个工作节点统计本工作节点的数据处理能力,并将本工作节点的数据处理能力发送给本工作节点连接的所有服务节点。
[0067]针对方式一和方式二,工作节点在接收到来自服务节点的子任务之后,对该子任务进行处理,并统计本工作节点在单位时间内的数据处理量,并将该数据处理量除以本工作节点连接的服务节点数量,得到本工作节点的数据处理能力,并将该数据处理能力发送给本工作节点连接的所有服务节点。
[0068]针对方式一,服务节点在接收到与本服务节点连接的每个工作节点的数据处理能力之后,可以将每个工作节点的数据处理能力进行求和处理,得到总数据处理能力,并将总数据处理能力发送给客户端节点。客户端节点接收服务节点上报的总数据处理能力,并获得该服务节点对应的总数据处理能力。
[0069]针对方式二,服务节点在接收到与本服务节点连接的每个工作节点的数据处理能力后,将每个工作节点的数据处理能力发送给客户端节点。客户端节点接收服务节点上报的与该服务节点连接的每个工作节点的数据处理能力,利用每个工作节点的数据处理能力计算该服务节点对应的总数据处理能力,即将每个工作节点的数据处理能力进行求和处理,得到总数据处理能力。
[0070]步骤302,将待处理任务划分成多个子任务,并利用每个服务节点对应的总数据处理能力,为每个服务节点分配对应数量的子任务。
[0071]本发明实施例中,利用每个服务节点对应的总数据处理能力,为每个服务节点分配对应数量的子任务的过程,具体可以包括但不限于如下方式:计算每个服务节点对应的总数据处理能力之间的比值,并按照该比值为每个服务节点分配对应数量的子任务。例如,当服务节点I的总数据处理能力与服务节点2的总数据处理能力之间的比值为2:1时,则月艮务节点I分配到的子任务的数量与服务节点2分配到的子任务的数量之间的比值可以为2:1o
[0072]当然,在实际应用中,并不局限于采用上述方式来为每个服务节点分配对应数量的子任务,基于每个服务节点对应的总数据处理能力,只要保证总数据处理能力大的服务节点分配到的子任务的数量,大于总数据处理能力小的服务节点分配到的子任务的数量即可,对于其它方式不再详加赘述。
[0073]步骤303,将为每个服务节点分配的子任务发送给对应的服务节点,以使各服务节点将接收到的子任务分配给自身连接的工作节点进行处理。
[0074]基于上述技术方案,本发明实施例中,客户端节点可以基于每个服务节点对应的总数据处理能力,为每个服务节点分配对应数量的子任务,并将为每个服务节点分配的子任务发送给对应的服务节点,以使服务节点将接收到的子任务分配给自身连接的工作节点进行处理。基于上述方式,客户端节点可以基于各服务节点对应的总数据处理能力来为每个服务节点分配对应数量的子任务,使得每个工作节点处理的子任务与本服务节点对应的总数据处理能力相适应,在服务节点与工作节点之间的网络连接断开的情况下,能够适应性的调整该服务节点分配到的子任务,从而保证子任务的合理分配。
[0075]针对图2所示的流程和图3所示的流程,针对每个待处理任务,客户端节点还可以为该待处理任务设置一个唯一的任务标识(TaskID),且每个待处理任务对应的任务标识均不同。针对该待处理任务对应的每个子任务,均有对应的唯一的子任务标识(TaskID-SubTaskNum),即该任务标识+其它序号,且每个子任务对应的子任务标识均不同。例如,为待处理任务设置的任务标识可以为TaskIDl,其对应的6个子任务的子任务标识分别为TaskIDl-1,TaskIDl-2,TaskIDl-3,TaskIDl-4,TaskIDl-5,TaskIDl-6。
[0076]基于此,工作节点在将本工作节点的数据处理能力发送给本工作节点连接的所有服务节点时,还包含该数据处理能力对应的任务标识,即工作节点统计的是针对同一待处理任务对应的一个或者多个子任务的数据处理能力。进一步的,服务节点或者客户端节点在将每个工作节点的数据处理能力进行求和处理时,是将具有同一任务标识的每个工作节点的数据处理能力进行求和处理,即总数据处理能力是同一任务标识的数据处理能力的求和结果。
[0077]以下结合图1所示的应用场景,对上述流程进行进一步的说明。在图1中,假设服务节点I与工作节点I之间的网络连接断开(如发生故障)。
[0078]针对客户端节点获得的第一个待处理任务,假设该待处理任务用于将6万条数据从源数据库加载到目标数据库。客户端节点为该待处理任务设置任务标识TaskIDl,并将该待处理任务划分成6个子任务,这6个子任务的子任务标识分别为TaskIDl-1,TaskIDl-2,TaskIDl-3,TaskIDl-4,TaskIDl-5,TaskIDl-6,每个子任务用于将I万条数据从源数据库加载到目标数据库。
[0079]客户端节点为各服务节点分配相同数量的子任务,将子任务TaskIDl-1,TaskIDl-2,TaskIDl-3分配给服务节点I,并将子任务TaskIDl_4,TaskIDl-5,TaskIDl_6分配给服务节点2。由于服务节点I与工作节点I之间的网络连接断开,因此,服务节点I不会将子任务分配给工作节点1,假设服务节点I将子任务TaSkIDl-l,TaskIDl-2,TaskIDl-3均分配给工作节点2进行处理,而且,服务节点2将子任务TaskIDl-4,TaskIDl-5分配给工作节点I进行处理,服务节点2子任务TaskIDl-6分配给工作节点3进行处理。
[0080]假设工作节点1、工作节点2和工作节点3在单位时间内的数据处理量均为I万条/秒,因此,在第一秒,工作节点2处理Task皿-1对应的I万条数据,即工作节点2将I万条数据从源数据库加载到目标数据库,工作节点I处理TaskIDl-4对应的I万条数据,工作节点3处理TaskIDl-6对应的I万条数据。在第二秒,工作节点2处理TaskIDl_2对应的I万条数据,工作节点I处理TaskIDl-5对应的I万条数据,工作节点3空闲。在第三秒,工作节点2处理TaskIDl-3对应的I万条数据,工作节点I和工作节点3空闲。
[0081 ] 在上述过程中,工作节点I统计本待处理任务TaskIDI在单位时间内的数据处理量为I万条/秒,并确定工作节点I的数据处理能力为I万/1(工作节点I只连接服务节点2),并将该数据处理能力发送给服务节点2。工作节点2统计本待处理任务TaskIDl在单位时间内的数据处理量为I万条/秒,并确定工作节点2的数据处理能力为I万/2(工作节点2连接服务节点I和服务节点2),并将该数据处理能力发送给服务节点I和服务节点2。工作节点3统计本待处理任务TaskIDl在单位时间内的数据处理量为I万条/秒,并确定工作节点3的数据处理能力为I万/2(工作节点3连接服务节点I和服务节点2),并将该数据处理能力发送给服务节点I和服务节点2。
[0082]服务节点I对应的总数据处理能力为:工作节点2对应的数据处理能力(I万/2)+工作节点3对应的数据处理能力(I万/2)。服务节点2对应的总数据处理能力为:工作节点I对应的数据处理能力(I万/I)+工作节点2对应的数据处理能力(I万/2)+工作节点3对应的数据处理能力(I万/2)。
[0083]针对客户端节点获得的第二个待处理任务,假设该待处理任务用于将6万条数据从源数据库加载到目标数据库。客户端节点为该待处理任务设置任务标识TaskID2,并将该待处理任务划分成6个子任务,这6个子任务的子任务标识分别为TaskID2-l,TaskID2-2,TaskID2-3,TaskID2_4,TaskID2_5,TaskID2_6,每个子任务用于将I万条数据从源数据库加载到目标数据库。
[0084]客户端节点计算出服务节点I对应的总数据处理能力与服务节点2对应的总数据处理能力之间的比值为1:2,基于此,服务节点I分配到的子任务的数量与服务节点2分配到的子任务的数量之间的比值可以为1:2。假设该客户端节点将子任务了&成102-1,了&成102-2分配给服务节点I,并将子任务TaskID2-3,TaskID2_4,TaskID2_5,TaskID2_6分配给服务节点2。
[0085]由于服务节点I与工作节点I之间的网络连接断开,因此,服务节点I不会将子任务分配给该工作节点I。在此基础上,假设服务节点I将子任务TaskID2-l,TaskID2-2均分配给工作节点2进行处理,而且,服务节点2将子任务TaskID2-3,TaskID2-4均分配给工作节点I进行处理,并且,服务节点2子任务TaskID2-5,TaskID2-6均分配给工作节点3进行处理。
[0086]假设工作节点1、工作节点2和工作节点3在单位时间内的数据处理量均为I万条/秒,在第一秒,工作节点2处理TaskID2-l对应的I万条数据,工作节点I处理TaskID2_3对应的I万条数据,工作节点3处理TaskID2-5对应的I万条数据。在第二秒,工作节点2处理TaskID2-2对应的I万条数据,工作节点I处理TaskID2_4对应的I万条数据,工作节点3处理TaskID2-6对应的I万条数据。因此,所有子任务只需要2秒钟即可同时完成。
[0087]在上述过程中,工作节点I统计本待处理任务TaskIDl在单位时间内的数据处理量为I万条/秒,并确定工作节点I的数据处理能力为I万/1(工作节点I只连接服务节点2),并将该数据处理能力发送给服务节点2。工作节点2统计本待处理任务TaskIDl在单位时间内的数据处理量为I万条/秒,并确定工作节点2的数据处理能力为I万/2(工作节点2连接服务节点I和服务节点2),并将该数据处理能力发送给服务节点I和服务节点2。工作节点3统计本待处理任务TaskIDl在单位时间内的数据处理量为I万条/秒,并确定工作节点3的数据处理能力为I万/2(工作节点3连接服务节点I和服务节点2),并将该数据处理能力发送给服务节点I和服务节点2。
[0088]服务节点I对应的总数据处理能力为:工作节点2对应的数据处理能力(I万/2)+工作节点3对应的数据处理能力(I万/2)。服务节点2对应的总数据处理能力为:工作节点I对应的数据处理能力(I万/I)+工作节点2对应的数据处理能力(I万/2)+工作节点3对应的数据处理能力(I万/2)。
[0089]针对客户端节点获得的第三个待处理任务以及后续的待处理任务,其处理过程与第二个待处理任务的处理过程相同,本发明实施例中不再赘述。
[0090]基于与上述方法同样的发明构思,本发明实施例还提供一种任务处理装置,应用于包括客户端节点、多个服务节点、多个工作节点的系统中,该任务处理装置应用在客户端节点上。该任务处理装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在的客户端节点的处理器,读取非易失性存储器中对应的计算机程序指令形成的。从硬件层面而言,如图4所示,为本发明提出的任务处理装置所在的客户端节点的一种硬件结构图,除了图4所示的处理器、非易失性存储器外,客户端节点还可以包括其他硬件,如负责处理报文的转发芯片、网络接口、内存等;从硬件结构上来讲,客户端节点还可能是分布式设备,可能包括多个接口卡,以便在硬件层面进行报文处理的扩展。
[0091]如图5所示,为本发明提出的任务处理装置的结构图,所述装置包括:
[0092]获得模块11,用于获得每个服务节点对应的总数据处理能力;
[0093]分配模块12,用于将待处理任务划分成多个子任务,并利用所述每个服务节点对应的总数据处理能力,为所述每个服务节点分配对应数量的子任务;
[0094]发送模块13,用于将为每个服务节点分配的子任务发送给对应的服务节点,以使服务节点将接收到的子任务分配给自身连接的工作节点进行处理。
[0095]所述服务节点对应的总数据处理能力包括:所述服务节点连接的所有工作节点的数据处理能力之和;工作节点的数据处理能力包括:所述工作节点在单位时间内的数据处理量除以所述工作节点连接的服务节点数量;
[0096]所述获得模块11,具体用于在获得服务节点对应的总数据处理能力的过程中,接收所述服务节点上报的总数据处理能力;所述总数据处理能力是所述服务节点利用与所述服务节点连接的每个工作节点的数据处理能力计算的;或者,接收所述服务节点上报的与所述服务节点连接的每个工作节点的数据处理能力,利用所述每个工作节点的数据处理能力计算所述总数据处理能力;其中,每个工作节点统计本工作节点的数据处理能力,并将本工作节点的数据处理能力发送给本工作节点连接的所有服务节点。
[0097]所述分配模块12,具体用于在利用所述每个服务节点对应的总数据处理能力,为所述每个服务节点分配对应数量的子任务中,计算所述每个服务节点对应的总数据处理能力之间的比值;按照所述比值为所述每个服务节点分配对应数量的子任务。
[0098]其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0099]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
[0100]本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可进一步拆分成多个子模块。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0101]以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
【主权项】
1.一种任务处理方法,应用于包括客户端节点、多个服务节点、多个工作节点的系统中,其特征在于,所述方法应用在客户端节点,所述方法包括: 针对每个服务节点,获得所述服务节点对应的总数据处理能力; 将待处理任务划分成多个子任务,并利用所述每个服务节点对应的总数据处理能力,为所述每个服务节点分配对应数量的子任务; 将为所述每个服务节点分配的子任务发送给对应的服务节点,以使服务节点将接收到的子任务分配给自身连接的工作节点进行处理。2.根据权利要求1所述的方法,其特征在于, 所述服务节点对应的总数据处理能力包括:所述服务节点连接的所有工作节点的数据处理能力之和;工作节点的数据处理能力包括:所述工作节点在单位时间内的数据处理量除以所述工作节点连接的服务节点数量。3.根据权利要求2所述的方法,其特征在于, 所述获得所述服务节点对应的总数据处理能力的过程,具体包括: 接收所述服务节点上报的总数据处理能力;所述总数据处理能力是所述服务节点利用与所述服务节点连接的每个工作节点的数据处理能力计算的; 或者, 接收所述服务节点上报的与所述服务节点连接的每个工作节点的数据处理能力,并利用所述每个工作节点的数据处理能力计算所述总数据处理能力; 其中,每个工作节点统计本工作节点的数据处理能力,并将本工作节点的数据处理能力发送给本工作节点连接的所有服务节点。4.根据权利要求1所述的方法,其特征在于,利用所述每个服务节点对应的总数据处理能力,为所述每个服务节点分配对应数量的子任务,包括: 计算所述每个服务节点对应的总数据处理能力之间的比值; 按照所述比值为所述每个服务节点分配对应数量的子任务。5.—种任务处理方法,该方法应用于包括客户端节点、多个服务节点、多个工作节点的系统中,其特征在于,所述方法包括以下步骤: 工作节点将自身的数据处理能力发送给自身连接的所有服务节点; 服务节点利用与所述服务节点连接的每个工作节点的数据处理能力计算总数据处理能力,并将所述总数据处理能力发送给客户端节点;或者,将与所述服务节点连接的每个工作节点的数据处理能力发送给客户端节点; 针对每个服务节点,客户端节点获得该服务节点对应的总数据处理能力; 所述客户端节点将待处理任务划分成多个子任务,并利用所述每个服务节点对应的总数据处理能力,为所述每个服务节点分配对应数量的子任务; 所述客户端节点将为所述每个服务节点分配的子任务发送给对应的服务节点,以使服务节点将接收到的子任务分配给自身连接的工作节点进行处理。6.根据权利要求5所述的方法,其特征在于, 所述工作节点的数据处理能力包括:所述工作节点在单位时间内的数据处理量除以所述工作节点连接的服务节点数量;所述服务节点对应的总数据处理能力包括:所述服务节点连接的所有工作节点的数据处理能力之和。7.根据权利要求5所述的方法,其特征在于, 所述客户端节点利用所述每个服务节点对应的总数据处理能力,为所述每个服务节点分配对应数量的子任务的过程,具体包括: 所述客户端节点计算每个服务节点对应的总数据处理能力之间的比值; 所述客户端节点按照所述比值为每个服务节点分配对应数量的子任务。8.—种任务处理装置,应用于包括客户端节点、多个服务节点、多个工作节点的系统中,其特征在于,所述装置应用在客户端节点,所述装置包括: 获得模块,用于获得每个服务节点对应的总数据处理能力; 分配模块,用于将待处理任务划分成多个子任务,并利用所述每个服务节点对应的总数据处理能力,为所述每个服务节点分配对应数量的子任务; 发送模块,用于将为所述每个服务节点分配的子任务发送给对应的服务节点,以使服务节点将接收到的子任务分配给自身连接的工作节点进行处理。9.根据权利要求8所述的装置,其特征在于, 所述服务节点对应的总数据处理能力包括:所述服务节点连接的所有工作节点的数据处理能力之和;工作节点的数据处理能力包括:所述工作节点在单位时间内的数据处理量除以所述工作节点连接的服务节点数量; 所述获得模块,具体用于在获得服务节点对应的总数据处理能力的过程中,接收所述服务节点上报的总数据处理能力;所述总数据处理能力是所述服务节点利用与所述服务节点连接的每个工作节点的数据处理能力计算的;或者,接收所述服务节点上报的与所述服务节点连接的每个工作节点的数据处理能力,利用所述每个工作节点的数据处理能力计算所述总数据处理能力; 其中,每个工作节点统计本工作节点的数据处理能力,并将本工作节点的数据处理能力发送给本工作节点连接的所有服务节点。10.根据权利要求8所述的装置,其特征在于, 所述分配模块,具体用于在利用所述每个服务节点对应的总数据处理能力,为所述每个服务节点分配对应数量的子任务中,计算所述每个服务节点对应的总数据处理能力之间的比值;按照所述比值为所述每个服务节点分配对应数量的子任务。
【文档编号】G06F17/30GK105893497SQ201610189405
【公开日】2016年8月24日
【申请日】2016年3月29日
【发明人】张友先
【申请人】杭州数梦工场科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1