一种确定分布式代价的方法、装置、存储介质及电子设备与流程

文档序号:20264570发布日期:2020-04-03 18:13阅读:121来源:国知局
一种确定分布式代价的方法、装置、存储介质及电子设备与流程

本发明涉及分布式系统的技术领域,具体而言,涉及一种确定分布式代价的方法、装置、存储介质及电子设备。



背景技术:

目前,电子政务、医疗保健、金融和人工智能等行业的数据共享需求日益增长,如精密医学需要共享临床、遗传、环境和生活方式数据,以更好地治疗和预防疾病。拥有数据的数据所有者一般作为数据源以分布式方式组成分布式数据系统。

分布式数据源上的数据使用已被广泛研究,例如查询使用等;在分布式数据的使用过程中,分布式的处理方式可以将单个问题分为多个部分,每个部分可由不同的计算节点完成。分布式处理的过程需要综合考虑节点范围、数据量、计算时间、安全协议等,以确定分布式处理的成本

在许多实际场景中,往往是在异构环境下实现分布式的数据共享,各方之间使用不同的安全模式。在异构环境中,计算节点之间的各种信任关系、沿不同通信通道和不同计算节点的不同威胁级别、可用的特殊硬件支持程度等导致在确定计算成本时比较困难,且传统计算成本的方式一般在粗粒度上计算成本代价,计算结果并不准确。



技术实现要素:

为解决上述问题,本发明实施例的目的在于提供一种确定分布式代价的方法、装置、存储介质及电子设备。

第一方面,本发明实施例提供了一种确定分布式代价的方法,包括:

获取分布式的数据处理计划,将所述数据处理计划涉及的数据所有节点作为目标节点,所述数据处理计划包含所述目标节点之间的依赖关系;

确定具有依赖关系的所述目标节点之间的数据传输代价,并根据所述数据传输代价确定所述数据处理计划的总传输代价;

将所述数据处理计划分为本地处理计划和前序处理计划,根据所述本地处理计划的本地执行代价和所述前序处理计划的前序执行代价的最大值确定所述数据处理计划的总执行代价;

根据所述总传输代价和所述总执行代价确定所述数据处理计划的总代价。

在一种可能的实现方式中,所述获取分布式的数据处理计划包括:

为每个所述目标节点分配相应的一个或多个原子操作,并确定所有所述原子操作之间的依赖关系,根据所有原子操作之间的依赖关系生成有向无环结构的数据处理计划。

在一种可能的实现方式中,所述根据所述数据传输代价确定所述数据处理计划的总传输代价包括:

根据所述目标节点之间的数据传输代价确定每个原子操作对应的数据传输原子代价;

将所有所述原子操作的数据传输原子代价之和作为所述数据处理计划的总传输代价。

在一种可能的实现方式中,所述根据所述目标节点之间的数据传输代价确定每个原子操作对应的数据传输原子代价包括:

以原子操作为单位、将所述目标节点之间的数据传输代价分为原子操作之间的数据传输代价;

确定当前原子操作的异地在先原子操作,根据所述当前原子操作与所述异地在先原子操作之间的数据传输代价确定所述当前原子操作的数据传输原子代价,所述异地在先原子操作为其他目标节点中具有指向所述当前原子操作的依赖关系的原子操作;且若将第j个目标节点中的一个原子操作δ作为当前原子操作,所述原子操作δ的数据传输原子代价为:

其中,δ表示位于第j个目标节点中的一个原子操作,函数toll(i,j)(x)表示将数据x从第i个目标节点传输至第j个目标节点的数据传输代价;表示在第i个目标节点中第k个需要传输至第j个目标节点的原子操作δ的数据,ki表示在第i个目标节点中原子操作δ的异地在先原子操作的数量,n表示目标节点的总数量。

在一种可能的实现方式中,所述将所述数据处理计划分为本地处理计划和前序处理计划,根据所述本地处理计划的本地执行代价和所述前序处理计划的前序执行代价的最大值确定所述数据处理计划的总执行代价,包括:

根据所述数据处理计划确定不存在指向本地依赖关系的初始原子操作δ1,并根据所述初始原子操作δ1自身的处理计划确定所述初始原子操作δ1的本地执行代价cl(δ1);将所述初始原子操作δ1的本地执行代价cl(δ1)作为所述初始原子操作δ1的原子执行代价表示所述初始原子操作δ1的原子处理计划;

根据所述数据处理计划中的依赖关系选取下一个原子操作作为当前原子操作δc,并确定所述当前原子操作δc的所有前序原子操作δc,i,所述前序原子操作为具有指向所述当前原子操作的依赖关系的其他原子操作,且所述前序原子操作δc,i为所述当前原子操作的第i个前序原子操作;

将与所述前序原子操作δc,i相对应的原子处理计划作为所述当前原子操作δc的前序处理计划,并将所述前序原子操作δc,i的原子执行代价作为所述当前原子操作的前序执行代价cp(δc,i);

将所述当前原子操作δc自身的任务计划作为所述当前原子操作δc的本地处理计划,并确定所述当前原子操作δc的本地执行代价cl(δc);

将所述当前原子操作δc的本地处理计划和前序处理计划作为所述当前原子操作δc的原子处理计划并将所述当前原子操作δc的所有前序执行代价的最大值与所述本地执行代价之和作为所述当前原子操作δc的原子执行代价

之后继续选取下一个原子操作作为当前原子操作,重复上述确定所述当前原子操作的原子执行代价的过程,直至遍历所有的所述原子操作,并将最后的所述原子操作的原子执行代价作为所述数据处理计划的总执行代价。

在一种可能的实现方式中,所述根据所述总传输代价和所述总执行代价确定所述数据处理计划的总代价包括:

在所述总传输代价不大于预设阈值时,将所述总执行代价作为所述数据处理计划的总代价。

第二方面,本发明实施例还提供了一种确定分布式代价的装置,包括:

计划模块,用于获取分布式的数据处理计划,将所述数据处理计划涉及的数据所有节点作为目标节点,所述数据处理计划包含所述目标节点之间的依赖关系;

传输代价确定模块,用于确定具有依赖关系的所述目标节点之间的数据传输代价,并根据所述数据传输代价确定所述数据处理计划的总传输代价;

执行代价确定模块,用于将所述数据处理计划分为本地处理计划和前序处理计划,根据所述本地处理计划的本地执行代价和所述前序处理计划的前序执行代价的最大值确定所述数据处理计划的总执行代价;

总代价确定模块,用于根据所述总传输代价和所述总执行代价确定所述数据处理计划的总代价。

在一种可能的实现方式中,所述计划模块获取分布式的数据处理计划包括:

为每个所述目标节点分配相应的一个或多个原子操作,并确定所有所述原子操作之间的依赖关系,根据所有原子操作之间的依赖关系生成有向无环结构的数据处理计划。

第三方面,本发明实施例还提供了一种计算机存储介质,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令用于上述任意一项所述的确定分布式代价的方法。

第四方面,本发明实施例还提供了一种电子设备,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述任意一项所述的确定分布式代价的方法。

本发明实施例上述第一方面提供的方案中,基于目标节点之间的数据传输代价可以具体确定数据处理计划的总传输代价,将数据处理计划分为本地处理计划和并行的前序处理计划,可以具体确定总执行代价,以数据传输代价和执行代价综合考量分布式执行数据处理计划的总代价,可以准确确定分布式计算的总成本;同时,数据处理计划为异构安全环境下的分布式计算作出了形式化的描述,从而适用于异构环境下的分布式计算;且本实施例中确定并行的前序处理计划,从而基于前序执行代价的最大值可以挖掘出并行执行成本,能够准确确定数据处理计划的总执行代价。以原子操作为基本单位,基于原子操作的异地在先原子操作可以确定每个原子操作的数据传输原子代价,进而能够精准确定总数据传输代价,且不会遗漏。采用层级依次计算的方式,最后原子操作仍然可以深度挖掘与其不具有直接依赖关系的其他原子操作的并行执行成本,从而可以更加准确地确定数据处理计划的总执行代价。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了本发明实施例所提供的一种确定分布式代价的方法的流程图;

图2示出了本发明实施例所提供的确定分布式代价的方法中,多个目标节点传输数据的一种示意图;

图3示出了本发明实施例所提供的确定分布式代价的方法中,有向无环结构的数据处理计划的一种示意图;

图4示出了本发明实施例所提供的一种确定分布式代价的装置的结构示意图;

图5示出了本发明实施例所提供的用于执行确定分布式代价的方法的电子设备的结构示意图。

具体实施方式

在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

本发明实施例提供的一种确定分布式代价的方法,参见图1所示,包括:

步骤101:获取分布式的数据处理计划,将数据处理计划涉及的数据所有节点作为目标节点,数据处理计划包含目标节点之间的依赖关系。

本发明实施例中,数据以分布式的方式存放在分布式系统的某些节点中,该节点即为数据所有节点,当其他节点需要使用数据所有节点中的数据时,即可生成相应的、分布式的数据处理计划,通过该数据处理计划实现数据使用。例如,当其他节点需要查询某些数据时,此时需要从一个或多个数据所有节点中来获取相应的数据,此时可以生成一个查询计划,该查询计划即为一种数据处理计划。一般情况下,生成该数据处理计划的节点为可信任的规划节点,该规划节点作为中间角色监督整个数据处理过程;其中,该规划节点是可信任的,或者说是可被审计的,具体可通过区块链技术实现。

本实施例中,该数据处理计划需要从多个数据所有节点中获取数据,相应的数据所有节点作为目标节点;同时,目标节点之间具有依赖关系,该依赖关系指的是其中一个目标节点进行数据处理时需要依赖于另一个目标节点中的数据;数据处理计划中包含目标节点之间的依赖关系。

步骤102:确定具有依赖关系的目标节点之间的数据传输代价,并根据数据传输代价确定数据处理计划的总传输代价。

本发明实施例中,该数据处理计划需要由目标节点执行,目标节点基于该数据处理计划执行相应的数据处理任务,且目标节点还会向其他目标节点发送数据,即执行数据处理计划过程中会涉及目标节点间的数据交换,两个目标节点之间的安全协议、通信渠道、可用硬件支撑、以及需要传输的数据大小、粒度等均会影响两个目标节点之间传输数据时的代价,即数据传输代价。在确定所有的数据传输代价之后,即可确定该数据处理计划的总传输代价;例如,可以将所有数据传输代价之和作为该数据处理计划的总传输代价。

本实施例中,可以用函数toll(i,j)(x)表示将数据x从第i个目标节点传输至第j个目标节点的数据传输代价,即函数toll(i,j)()本身与i和j两个目标节点之间的安全协议等参数有关,该函数toll(i,j)()可以预先确定,之后基于所需传输数据x的大小、粒度等即可确定将数据x从第i个目标节点传输至第j个目标节点的数据传输代价。具体的,可以简单定义数据传输代价函数,例如toll(i,j)(x)=ai,jf(x);其中,ai,j为依赖于第i个目标节点到第j个目标节点之间安全协议的调整系数,且该调整系数可以为零;f(x)表示数据x的大小、粒度等。

此外,toll(i,j)(x)与toll(j,i)(x)一般可以是相同的,但也可以基于二者之间的安全协议等设置为不同的形式,例如ai,j≠aj,i。参见图2所示,医院a与医院b之间可采用相同的数据传输代价函数,而医院a与保险公司c之间采用不同的数据传输代价函数。如图2所示,政府部门到医院a和医院b之间的数据传输代价均为0,医院之间、或者医院传输至保险公司的数据传输代价为一倍的x,保险公司传输至医院的数据传输代价为二倍的x,保险公司之间的数据传输代价为三倍的x。

需要说明的是,图2中仅示出了目标节点之间传输数据时的数据传输代价,并不用于限定在执行数据处理计划时需要按照图2中的逻辑进行。

步骤103:将数据处理计划分为本地处理计划和前序处理计划,根据本地处理计划的本地执行代价和前序处理计划的前序执行代价的最大值确定数据处理计划的总执行代价。

本发明实施例中,执行代价为节点或单元的算力消耗,即节点或单元执行分布式计算时的资源消耗成本。数据处理计划为分布式的计划,该数据处理计划需要有序执行,本实施例以当前的某个节点作为基准,将数据处理计划分为本地处理计划以及该本地处理计划之前的前序处理计划,基于该本地处理计划和前序处理计划来确定整个数据处理计划的总执行代价。其中,可以以目标节点为基准,也可以对目标节点的任务进行细分,以更小的单元作为基准;该本地处理计划可以为在该基准的节点上自身的处理计划,相应的本地执行代价为执行该基准的节点自身的处理计划时所需的代价。

本实施例中,由于前序处理计划可能存在多个,对于本地处理计划来说,多个前序处理计划为并行执行的,本实施例中将多个前序执行代价的最大值作为所有前序处理计划的并行执行代价,基于前序执行代价的最大值和本地执行代价能够更准确地确定数据处理计划的总执行代价。

步骤104:根据总传输代价和总执行代价确定数据处理计划的总代价。

本发明实施例中,数据处理计划的总代价可以包含节点之间传输数据时的数据传输代价,还可以包括目标节点计算处理时的执行代价,结合两者即可确定相应的总代价。

可选的,上述步骤104“根据总传输代价和总执行代价确定数据处理计划的总代价”包括:在总传输代价不大于预设阈值时,将总执行代价作为数据处理计划的总代价。本实施例中,通过确定数据处理计划的总代价,可以方便向使用数据的节点收取相应的资源,例如,某个查询节点发起了查询请求,规划节点生成相应的查询计划,根据该查询计划的总代价即可向该查询节点收取查询费用。此外,对于同一任务,可以生成不同的数据处理计划,通过比较每个数据处理计划的总代价即可优化数据处理计划,并选取出成本较低的数据处理计划。本实施例中,将数据处理计划的总传输代价作为基本的评价标准,即只要在总传输代价不大于预设阈值时,即说明该数据处理计划符合基本要求;之后通过该总执行代价评价数据处理计划的优劣,从而可以实现优化。

本发明实施例提供的一种确定分布式代价的方法,基于目标节点之间的数据传输代价可以具体确定数据处理计划的总传输代价,将数据处理计划分为本地处理计划和并行的前序处理计划,可以具体确定总执行代价,以数据传输代价和执行代价综合考量分布式执行数据处理计划的总代价,可以准确确定分布式计算的总成本;同时,数据处理计划为异构安全环境下的分布式计算作出了形式化的描述,从而适用于异构环境下的分布式计算;且本实施例中确定并行的前序处理计划,从而基于前序执行代价的最大值可以挖掘出并行执行成本,能够准确确定数据处理计划的总执行代价。

在上述实施例的基础上,该数据处理计划具体可以为有向无环结构,上述步骤101“获取分布式的数据处理计划”包括:

步骤a1:为每个目标节点分配相应的一个或多个原子操作,并确定所有原子操作之间的依赖关系,根据所有原子操作之间的依赖关系生成有向无环结构的数据处理计划。

本发明实施例中,以原子操作为基本单位生成有向无环结构的数据处理计划。其中,该原子操作为数据处理过程中的基本操作,该原子操作具体可以为投影(projection)、选择(selection)、自然连接(naturaljoin)、去重(setdifference)、并(setunion)、重命名(renaming)等。两个原子操作之间的依赖关系指的是其中一个原子操作进行数据处理时需要依赖于另外一个原子操作中的数据。本实施例中,该依赖关系具有有向性,即两个原子操作中,若原子操作a依赖于原子操作b,则原子操作b不会依赖于原子操作b。在确定所有原子操作之间的依赖关系之后即可生成有向无环结构的数据处理计划,本实施例提供的数据处理计划的一种结构示意图参见图3所示,图3以有向无环图(dag,directedacyclicgraph)表示该数据处理计划。在图3中,每个圆圈表示一个原子操作,两个原子操作之间的依赖关系用有向边表示,每个虚框代表一个目标节点。即图3中共包含五个目标节点a、b、c、d、e,五个目标节点依次分配有1个、3个、5个、4个、3个原子操作,例如目标节点b包含三个原子操作b1、b2、b3;同时,原子操作a1具有指向原子操作b3的有向边,则原子操作b3依赖于该原子操作a1。

在上述实施例的基础上,当以原子操作为基本单位生成有向无环结构的数据处理计划时,上述步骤102“根据数据传输代价确定数据处理计划的总传输代价”包括:

步骤b1:根据目标节点之间的数据传输代价确定每个原子操作对应的数据传输原子代价。

步骤b2:将所有原子操作的数据传输原子代价之和作为数据处理计划的总传输代价。

本发明实施例中,由于目标节点中可能存在多个原子操作,故目标节点之间的数据传输过程可以细分为一个或多个原子操作之间的数据传输过程。例如,对于图3中的目标节点b和目标节点c,二者之间的数据传输过程可以细分为b1→c3、b2→c3、b2→c4、b3→c5共四个原子操作之间的数据传输过程。本实施例中,在确定原子操作之间的数据传输代价之后,可以为每个原子操作设置相应的传输代价,即数据传输原子代价,每个原子操作的数据传输原子代价表示数据传输到该原子操作的传输代价;相应的,数据处理计划的总传输代价即为所有原子操作的数据传输原子代价之和。

具体的,上述步骤b1“根据目标节点之间的数据传输代价确定每个原子操作对应的数据传输原子代价”包括:

步骤b11:以原子操作为单位、将目标节点之间的数据传输代价分为原子操作之间的数据传输代价。

本发明实施例中,如上所述,两个目标节点之间的数据传输过程可以分为多个原子操作之间的数据传输过程,相应的,可以以原子操作为单位确定两个原子操作之间的数据传输代价。其中,对于确定的两个目标节点,二者之间所用的安全协议一般为确定的,故即使是对于不同的原子操作,在确定原子操作之间的数据传输代价时可以基于相同的数据传输代价函数toll(i,j)(x);不同原子操作所传输的数据x不同,从而可以确定不同的数据传输代价。

步骤b12:确定当前原子操作的异地在先原子操作,根据当前原子操作与异地在先原子操作之间的数据传输代价确定当前原子操作的数据传输原子代价,该异地在先原子操作为其他目标节点中具有指向当前原子操作的依赖关系的原子操作;且若将第j个目标节点中的一个原子操作δ作为当前原子操作,原子操作δ的数据传输原子代价为:

其中,δ表示位于第j个目标节点中的一个原子操作,函数toll(i,j)(x)表示将数据x从第i个目标节点传输至第j个目标节点的数据传输代价;表示在第i个目标节点中第k个需要传输至第j个目标节点的原子操作δ的数据,ki表示在第i个目标节点中原子操作δ的异地在先原子操作的数量,n表示目标节点的总数量。

本发明实施例中,将第j个目标节点中的原子操作δ作为当前原子操作,从与该第j个目标节点不同的其他目标节点中确定具有指向该原子操作δ的依赖关系的原子操作,该原子操作与当前原子操作δ位于不同的目标节点,且在数据处理计划中该原子操作位于当前原子操作δ的前侧,即该原子操作为当前原子操作δ的一个异地在先原子操作。对于当前原子操作δ来说,本地的其他原子操作向其传输数据时不会产生数据传输代价,故所有异地在先原子操作与该当前原子操作δ之间的数据传输代价之和即可以表示该当前原子操作δ的数据传输原子代价,即:

具体的,图3中共包含五个目标节点,即n=5;将五个目标节点a至e依次作为第1个至第5个目标节点,若将原子操作e1作为当前原子操作,则j可以为5;同时,其他的目标节点c和d中存在原子操作e1的异地在先原子操作,即顺位为3和4的目标节点具有异地在先原子操作,故i可以取值为3、4;当i为其他值(例如1、5等)时,由于此时的第i个节点与第j个节点之间不存在数据传输,相应的数据为零,其传输代价也为零。同时,原子操作e1的异地在先原子操作包括c3、c4、d3,异地在先原子操作c3向该当前原子操作e1发送的数据可以为异地在先原子操作c4向该当前原子操作e1发送的数据可以为即第三个目标节点中异地在先原子操作的数量k3=2,同理可知k4=1,利用数据传输代价函数toll(i,j)(x)可以确定每个异地在先原子操作与该原子操作e1之间的数据传输代价,进而求和确定该原子操作e1的数据传输原子代价t(e1)。

其中,若其他节点中不存在指向该原子操作δ的其他原子操作,则该原子操作δ不存在异地在先原子操作,则该原子操作δ的数据传输原子代价为0。如图3中的原子操作a1、b1、b2等,其数据传输原子代价均为0。在确定所有原子操作的数据传输原子代价之后,通过求和即可确定数据处理计划的总数据传输代价。

本发明实施例中,以原子操作为基本单位,基于原子操作的异地在先原子操作可以确定每个原子操作的数据传输原子代价,进而能够精准确定总数据传输代价,且不会遗漏。

在上述实施例的基础上,本实施例以原子操作为单位将数据处理计划分为本地部分和前序计划部分。具体的,上述步骤103“将数据处理计划分为本地处理计划和前序处理计划,根据本地处理计划的本地执行代价和前序处理计划的前序执行代价确定数据处理计划的总执行代价”包括:

步骤c1:根据数据处理计划确定不存在指向本地依赖关系的初始原子操作δ1,并根据初始原子操作δ1自身的处理计划确定初始原子操作δ1的本地执行代价cl(δ1);将初始原子操作δ1的本地执行代价cl(δ1)作为初始原子操作δ1的原子执行代价表示初始原子操作δ1的原子处理计划。

本发明实施例中,规划节点可以将数据处理计划发送至目标节点,使得目标节点可以得知需要进行哪些数据处理,且每个原子操作按照有向无环结构的数据处理计划依次进行数据处理;其中,需要从初始原子操作开始进行数据处理。具体的,若某个原子操作不存在指向其的依赖关系,则该原子操作为初始原子操作,图3中的原子操作a1、b1等均为初始原子操作。在执行数据处理计划时,初始原子操作δ1本地需要执行自身的处理计划,通过确定初始原子操作δ1执行自身的处理计划即可确定所需要消耗的算力,即本地执行代价cl(δ1)。例如,初始原子操作a1为对本地数据进行去重处理,则该处理计划即为对a1的本地数据进行去重处理的计划,在进行去重处理时的算力消耗即为该原子操作a1的本地执行代价,且其为cl(a1)。本实施例中,函数cl(δ)表示原子操作δ的本地执行代价。

此外,本实施例中将原子操作所相关的全部计划称为“原子处理计划”。由于该初始原子操作δ1不存在前序的计划,即不存在前序处理计划,即初始原子操作δ1所执行的全部计划即为自身的处理计划,即初始原子操作δ1的原子处理计划只包含其自身的处理计划,且该原子处理计划的原子执行代价即为初始原子操作δ1的本地执行代价cl(δ1)。其中,函数c(ξ)表示处理计划ξ的原子执行代价。

步骤c2:根据数据处理计划中的依赖关系选取下一个原子操作作为当前原子操作δc,并确定当前原子操作δc的所有前序原子操作δc,i,前序原子操作为具有指向当前原子操作的依赖关系的其他原子操作,且前序原子操作δc,i为当前原子操作的第i个前序原子操作。

本发明实施例中,若某个原子操作的依赖关系指向当前原子操作,则该原子操作为该当前原子操作的前序原子操作。如图3中,原子操作a1指向原子操作b3,即原子操作a1具有指向原子操作b3的依赖关系,故原子操作a1是原子操作b3的一个前序原子操作;同样的,原子操作b1和b2也是原子操作b3的前序原子操作。本实施例中,需要基于原子操作之间的依赖关系选取已经确定原子执行代价的原子操作的下一个原子操作作为原子操作。例如图3中,若已经确定了初始原子操作a1的原子执行代价之后可以确定原子操作b3的原子执行代价,即将原子操作b3作为当前原子操作。此外,由于某个原子操作可能存在多个前序原子操作,此时需要确定所有前序原子操作的原子执行代价。例如,若将原子操作b3作为当前原子操作,需要确定其前序原子操作a1、b1、b2的原子执行代价。本实施例中,用δc,i表示当前原子操作δc的第i个前序原子操作。

步骤c3:将与前序原子操作δc,i相对应的原子处理计划作为当前原子操作δc的前序处理计划,并将前序原子操作δc,i的原子执行代价作为当前原子操作的前序执行代价cp(δc,i);将当前原子操作δc自身的任务计划作为当前原子操作δc的本地处理计划,并确定当前原子操作δc的本地执行代价cl(δc)。

步骤c4:将当前原子操作δc的本地处理计划和前序处理计划作为当前原子操作δc的原子处理计划并将当前原子操作δc的所有前序执行代价的最大值与本地执行代价之和作为当前原子操作δc的原子执行代价

本发明实施例中,由于原子操作的原子处理计划表示与该原子操作相关的全部处理计划,故对于当前原子操作δc来说,它的原子处理计划包括当前原子操作δc的本地处理计划和在先的前序原子操作δc,i的原子处理计划,即,与前序原子操作δc,i相对应的原子处理计划是当前原子操作δc的前序处理计划,相应的,前序原子操作δc,i的原子执行代价是当前原子操作的一个前序执行代价cp(δc,i)。其中,函数cp(δ)表示原子操作δ作为前序原子操作时的前序执行代价。

同时,由于当前原子操作δc可能存在多个前序原子操作δc,i,即i可以取多个值,本实施例中将所有前序执行代价的最大值与本地执行代价之和作为当前原子操作δc的原子执行代价即:

其中,l为当前原子操作δc的前序原子操作的数量。

例如,若当前原子操作为图3中的原子操作b3,其前序原子操作包括a1、b1、b2,每个前序原子操作对应一个前序处理计划。该原子操作b3的本地执行代价为而三个前序原子操作的原子执行代价依次为故三个前序处理计划的前序执行代价依次为:

步骤c5:之后继续选取下一个原子操作作为当前原子操作,重复上述确定当前原子操作的原子执行代价的过程,直至遍历所有的原子操作,并将最后的原子操作的原子执行代价作为数据处理计划的总执行代价。

本实施例中,基于前序原子操作的原子执行代价可以确定当前原子操作的原子执行代价,重复上述步骤b2至步骤b4的确定当前原子操作的原子执行代价的过程,在遍历数据处理计划中的所有原子操作之后,即可确定最后原子操作的原子执行代价,该原子执行代价即可作为数据处理计划的总执行代价。如图3中,最后原子操作为e3,即原子操作e3的原子执行代价即为数据处理计划的总执行代价。本实施例中,基于并行的前序执行代价的最大值可以挖掘出并行的执行成本,同时,采用层级依次计算的方式,最后原子操作仍然可以深度挖掘与其不具有直接依赖关系的其他原子操作的并行执行成本,从而可以更加准确地确定数据处理计划的总执行代价。

以上详细介绍了确定分布式代价的方法的流程,该方法也可以通过相应的装置实现,下面详细介绍该装置的结构和功能。

本发明实施例提供的一种确定分布式代价的装置,参见图4所示,包括:

计划模块41,用于获取分布式的数据处理计划,将所述数据处理计划涉及的数据所有节点作为目标节点,所述数据处理计划包含所述目标节点之间的依赖关系;

传输代价确定模块42,用于确定具有依赖关系的所述目标节点之间的数据传输代价,并根据所述数据传输代价确定所述数据处理计划的总传输代价;

执行代价确定模块43,用于将所述数据处理计划分为本地处理计划和前序处理计划,根据所述本地处理计划的本地执行代价和所述前序处理计划的前序执行代价的最大值确定所述数据处理计划的总执行代价;

总代价确定模块44,用于根据所述总传输代价和所述总执行代价确定所述数据处理计划的总代价。

在上述实施例的基础上,所述计划模块41获取分布式的数据处理计划包括:

为每个所述目标节点分配相应的一个或多个原子操作,并确定所有所述原子操作之间的依赖关系,根据所有原子操作之间的依赖关系生成有向无环结构的数据处理计划。

在上述实施例的基础上,所述传输代价确定模块42根据所述数据传输代价确定所述数据处理计划的总传输代价包括:

根据所述目标节点之间的数据传输代价确定每个原子操作对应的数据传输原子代价;

将所有所述原子操作的数据传输原子代价之和作为所述数据处理计划的总传输代价。

在上述实施例的基础上,所述传输代价确定模块42根据所述目标节点之间的数据传输代价确定每个原子操作对应的数据传输原子代价包括:

以原子操作为单位、将所述目标节点之间的数据传输代价分为原子操作之间的数据传输代价;

确定当前原子操作的异地在先原子操作,根据所述当前原子操作与所述异地在先原子操作之间的数据传输代价确定所述当前原子操作的数据传输原子代价,所述异地在先原子操作为其他目标节点中具有指向所述当前原子操作的依赖关系的原子操作;且若将第j个目标节点中的一个原子操作δ作为当前原子操作,所述原子操作δ的数据传输原子代价为:

其中,δ表示位于第j个目标节点中的一个原子操作,函数toll(i,j)(x)表示将数据x从第i个目标节点传输至第j个目标节点的数据传输代价;表示在第i个目标节点中第k个需要传输至第j个目标节点的原子操作δ的数据,ki表示在第i个目标节点中原子操作δ的异地在先原子操作的数量,n表示目标节点的总数量。

在上述实施例的基础上,所述执行代价确定模块43将所述数据处理计划分为本地处理计划和前序处理计划,根据所述本地处理计划的本地执行代价和所述前序处理计划的前序执行代价的最大值确定所述数据处理计划的总执行代价,包括:

根据所述数据处理计划确定不存在指向本地依赖关系的初始原子操作δ1,并根据所述初始原子操作δ1自身的处理计划确定所述初始原子操作δ1的本地执行代价cl(δ1);将所述初始原子操作δ1的本地执行代价cl(δ1)作为所述初始原子操作δ1的原子执行代价表示所述初始原子操作δ1的原子处理计划;

根据所述数据处理计划中的依赖关系选取下一个原子操作作为当前原子操作δc,并确定所述当前原子操作δc的所有前序原子操作δc,i,所述前序原子操作为具有指向所述当前原子操作的依赖关系的其他原子操作,且所述前序原子操作δc,i为所述当前原子操作的第i个前序原子操作;

将与所述前序原子操作δc,i相对应的原子处理计划作为所述当前原子操作δc的前序处理计划,并将所述前序原子操作δc,i的原子执行代价作为所述当前原子操作的前序执行代价cp(δc,i);

将所述当前原子操作δc自身的任务计划作为所述当前原子操作δc的本地处理计划,并确定所述当前原子操作δc的本地执行代价cl(δc);

将所述当前原子操作δc的本地处理计划和前序处理计划作为所述当前原子操作δc的原子处理计划并将所述当前原子操作δc的所有前序执行代价的最大值与所述本地执行代价之和作为所述当前原子操作δc的原子执行代价

之后继续选取下一个原子操作作为当前原子操作,重复上述确定所述当前原子操作的原子执行代价的过程,直至遍历所有的所述原子操作,并将最后的所述原子操作的原子执行代价作为所述数据处理计划的总执行代价。

在上述实施例的基础上,所述总代价确定模块44根据所述总传输代价和所述总执行代价确定所述数据处理计划的总代价包括:

在所述总传输代价不大于预设阈值时,将所述总执行代价作为所述数据处理计划的总代价。

本发明实施例提供的一种确定分布式代价的装置,基于目标节点之间的数据传输代价可以具体确定数据处理计划的总传输代价,将数据处理计划分为本地处理计划和并行的前序处理计划,可以具体确定总执行代价,以数据传输代价和执行代价综合考量分布式执行数据处理计划的总代价,可以准确确定分布式计算的总成本;同时,数据处理计划为异构安全环境下的分布式计算作出了形式化的描述,从而适用于异构环境下的分布式计算;且本实施例中确定并行的前序处理计划,从而基于前序执行代价的最大值可以挖掘出并行执行成本,能够准确确定数据处理计划的总执行代价。以原子操作为基本单位,基于原子操作的异地在先原子操作可以确定每个原子操作的数据传输原子代价,进而能够精准确定总数据传输代价,且不会遗漏。采用层级依次计算的方式,最后原子操作仍然可以深度挖掘与其不具有直接依赖关系的其他原子操作的并行执行成本,从而可以更加准确地确定数据处理计划的总执行代价。

本发明实施例还提供了一种计算机存储介质,所述计算机存储介质存储有计算机可执行指令,其包含用于执行上述的确定分布式代价的方法的程序,该计算机可执行指令可执行上述任意方法实施例中的方法。

其中,所述计算机存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(mo)等)、光学存储器(例如cd、dvd、bd、hvd等)、以及半导体存储器(例如rom、eprom、eeprom、非易失性存储器(nandflash)、固态硬盘(ssd))等。

图5示出了本发明的另一个实施例的一种电子设备的结构框图。所述电子设备1100可以是具备计算能力的主机服务器、个人计算机pc、或者可携带的便携式计算机或终端等。本发明具体实施例并不对电子设备的具体实现做限定。

该电子设备1100包括至少一个处理器(processor)1110、通信接口(communicationsinterface)1120、存储器(memoryarray)1130和总线1140。其中,处理器1110、通信接口1120、以及存储器1130通过总线1140完成相互间的通信。

通信接口1120用于与网元通信,其中网元包括例如虚拟机管理中心、共享存储等。

处理器1110用于执行程序。处理器1110可能是一个中央处理器cpu,或者是专用集成电路asic(applicationspecificintegratedcircuit),或者是被配置成实施本发明实施例的一个或多个集成电路。

存储器1130用于可执行的指令。存储器1130可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。存储器1130也可以是存储器阵列。存储器1130还可能被分块,并且所述块可按一定的规则组合成虚拟卷。存储器1130存储的指令可被处理器1110执行,以使处理器1110能够执行上述任意方法实施例中的确定分布式代价的方法。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换的实施方式,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1