发明内容
基于此,有必要针对上述技术问题,提供一种能够提高任务处理效率的任务分布式处理方法、装置、网络终端设备和存储介质。
一种任务分布式处理方法,所述方法包括:
网络终端设备获取待处理进程的原始运算数据;
将所述原始运算数据分解成多个子运算数据;
向预设的至少一个电子设备发送对所述子运算数据的处理指令,所述处理指令中包括为所述电子设备分配的子运算数据;
接收每个电子设备发送的对所述子运算数据进行处理的子结果数据;
根据所述每个电子设备的子结果数据生成对所述待处理进程的进程处理结果数据。
在其中一个实施例中,在所述将所述原始运算数据分解成多个子运算数据之前,还包括:
获取与所述网络终端设备连接的至少一个电子设备的设备状态信息;
所述将所述原始运算数据分解成多个子运算数据,包括:
根据所述设备状态信息将所述原始运算数据分解成与电子设备的数量匹配的子运算数据。
在其中一个实施例中,所述根据所述设备状态信息将所述待处理进程的原始运算数据分解成与电子设备的数量匹配的子运算数据,包括:
根据所述设备状态信息计算出对应设备的计算力;
根据每个电子设备的计算力将所述待处理进程的原始运算数据分解成与电子设备的数量匹配的多个子运算数据,每个子运算数据的数据量和对应电子设备的计算力相匹配。
在其中一个实施例中,所述设备状态信息包括设备的CPU使用信息、内存使用信息和设备网络状态信息中的一种或多种。
在其中一个实施例中,在所述接收每个电子设备发送的对所述子运算数据进行处理的子结果数据之前,还包括:
监控每个子进程的运行状态,所述子进程为对应电子设备对分配的子运算数据而创建的进程;
当所述运行状态为异常状态时,获取对应电子设备对所述子运算数据进行处理的临时结果数据;
对所述子运算数据进行重新分配,将所述子运算数据和所述临时结果数据发送至重新分配的电子设备;
所述接收每个电子设备发送的对所述子运算数据进行处理的子结果数据,包括:
接收重新分配的电子设备发送的根据所述临时结果数据对所述子运算数据进行处理的子结果数据。
在其中一个实施例中,所述根据所述每个电子设备的子结果数据生成对所述待处理进程的进程处理结果数据,包括:
对每个所述子结果数据进行重组合成,生成对所述待处理进程的进程处理结果数据。
在其中一个实施例中,所述网络终端设备获取待处理进程的原始运算数据,包括:
网络终端设备从非结构化数据库中获取待处理进程的原始运算数据;
所述方法还包括:
将所述子结果数据和所述进程处理结果数据存储至结构化数据库中。
一种任务分布式处理装置,所述装置包括:
进程获取模块,用于获取待处理进程的原始运算数据;
数据分解模块,用于将所述原始运算数据分解成多个子运算数据;
任务分配模块,用于向预设的至少一个电子设备发送对所述子运算数据的处理指令,所述处理指令中包括为所述电子设备分配的子运算数据;
处理子结果汇总模块,用于接收每个电子设备发送的对所述子运算数据进行处理的子结果数据;
处理结果生成模块,用于根据所述每个电子设备的子结果数据生成对所述待处理进程的进程处理结果数据。
一种网络终端设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本申请任意实施例中描述的方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本申请任意实施例中描述的方法的步骤。
上述的任务分布式处理方法、装置、网络终端设备和存储介质,通过将待处理进程的原始运算数据进行拆分,形成多个子运算数据,进而将子运算数据分配给预设的至少一个电子设备进行处理,然后汇总每个电子设备对分配的子进程处理的子结果数据,由该子结果数据生成对待处理进程的处理结果数据。通过将需要由网络终端设备进行处理的进程拆解成多个子进程,并将子进程分配给多个电子设备共同进行处理,提高了对进程处理的效率。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的任务分布式处理方法,可以应用于如图1所示的应用环境中。其中,网络终端设备110可与至少一个电子设备120(如图1中的电子设备A、电子设备B和电子设备C)通过网络进行通信。具体地,可通过通用串行总线集线器(Universal Serial Bus Hub,USB Hub)与多个电子设备120进行连接,实现数据传输和通信。其中,网络终端设备110可以但不限于是各种PC、智能网关、数字电视接收机以及其他衍生产品,电子设备120可以是能够与网络终端设备110进行连接的、具有一定计算能力的设备,比如可为移动终端。网络终端设备110可获取待处理进程的原始运算数据;并可对原始运算数据进行分解,形成多个子运算数据,每个子运算数据可作为对应的子进程,并将子进程分配至电子设备120进行处理。电子设备120可接收网络终端设备110分配的子运算数据,并调用计算单元对子运算数据进行处理,生成子结果数据,并将生成的结果数据发送至网络终端设备110。网络终端设备110可汇总每个电子设备120生成的子处理结果,并根据所汇总的子结果数据生成对待处理进程的进程处理结果数据,从而实现了对待处理进程的处理。其中,由各电子设备120中的计算单元和网络终端设备110中的用于进行进程任务分配和处理的系统可构成虚拟数字信号处理(Digital Signal Processing,DSP),根据该虚拟DSP可实现本申请的任务分布式处理方法。
在一个实施例中,如图2所示,提供了一种任务分布式处理方法,以该方法应用于图1中的网络终端设备为例进行说明,包括以下步骤202至步骤210。
步骤202,网络终端设备获取待处理进程的原始运算数据。
待处理进程即为网络终端设备中的待处理的进程。网络终端设备可根据对应的待处理的任务,创建相应的待处理进程。待处理的任务可为需要耗费一定的运算资源才能完成处理的计算型任务。原始运算数据即为在处理相应进程时需要使用到的原始的数据。以网络终端设备为家庭智能网关为例,待处理的任务可为将高清数字电视节目转换成低码率的任务,电子设备可创建该任务的进程,作为待处理进程,则相应的待处理进程的原始运算数据即为该高清数字电视节目的视频数据。
在一个实施例中,待处理进程可包括多个,每个待处理进程均被设置了相应的进程标识,进程标识可为对应进程的进程名称或进程编号等可唯一识别对应的待处理进程的信息。
网络终端设备可预先创建相应的进程,当检测到对该进程进行启动处理的处理指令后,可将该进程作为待处理进程,并获取该待处理进程的原始运算数据。其中,该处理指令可为自动触发的指令,还可为根据用户的操作而手动触发的指令。
步骤204,将原始运算数据分解成多个子运算数据。
网络终端设备可将原始运算数据分解成多个子运算数据。其中,分解的资源算数据的数量可为任意合适的数量,分解数量可根据原始运算数据的数据量大小、待处理进程对应的任务的任务类型、网络终端设备的设备运行状态或者与网络终端设备连接的电子设备的设备运行状态等因素而确定,还可以为固定的数量。任务类型可包括视频转码类型以及非视频转码等类型。网络终端设备或电子设备的设备运行状态均可包括低负荷运行状态、中负荷运行状态和高负荷运行状态等。举例来说,当原始运算数据的数据量越大,则对应分解的子运算数据的数量也越多。
在一个实施例中,每个子运算数据的数据量大小不一定相同,比如可针对中负荷运行的电子设备所分配的子运算数据,可分解出的数据量较小,而针对低负荷运行的电子设备所分配的子运算数据,可分解出的数据量较大。
步骤206,向预设的至少一个电子设备发送对子运算数据的处理指令,处理指令中包括为电子设备分配的子运算数据。
网络终端设备可将分解的子运算数据分配给与网络终端设备连接的电子设备,并指示该电子设备对所分配的子运算数据进行处理。具体地,可向电子设备发送对子运算数据的处理指令,该处理指令中包括为该电子设备分配的子运算数据。通过该处理指令来指示对应的电子设备进行处理。
在一个实施例中,可针对分配的子运算数据创建该数据的数据标识,将该数据标识与待分配的电子设备的设备标识之间建立对应关系,网络终端设备根据对子运算数据所创建的对应关系,将该子运算数据分配给相应的电子设备,并通过该处理指令指示该电子设备针对分配的子运算进行处理。
步骤208,接收每个电子设备发送的对子运算数据进行处理的子结果数据。
电子设备可在接收到网路终端设备发送的子运算数据后,可调用自身的计算单元来对子运算数据进行运算处理,生成对子运算数据的子结果数据。其中,子结果数据为对子运算数据完成处理后,所产生的结果数据。电子设备可向网络终端设备发送包含该子结果数据的消息发送至网路终端设备。其中,该消息中还包含可识别该子结果数据所属的待处理进程的标识信息,使网络终端设备根据该标识信息识别出所接收到的子结果数据所属的待处理进程。比如该标志信息可为子运算数据的数据标识和/或电子设备的设备标识,使得根据该设备标识即可获知。
网络终端设备在接收到包含子结果数据的消息后,可根据其中的标识信息,识别出其中的子结果数据所属的待处理进程。
步骤210,根据每个电子设备的子结果数据生成对待处理进程的进程处理结果数据。
网络终端设备在获取到所分配的所有的电子设备发送的子结果数据之后,根据每个接收到的子结果数据进行数据合成,从而合成进程处理结果数据,将该进程处理结果数据作为对原始运算数据的处理的结果数据。可选地,网络终端设备可根据每个被划分出的子运算数据在原始运算数据中的位置信息,来对相应的子结果数据进行合成,以生成进程处理结果数据。
上述任务分布式处理方法中,通过将待处理进程的原始运算数据进行拆分,形成多个子运算数据,进而将子运算数据分配给预设的至少一个电子设备进行处理,然后汇总每个电子设备对分配的子进程处理的子结果数据,由该子结果数据生成对待处理进程的处理结果数据。通过将需要由网络终端设备进行处理的进程拆解成多个子进程,并将子进程分配给多个电子设备共同进行处理,提高了对进程处理的效率。
通过上述的方法,可将家庭中闲置智能设备作为上述的电子设备,并通过分布式计算的方式,参与到网络终端设备计算力的提升中,让更多、更丰富、更大型的应用可以快速地运行,提高了对原始运算数据的处理效率。
在一个实施例中,在步骤204之前,还包括:获取与网络终端设备连接的至少一个电子设备的设备状态信息;步骤204包括:根据设备状态信息将原始运算数据分解成与电子设备的数量匹配的子运算数据。
其中,网络终端设备可监控每个连接的电子设备的设备状态信息,该设备状态信息包括设备的CPU使用信息、内存使用信息和设备网络状态信息中的一种或多种。CPU使用信息包括CPU使用率,内存使用信息可包括内存使用率,设备网络状态信息包括网络连接信号是否良好等信息。电子设备根据每个设备的设备状态信息,确定是否为该电子设备分配子运算数据的数量,和/或为该电子设备分配的子运算数据的数据量大小。
不同的电子设备的性能不一定相同,网络终端设备根据上述的设备状态信息,确定每个连接的电子设备的当前性能,根据每个电子设备的当前性能来对原始运算数据的切分,使得所切分的数量与电子设备的数量相匹配。比如,可将原始运算数据分解成与所连接的电子设备同等数量的子运算数据。或者切分的数量与达到性能要求的电子设备的数量相同。其中,性能要求可为预设的固定要求或者根据所有电子设备的设备状态信息而自定义的性能要求。性能要求可为性能测评分值达到预设的性能阈值的要求。网络终端设备可根据电子设备的设备状态信息计算出对应电子设备的性能测评分值,当该性能测评分值达到该性能阈值时,则判定该电子设备达到了该性能要求。
上述方法中,通过检测电子设备的设备状态信息,并根据设备状态信息将原始运算数据分解成与电子设备的数量匹配的子运算数据,从而可提高后续对子运算数据分配的科学性和均匀性。
在一个实施例中,根据设备状态信息将待处理进程的原始运算数据分解成与电子设备的数量匹配的子运算数据,包括:根据设备状态信息计算出对应设备的计算力;根据每个电子设备的计算力将待处理进程的原始运算数据分解成与电子设备的数量匹配的多个子运算数据,每个子运算数据的数据量和对应电子设备的计算力相匹配。
在一个实施例中,该计算力可表示挖矿机的算力,计算力越大,则运算能力越强,对同样数据量的运算数据的运算速度越快。网络终端设备预设了不同的设备状态信息与计算力之间的对应关系,根据电子设备的状态信息,依照该对应关系可计算出对应电子设备的计算力。
针对计算出的不同电子设备的计算力,可将原始运算数据分解成与该计算力相匹配的子运算数据,使得电子设备所需要处理的子运算数据的数据量与其计算力相匹配。在一个实施例中,网络终端设备还可设置计算力阈值,使得切分后的子运算数据的数量与达到计算力阈值的电子设备的数量相同。
在一个实施例中,如图3所示,上述方法还包括对子运算数据的重新分配的步骤,该步骤可在上述的步骤208之前执行,包括:
步骤302,监控每个子进程的运行状态,子进程为对应电子设备对分配的子运算数据而创建的进程。
电子设备在接收到网络终端设备发送的处理指令之后,可创建用于处理网络终端设备分配的子运算数据的子进程,并实时将包含该子进程的子进程信息反馈至网络终端设备,电子设备可实时获取该子进程信息。其中,子进程信息包含了该子进程的子进程标识以及子进程的运行状态。子进程的运行状态包括待执行状态、执行中状态、执行完毕以及异常状态等。其中,待执行状态表示该子进程正在排队,等待处理。执行中状态表示正在正常执行该子进程的任务,执行完毕表示已经完成了对该子进程的任务的处理。异常状态表示在执行之前或执行过程之中出现了异常。
在一个实施例中,若电子设备处理所分配的子运算数据的持续处理时长超过预设时长而还未处理完毕时,可确定该子进程处理异常,可将该子进程的状态修改为异常,或者网络终端判定该子进程的处理状态为处于异常状态。
步骤304,当运行状态为异常状态时,获取对应电子设备对子运算数据进行处理的临时结果数据。
电子设备在对子运算数据进行运算处理时,可实时保存处理的临时结果数据。当网络终端设备检测到电子设备的子进程处理异常时,可获取该电子设备所保存的临时结果数据。
步骤306,对子运算数据进行重新分配,将子运算数据和临时结果数据发送至重新分配的电子设备。
针对获取的临时结果数据,电子设备可将该子运算数据进程重新分配,可选地,可从与网络终端设备连接的所有的电子设备中,重新选取一个电子设备,将包含该子运算数据和临时结果数据的处理指令发送至重新选取的电子设备,该处理指令用于指示重新选取的电子设备对分配的子运算数据进行处理。
电子设备在接收到子运算数据和临时结果数据之后,可基于该临时结果数据对子运算数据进行继续处理,而无需从头开始对子运算数据进行处理,以提高对子运算数据的处理效率。
在一个实施例中,步骤208包括:接收重新分配的电子设备发送的根据临时结果数据对子运算数据进行处理的子结果数据。
重新分配的电子设备在完成对子运算数据的处理之后,可将生成的子结果数据发送至网络终端设备。
网络终端设备可接收该电子设备发送的子运算数据。当网络终端设备在接收到了被分解的所有的子运算数据的子结果数据之后,对所有接收到的子结果数据进程重组合成,生成对待处理进程的处理结果数据。
在一个实施例中,如图4所示,提供了另一种任务分布式处理方法,该方法包括:
步骤402,网络终端设备获取待处理进程的原始运算数据。
网络终端设备中设置了待处理进程,该待处理进程即为一个对应的待处理的任务,当检测到该待处理的任务被启动后,可获取相应的原始运算数据。其中,该待处理的任务可为将高清数字电视节目转换成低码率的任务,电子设备可创建该任务的进程,作为待处理进程,则相应的待处理进程的原始运算数据即为该高清数字电视节目的视频数据。
步骤404,将原始运算数据分解成多个子运算数据。
在一个实施例中,网络终端设备可通过USB Hub的连接方式连接了多个电子设备,并可获取该电子设备的设备状态信息,设备状态信息可用于体现出电子设备的计算力能性能信息。网络终端设备可从该设备状态信息中解析出对应电子设备的计算力,根据该计算力确定对原始运算数据的分解策略,并按照该分解策略对原始运算数据进行分解,从而形成多个子运算数据,其中所分解的子运算数据的数量和/或子运算数据的数据量与网络终端设备的设备状态信息相匹配。
步骤406,检测是否完成对原始运算数据的分解,若是,则进入步骤408,否则继续执行步骤404。
网络终端设备在确定了对原始运算数据的分解策略之后,可检测是否已经成功按照该策略完成了对原始运算数据的分解,若是,则进入步骤408,否则,重新进入步骤404,即按照所确定的策略重新对原始运算数据进行分解,直至检测到对原始运算数据分解成功,或者分解失败次数超过预设次数之后,则取消对原始运算数据的分解。
步骤408,向预设的至少一个电子设备发送对子运算数据的处理指令,处理指令中包括为电子设备分配的子运算数据。
在一个实施例中,网络终端设备可根据该分解策略将分解后的子运算数据分配给相应的电子设备,分配给每个电子设备的子运算数据的数据量或数量与该电子设备的设备性能状态相匹配。针对待分配相应子运算数据的电子终端,网络终端设备可根据该处理指令,在该电子设备中创建用于处理该子运算数据的子进程,或者可指示电子设备,由电子设备自身来创建该子进程。
步骤410,检测是否完成对子运算数据的分配,若是,则进入步骤412,否则,重新进入步骤404。
在一个实施例中,网路终端设备可检测每个待分配子运算数据的电子设备是否全部成功创建了相应的子进程,和/或是否成功接收到了所分配的子运算数据,若否,则表示分配出现异常,可重新返回步骤404,重新对原始运算数据进行分解和分配,直至分配成功,或者分配出错的次数超过预设次数,若超过预设次数,则终止分配。
步骤412,监控每个子进程的运行状态,检测子进程在执行过程中是否出现异常,若是,则重新进入步骤408,否则,进入步骤414。
电子设备可对分配的子运算数据进行处理,并向网络终端设备实时反馈子进程的运行状态。网路终端设备在检测到子进程运行异常时,可获取对应电子设备对子运算数据进行处理的临时结果数据,并重新返回步骤408,对该子运算数据进行重新分配,可选地,可将该子运算数据分配给其它的电子设备,由重新分配的电子设备进行处理。在重新分配该子运算数据的同时,还可将该临时结果数据也发送至重新分配的电子设备,使得重新分配的电子设备可基于该临时结果数据对子运算数据进行处理。
步骤414,接收每个电子设备发送的对子运算数据进行处理的子结果数据。
步骤416,根据每个电子设备的子结果数据生成对待处理进程的进程处理结果数据。
网络终端设备可接收每个电子设备反馈的子结果数据,并根据接收到的所有的子结果数据进行重组合成,从而形成对待处理进程的处理结果数据,完成了对待处理进程的处理。
通过上述方法,将原始运算数据分解成多个子运算数据,并将子运算数据分配给多个电子设备来处理,获取每个电子设备对分配的子运算处理时,形成的子结果数据,然后根据该子结果数据合成进程处理结果数据,提高了对原始运算数据处理的效率。
在一个实施例中,网络终端设备中预设有数据库,该数据库包括非结构化数据库和结构化数据库。电子设备可将原始运算数据存储至非结构化数据库中,在开始执行对原始运算数据的处理时,可从非结构化数据库中提取该原始运算数据进行分解处理。当接收到电子设备发送的子结果数据时,可将子结果数据保存至结构化数据库中。
在一个实施例中,如图5所示,提供了一种网络终端设备的内部结构示意图。其中,网络终端设备包括主控制器、中央数据库、计算力均衡仲裁、离散数据合成、数据切片、缓冲队列、分布计算结果导入、外部计算单元性能集中监测、分布式进程管理(包括分布任务调度核心、子进程状态监测、子进程创建、子进程迁移、子进程异常终止回收)RPC客户端以及USB通信驱动。
主控制器是网络终端设备的核心控制部件,直接对中央数据库、计算力均衡仲裁、分布计算结果导入进行状态跟踪和执行过程控制,并根据这三个组件的工作状态对分布式进程管理组件的工作过程进行微调,从而让整个系统有序、高效地运行。其中,各组件或模块的状态可分别包括挂起、满载、就绪、异常、复位等。挂起状态表示相应的组件闲置,如果有任务可以启动执行;满载状态,表示该组件满荷工作,后续操作需要排队;就绪状态表示当前工作已完成,结果可供输出,控制器可以控制其对下游模块组件输出结果;异常状态表示该组件已经异常,需要控制器干预复位;复位状态,表示该组件正处于复位状态中,暂不接受控制,需等待该组件由复位状态进入就绪状态,才可以被重新控制。
中央数据库负责存储需要计算的原始数据和已经完成的计算结果,主要包括非结构化数据库(NoSQL)和结构化数据库(SQL)两部分,非结构化数据库主要用来存储待计算的原始运算数据,结构化数据库主要用来存放合成后的处理结果数据。比如该原始运算数据可为待转码的高清视频帧数据,处理结果数据为对该高清视频帧进行转码完成后的数据。
分布计算结果导入模块主要负责从分布式的进程中导入各进程的计算结果数据(通过分布式进程管理组件实现),并对这些数据进行并行的先入先出(FirstInput FirstOutput,FIFO)FIFO缓冲,供离散数据合成模块使用。离散数据合成模块负责对分布式计算结果导入中的分布式缓冲数据进行重组合成,并将合成后的完整运算结果传输给中央数据库。数据切片模块负责从中央数据库中获取原始的待运算数据,并对其进行切片(即分解),每片数据的长度(即子运算数据的数据量大小)由计算力均衡仲裁组件确定。缓冲队列负责将切片后的数据使用并行FIFO进行缓冲,供计算力均衡仲裁模块取用。
计算力均衡仲裁负责从外部计算单元性能集中监测模块中获取外部各分布式计算单元的各类性能状态参数,并根据这些状态参数进行任务统筹,一方面对分布式进程管理模块提供任务均衡参考,另一方面根据任务均衡信息为分布式进程管理组件分配待处理的缓冲数据。
外部计算单元性能集中监测模块负责通过RPC服务端与各计算单元通信汇总各计算单元的状态信息,包括CPU、内存、网络等状态信息,集中监测,并转换成计算力均衡仲裁模块能够直接分析的统一状态数据。
分布式进程管理组件包括分布任务调度核心、子进程状态监测、子进程创建、子进程迁移、子进程异常终止回收。分布式任务调度核心协调其余四个模块的工作,子进程状态监测负责通过RPC服务监测所有创建的进程运行状态;子进程创建模块负责在各个计算单元中创建新的进程;子进程迁移模块负责在某个子进程异常时将其计算任务的当前结果入栈保存,将临时结果数据存储至结构化数据库。然后开启新的进程,注入当前计算结果,开启新的计算;子进程异常终止回收模块,负责对已经异常的进程进行资源回收,防止计算单元中产生内存泄露。
RPC服务端作为对RPC协议的支撑,可作为服务器角色,与外部各计算单元中的RPC客户端通信。USB通信驱动作为以USB作为数据交换的统一适配层,支撑RPC的的通信服务。
在一个实施例中,如图6所示,为一个实施例中电子设备的内部结构示意图。其中,该电子设备包括USB通信驱动、RPC客户端、计算单元状态表、计算力分析评估、容器资源动态分配、系统活动信息报告、CPU监测、内存监测、网络监测、系统适配,同时还包括一个核心组件:虚拟容器。
USB通信驱动模块与RPC客户端一同提供了对外RPC协议通信的支撑,是各计算单元与网络终端设备中的分布式管理调度通信控制的统一接口。系统适配模块屏蔽了智能设备中操作系统及版本差异,提供统一的对上接口,尤其是对虚拟容器运行环境支撑以及提供CPU/内存/网络等查询通用命令接口,方便上层模块查询使用。该上层模块包括CPU监测、内存监测、网络监测、虚拟容器等。
CPU监测只对智能设备中CPU的状态进行实时监测。监测项包括:用户态CPU使用时间比,系统态CPU使用时间比,空闲CPU时间比等。内存监测负责对智能设备中内存使用情况进行实时监测,网络监测负责对智能设备的网络状态和实时网络数据状态等进行监测。
系统活动信息报告模块负责整合各类监测数据,形成一个统一的智能设备系统能力综合监测信息缓冲区,为计算单元状态表的生成和容器资源动态分配的进行提供状态数据缓冲。
容器资源动态分配模块负责根据系统活动信息报告的缓冲数据,评估当前容器占用的资源是否合理,如果发现当前资源占用与合理值范围偏差太大,则对容器资源进行动态调整,通过虚拟容器总的用户环境(命令)实现。
计算单元状态表负责从系统活动信息报告的缓冲数据中按照通用格式接口整理出一张统一的状态表,供计算力分析评估模块最终得出该计算单元实时的综合能力评估报表。
计算力分析评估模块是对网络终端设备中的网络终端设备提供的直接查询接口,将内部的各项监测数据提炼成当前计算单元的计算力数值,在以网络终端设备为核心的分布式计算网络中成为统一的数据对标参考,方便网络终端设备实施统一调度。
虚拟容器是智能设备中计算单元的执行部件,主要包括用户环境、网络管理、进程管理、资源控制器、文件系统、内存式数据库这几个部分。
用户环境是虚拟容器对外交互的命令行接口,网络管理负责适配虚拟容器的对外网络,进程管理负责管理容器内各任务进程,资源控制器负责对容器对系统资源的使用进行管理控制调整,文件系统是虚拟容器任务进程运行的基础,而内存式数据库则为容器内各任务进程提供数据交换区。
本领域技术人员可以理解,图4和图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的网络终端设备或电子设备的限定,具体的网络终端设备或电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,结合图5和图6,提供了另一种任务分布式处理方法。该方法包括:
1)网络终端设备的非结构化数据库中存储有待处理进程的原始运算数据。
2)并通过外部计算单元性能集中检测模块检测各个与网络终端设备连接的电子设备的设备状态信息,并将监控到的状态信息发送至计算力俊成仲裁。该设备状态信息包括电子设备中的部分或全部组件的性能状态参数,或者还可包含电子设备的计算力。其中,电子设备可通过其内的计算力分析评估模块计算出电子设备自身的计算力,并通过RPC客户端将该计算力发送至网络终端设备。
3)计算力均衡仲裁模块在汇总了电子设备的计算力之后,根据该计算力确定对原始运算数据的分解方式,数据切片模块可从非结构化数据库中获取原始运算数据,按照该分解方式来执行对原始运算数据的分解,并通过缓冲队列将分解后的子运算数据提供给计算力均衡仲裁模块使用,计算机均衡仲裁模块可对分解后的子运算数据按照电子设备的计算力进行分配。
4)分布式进程管理模块可从计算力均衡仲裁模块中获取分解后的子运算数据,并按照计算力均衡仲裁模块设置的分配模式,向对应的电子设备发送对子运算数据的处理指令,该处理指令中包括为电子设备分配的子运算数据。
5)网络终端设备可通过子进程创建模块在电子设备中创建对子运算数据进行处理的子进程任务。电子设备通过虚拟容器对分配的子运算数据进行运算处理,将运算得到的子结果数据发送至网络终端设备,同时监控该进程的运行状态,将运行状态发送至网络终端设备。
6)网络终端设备可通过子进程状态检测模块实时监控电子设备所创建的子进程的运行状态,当出现异常时,可通过子进程异常终止回收模块对已经异常的子进程进行资源回收,防止电子设备中产生内存泄露。同时通过子进程迁移模块将电子设备产生的临时运算数据保存至结构化数据库中。电子设备可对子运算数据进行重新分配。
7)分布式进程管理模块可将接收到的子结果数据通过分布计算结果导入模块导入至离散数据合成模块,并通过离散数据合成模块对子结果数据进程重组合成,生成对待处理进程的进程处理结果数据,将处理结果数据存储至结构化数据库中。
上述的方法对参与计算的电子设备没有性能要求,可以根据各自性能的大小承担对应的计算处理。通过上述的方法,可以大幅度提升网络终端设备的计算处理能力。
应该理解的是,虽然图2、图3和图4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、图3和图4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图7所示,提供了一种任务分布式处理装置,包括:
进程获取模块702,用于获取待处理进程的原始运算数据。
数据分解模块704,用于将原始运算数据分解成多个子运算数据。
任务分配模块706,用于向预设的至少一个电子设备发送对子运算数据的处理指令,处理指令中包括为电子设备分配的子运算数据。
处理子结果汇总模块708,用于接收每个电子设备发送的对子运算数据进行处理的子结果数据。
处理结果生成模块710,用于根据每个电子设备的子结果数据生成对待处理进程的进程处理结果数据。
在一个实施例中,如图8所示,上述装置还包括:
状态信息获取模块712,用于获取与网络终端设备连接的至少一个电子设备的设备状态信息。
数据分解模块704还用于根据设备状态信息将原始运算数据分解成与电子设备的数量匹配的子运算数据。
在一个实施例中,处理结果生成模块710还用于根据设备状态信息计算出对应设备的计算力;根据每个电子设备的计算力将待处理进程的原始运算数据分解成与电子设备的数量匹配的多个子运算数据,每个子运算数据的数据量和对应电子设备的计算力相匹配。
在一个实施例中,设备状态信息包括设备的CPU使用信息、内存使用信息和设备网络状态信息中的一种或多种。
在一个实施例中,任务分配模块706还用于监控每个子进程的运行状态,子进程为对应电子设备对分配的子运算数据而创建的进程;当运行状态为异常状态时,获取对应电子设备对子运算数据进行处理的临时结果数据;对子运算数据进行重新分配,将子运算数据和临时结果数据发送至重新分配的电子设备。
处理子结果汇总模块708还用于接收重新分配的电子设备发送的根据临时结果数据对子运算数据进行处理的子结果数据。
在一个实施例中,处理结果生成模块710还用于对每个子结果数据进行重组合成,生成对待处理进程的进程处理结果数据。
在一个实施例中,进程获取模块702还用于从非结构化数据库中获取待处理进程的原始运算数据。如图9所示,上述装置还包括:
数据存储模块714,用于将子结果数据和进程处理结果数据存储至结构化数据库中。
关于任务分布式处理装置的具体限定可以参见上文中对于任务分布式处理方法的限定,在此不再赘述。本申请中的各个模块或组件可全部或部分通过软件、硬件及其组合来实现。上述各模块或组件可以硬件形式内嵌于或独立于网络终端设备中的处理器中,也可以以软件形式存储于网络终端设备中的存储器中,以便于处理器调用执行以上各个模块或组件对应的操作。
在一个实施例中,提供了一种网络终端设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现本申请描述的任意一种任务分布式处理方法的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现本申请描述的任意一种任务分布式处理方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。