亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于圖計(jì)算引擎的異步消息發(fā)送方法及系統(tǒng)與流程

文檔序號(hào):11138432閱讀:320來源:國知局
基于圖計(jì)算引擎的異步消息發(fā)送方法及系統(tǒng)與制造工藝

本發(fā)明涉及圖數(shù)據(jù)技術(shù)領(lǐng)域,具體涉及一種基于圖計(jì)算引擎的異步消息發(fā)送方法及系統(tǒng)。



背景技術(shù):

大圖形可以很好地應(yīng)用于各種圖形分析和挖掘應(yīng)用程序,例如,社會(huì)網(wǎng)絡(luò)分析、模式識(shí)別、網(wǎng)站分類和社會(huì)媒體營銷等。但是,隨著需要處理圖形的體積越來越龐大,單個(gè)服務(wù)器已經(jīng)不堪重負(fù),因此,一系列大規(guī)模分布式并行框架圖應(yīng)運(yùn)而生。分布式并行框架圖是將一張大圖分割成多個(gè)子圖,然后將這些分開存儲(chǔ),因此計(jì)算時(shí)可以多個(gè)子圖并行運(yùn)行,大大提高運(yùn)算效率,可應(yīng)用于大規(guī)模的現(xiàn)實(shí)世界的圖形問題。

圖的切割方法分為邊切割和頂點(diǎn)切割。邊切割通過切割邊,將頂點(diǎn)均勻地分配到各個(gè)子圖內(nèi),被切割的邊跨越多個(gè)子圖,邊切割后的通信和存儲(chǔ)開銷與切割的邊的數(shù)量成正比的。與邊切割相比,頂點(diǎn)切割將各個(gè)邊均勻地分配到各個(gè)子圖內(nèi),并允許頂點(diǎn)跨越多個(gè)子圖,頂點(diǎn)切割的通信和存儲(chǔ)開銷與每個(gè)頂點(diǎn)所跨越的圖形分區(qū)的數(shù)目成正比。有理論和實(shí)驗(yàn)結(jié)果表明,現(xiàn)實(shí)世界的圖有良好的頂點(diǎn)切割,因此,頂點(diǎn)切割更適用于現(xiàn)實(shí)世界的圖形問題。

切分后的子圖分別存儲(chǔ)在多臺(tái)機(jī)器上,每一個(gè)子圖的信息轉(zhuǎn)換需要消耗網(wǎng)絡(luò)資源,尤其對(duì)一些大的現(xiàn)實(shí)世界的圖形來說,子圖的數(shù)量很多,子圖間的信息交互也會(huì)很頻繁。

基于現(xiàn)有的圖數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),子圖存儲(chǔ)的信息包括點(diǎn)的信息和邊的信息,點(diǎn)的信包括點(diǎn)的編號(hào)和點(diǎn)的屬性,邊的信息包括邊的源點(diǎn)、終點(diǎn)以及邊的屬性。基于現(xiàn)有的圖數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),頂點(diǎn)和邊的信息分開存儲(chǔ),增加了通信開銷;而且存儲(chǔ)結(jié)構(gòu)中缺少索引信息,大大降低了計(jì)算速率。

另外,現(xiàn)有的基于同步并行(BSP)的同步消息發(fā)送模式,需要頻繁地在每一個(gè)子圖間進(jìn)行信息交換,著會(huì)消耗大量的網(wǎng)絡(luò)通信資源,嚴(yán)重影響系統(tǒng)的性能,無法適應(yīng)一些大的現(xiàn)實(shí)世界的圖形的計(jì)算。



技術(shù)實(shí)現(xiàn)要素:

針對(duì)現(xiàn)有技術(shù)中的缺陷,本發(fā)明提供的基于圖計(jì)算引擎的異步消息發(fā)送方法及系統(tǒng),采用異步消息發(fā)送模式,減少了子圖間的信息交換次數(shù),節(jié)省了網(wǎng)絡(luò)通信資源,提高了處理效率。

第一方面,本發(fā)明提供的一種基于圖計(jì)算引擎的異步消息發(fā)送方法,包括:步驟S1,在各個(gè)子圖中,將當(dāng)前頂點(diǎn)接收到的消息按預(yù)定規(guī)則沿所述當(dāng)前頂點(diǎn)的邊發(fā)送給下一頂點(diǎn),直到滿足預(yù)設(shè)條件;步驟S2,同步各個(gè)子圖中所述下一頂點(diǎn)接收的消息;步驟S3,若未滿足終止條件,則返回執(zhí)行步驟S1。

優(yōu)選地,所述在各個(gè)子圖中,將當(dāng)前頂點(diǎn)接收到的消息按預(yù)定規(guī)則沿所述當(dāng)前頂點(diǎn)的邊發(fā)送給下一頂點(diǎn),包括:若滿足觸發(fā)條件,則將當(dāng)前頂點(diǎn)接收到的消息按預(yù)定規(guī)則沿所述當(dāng)前頂點(diǎn)的邊發(fā)送給下一頂點(diǎn)。

優(yōu)選地,所述若滿足觸發(fā)條件,則將當(dāng)前頂點(diǎn)接收到的消息按預(yù)定規(guī)則沿所述當(dāng)前頂點(diǎn)的邊發(fā)送給下一頂點(diǎn),包括:若邊被激活,將當(dāng)前頂點(diǎn)接收到的消息按預(yù)定規(guī)則沿所述當(dāng)前頂點(diǎn)的邊發(fā)送給下一頂點(diǎn)。

優(yōu)選地,若邊被激活,將當(dāng)前頂點(diǎn)接收到的消息按預(yù)定規(guī)則沿所述當(dāng)前頂點(diǎn)的邊發(fā)送給下一頂點(diǎn),包括:若當(dāng)前頂點(diǎn)接收到消息,則激活所述當(dāng)前頂點(diǎn);若所述當(dāng)前頂點(diǎn)被激活,則按照邊激活條件激活所述當(dāng)前頂點(diǎn)相應(yīng)的邊;若所述當(dāng)前頂點(diǎn)相應(yīng)的邊被激活,則將當(dāng)前頂點(diǎn)接收到的消息按預(yù)定規(guī)則沿所述當(dāng)前頂點(diǎn)的邊發(fā)送給下一頂點(diǎn);將所述當(dāng)前頂點(diǎn)的激活狀態(tài)清零。

優(yōu)選地,所述同步各個(gè)子圖中所述下一頂點(diǎn)接收的消息,包括:在各個(gè)子圖中,若所述下一頂點(diǎn)有主頂點(diǎn)索引,則根據(jù)下一頂點(diǎn)的主頂點(diǎn)索引,將所述下一頂點(diǎn)接收到的消息發(fā)送給所述下一頂點(diǎn)的主頂點(diǎn);融合所述下一頂點(diǎn)的主頂點(diǎn)接收到的所有消息;根據(jù)所述下一頂點(diǎn)的主頂點(diǎn)的從頂點(diǎn)索引,將融合后的消息發(fā)送給所述下一頂點(diǎn)的所有從頂點(diǎn)。

優(yōu)選地,還包括:根據(jù)所述融合后的消息更新所述下一頂點(diǎn)的主頂點(diǎn)的屬性;根據(jù)所述下一頂點(diǎn)的主頂點(diǎn)的從頂點(diǎn)索引,將更新后的所述下一頂點(diǎn)的主頂點(diǎn)的屬性發(fā)送給所述下一頂點(diǎn)的所有從頂點(diǎn);根據(jù)更新后的所述下一頂點(diǎn)的主頂點(diǎn)的屬性,更新所述下一頂點(diǎn)的從頂點(diǎn)的屬性。

優(yōu)選地,所述預(yù)設(shè)條件為沒有產(chǎn)生新消息或迭代次數(shù)達(dá)到設(shè)定的閾值。

第二方面,本發(fā)明提供的一種基于圖計(jì)算引擎的異步消息發(fā)送系統(tǒng),包括:消息迭代模塊,用于在各個(gè)子圖中,將當(dāng)前頂點(diǎn)接收到的消息按預(yù)定規(guī)則沿所述當(dāng)前頂點(diǎn)的邊發(fā)送給下一頂點(diǎn),直到滿足預(yù)設(shè)條件;消息同步模塊,用于同步各個(gè)子圖中所述下一頂點(diǎn)接收的消息;循環(huán)判斷模塊,用于若未滿足終止條件,則返回執(zhí)行消息迭代模塊的功能。

優(yōu)選地,所述消息同步模塊具體用于:在各個(gè)子圖中,若所述下一頂點(diǎn)有主頂點(diǎn)索引,則根據(jù)下一頂點(diǎn)的主頂點(diǎn)索引,將所述下一頂點(diǎn)接收到的消息發(fā)送給所述下一頂點(diǎn)的主頂點(diǎn);融合所述下一頂點(diǎn)的主頂點(diǎn)接收到的所有消息;根據(jù)所述下一頂點(diǎn)的主頂點(diǎn)的從頂點(diǎn)索引,將融合后的消息發(fā)送給所述下一頂點(diǎn)的所有從頂點(diǎn)。

優(yōu)選地,還包括屬性更新模塊,用于:根據(jù)所述融合后的消息更新所述下一頂點(diǎn)的主頂點(diǎn)的屬性;根據(jù)所述下一頂點(diǎn)的主頂點(diǎn)的從頂點(diǎn)索引,將更新后的所述下一頂點(diǎn)的主頂點(diǎn)的屬性發(fā)送給所述下一頂點(diǎn)的所有從頂點(diǎn);根據(jù)更新后的所述下一頂點(diǎn)的主頂點(diǎn)的屬性,更新所述下一頂點(diǎn)的從頂點(diǎn)的屬性。

本發(fā)明提供的基于圖計(jì)算引擎的異步消息發(fā)送方法及系統(tǒng),在消息發(fā)送過程中,采用異步消息發(fā)送模式,減少了子圖間的信息交換次數(shù),節(jié)省了網(wǎng)絡(luò)通信資源,提高了處理效率;另外,通過主頂點(diǎn)索引和從頂點(diǎn)索引快速查找到頂點(diǎn)在不同子圖間的位置,不再需要計(jì)算,提高了不同子圖間同步數(shù)據(jù)的效率。

附圖說明

圖1為一個(gè)完整的大圖的示意圖;

圖2為將大圖切分后的三個(gè)子圖;

圖3為本發(fā)明實(shí)施例所提供的基于圖計(jì)算引擎的存儲(chǔ)結(jié)構(gòu);

圖4為本發(fā)明實(shí)施例所提供的基于圖計(jì)算引擎的異步消息發(fā)送方法的流程圖;

圖5為本發(fā)明實(shí)施例所提供的基于圖計(jì)算引擎的異步消息發(fā)送系統(tǒng)的結(jié)構(gòu)框圖。

具體實(shí)施方式

下面將結(jié)合附圖對(duì)本發(fā)明技術(shù)方案的實(shí)施例進(jìn)行詳細(xì)的描述。以下實(shí)施例僅用于更加清楚地說明本發(fā)明的技術(shù)方案,因此只是作為示例,而不能以此來限制本發(fā)明的保護(hù)范圍。

需要注意的是,除非另有說明,本申請(qǐng)使用的技術(shù)術(shù)語或者科學(xué)術(shù)語應(yīng)當(dāng)為本發(fā)明所屬領(lǐng)域技術(shù)人員所理解的通常意義。

為了提高子圖之間的數(shù)據(jù)同步效率,本發(fā)明實(shí)施例提供了一種圖數(shù)據(jù)的存儲(chǔ)方法,包括:

按照頂點(diǎn)分割的方式將一個(gè)完整的大圖切分為多個(gè)子圖,其中,在每個(gè)子圖中的邊都是完整的,一個(gè)頂點(diǎn)可能存在于兩個(gè)或兩個(gè)以上的子圖中;

對(duì)于存在兩個(gè)或兩個(gè)以上子圖中的頂點(diǎn),指定其中一個(gè)子圖為該頂點(diǎn)的主子圖,其余的子圖為該頂點(diǎn)的從子圖,在主子圖中的該頂點(diǎn)就為主頂點(diǎn),在從子圖中的該頂點(diǎn)為從頂點(diǎn)。

根據(jù)預(yù)定的存儲(chǔ)結(jié)構(gòu),保存每個(gè)子圖中的頂點(diǎn)和邊的數(shù)據(jù)。

圖1給出了一個(gè)完整的大圖。

沿著圖1中的虛線進(jìn)行切分就得到如圖2所示的三個(gè)子圖。其中,實(shí)線圈為主頂點(diǎn)(如子圖0中的頂點(diǎn)a、b、c、d),虛線圈為從頂點(diǎn)(如子圖0中的頂點(diǎn)g、f,子圖1中的頂點(diǎn)c);以頂點(diǎn)c為例,頂點(diǎn)c在子圖0中為主頂點(diǎn),則子圖0為頂點(diǎn)c的主子圖,子圖1和子圖2為頂點(diǎn)c的從子圖。

圖3給出了按上述方式進(jìn)行存儲(chǔ)的存儲(chǔ)結(jié)構(gòu)。該存儲(chǔ)結(jié)構(gòu)中,每個(gè)子圖是單獨(dú)存儲(chǔ)的,因此該存儲(chǔ)結(jié)構(gòu)適用于并行計(jì)算。每個(gè)子圖中存儲(chǔ)有3部分內(nèi)容:

第一部分為ID映射。local2Global存儲(chǔ)了子圖內(nèi)所有頂點(diǎn)在全局ID(頂點(diǎn)在大圖中的ID),其中所有主頂點(diǎn)的索引號(hào)小于從頂點(diǎn)。global2Local存儲(chǔ)了子圖中每個(gè)頂點(diǎn)的全局ID的索引與本地ID(頂點(diǎn)在子圖中的ID)的映射,以圖3中的子圖0(Partition0)為例,global2Local字段下,“231”為頂點(diǎn)a的全局ID,“0”為頂點(diǎn)a的本地ID。在一個(gè)子圖中,如果主頂點(diǎn)和從頂點(diǎn)的數(shù)量分別為m和n,若一個(gè)頂點(diǎn)的本地ID小于m,則該頂點(diǎn)是主頂點(diǎn),否則該頂點(diǎn)是從頂點(diǎn)。

第二部分為頂點(diǎn)信息(vertices)。attributesOfMaster用于存儲(chǔ)主頂點(diǎn)的屬性值,其排序與local2Global的順序相同。slaveInfoOfMaster用于存儲(chǔ)主頂點(diǎn)對(duì)應(yīng)的從頂點(diǎn)索引,從頂點(diǎn)索引包括從頂點(diǎn)所在的子圖編號(hào)和在子圖中的本地ID,如果一個(gè)頂點(diǎn)被切分,將存在一個(gè)或多個(gè)從頂點(diǎn)分布在其他的子圖中,例如,在子圖0中的頂點(diǎn)891(即頂點(diǎn)c)有兩個(gè)從頂點(diǎn),在子圖1和子圖2中的本地ID分別為4和3(見子圖1和子圖2中的global2Local),因此在子圖0中slaveInfoOfMaster相應(yīng)的位置存儲(chǔ)頂點(diǎn)891的從頂點(diǎn)索引“1,4”和“2,3”。attributesOfSlave用于存儲(chǔ)從頂點(diǎn)的屬性值。masterInfoOfSlave用于存儲(chǔ)從頂點(diǎn)對(duì)應(yīng)的主頂點(diǎn)索引,主頂點(diǎn)索引包括主頂點(diǎn)所在的子圖編號(hào)和主頂點(diǎn)在子圖中的本地ID,例如在子圖0中,從頂點(diǎn)412(即頂點(diǎn)g)的主頂點(diǎn)在子圖2中,其在子圖2中的本地ID是0,因此在子圖0中masterInfoOfSlave相應(yīng)的位置存儲(chǔ)頂點(diǎn)412的主頂點(diǎn)索引“2,0”。從頂點(diǎn)的屬性可以根據(jù)主頂點(diǎn)的屬性值進(jìn)行更新。

第三部分為邊信息(edges)。邊的源點(diǎn)的本地ID存儲(chǔ)在localSrcIds中,邊的終點(diǎn)的本地ID存儲(chǔ)在與localSrcIds對(duì)應(yīng)的localDstIds中,以頂點(diǎn)231指向頂點(diǎn)2851的邊為例,頂點(diǎn)231(本地ID為0)為源點(diǎn),則localSrcIds(0)為0,頂點(diǎn)2851(本地ID為1)為終點(diǎn),則localDstIds(0)為1。edgeAttributes存儲(chǔ)邊的屬性值。

本發(fā)明實(shí)施例提供的基于圖計(jì)算引擎的存儲(chǔ)結(jié)構(gòu)中包括點(diǎn)的包含關(guān)系(主頂點(diǎn)索引和從頂點(diǎn)索引),在查找過程中,可以通過索引快速查找到目標(biāo)點(diǎn),不再需要計(jì)算,提高了查找效率;另外,將點(diǎn)和邊共同存儲(chǔ),一些共享的信息不需要重復(fù)存儲(chǔ),節(jié)省了存儲(chǔ)空間。

本發(fā)明實(shí)施例提供的基于圖計(jì)算引擎的存儲(chǔ)結(jié)構(gòu)中包括點(diǎn)的包含關(guān)系(主頂點(diǎn)索引和從訂點(diǎn)索引),在查找過程中,可以通過索引快速查找到目標(biāo)點(diǎn),不再需要計(jì)算,提高了查找效率;另外,將點(diǎn)和邊共同存儲(chǔ),一些共享的信息不需要重復(fù)存儲(chǔ),節(jié)省了存儲(chǔ)空間。

基于上述圖數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu),本發(fā)明實(shí)施例提供的一種基于圖計(jì)算引擎的異步消息發(fā)送方法,具體步驟如圖4所示,包括:

步驟S1,在各個(gè)子圖中,將當(dāng)前頂點(diǎn)接收到的消息按預(yù)定規(guī)則沿當(dāng)前頂點(diǎn)的邊發(fā)送給下一頂點(diǎn),直到滿足預(yù)設(shè)條件。

其中,消息從當(dāng)前頂點(diǎn)發(fā)送到下一頂點(diǎn)為一次消息的迭代,若未滿足預(yù)設(shè)條件則繼續(xù)消息的迭代,上一次迭代過程中接收到消息在頂點(diǎn)即為下一次迭代過程中的當(dāng)前頂點(diǎn)。

步驟S2,同步各個(gè)子圖中下一頂點(diǎn)接收的消息。

其中,同步是指共享各個(gè)子圖中的全局ID相同的頂點(diǎn)接收到的消息。

步驟S3,若未滿足終止條件,則返回執(zhí)行步驟S1。

其中,返回執(zhí)行步驟S1即進(jìn)行新一輪的循環(huán)發(fā)送,上一次循環(huán)發(fā)送過程中最終接收到消息的頂點(diǎn)即為下一次循環(huán)發(fā)送過程中步驟S1中起始的當(dāng)前頂點(diǎn)。

本發(fā)明實(shí)施例提供的基于圖計(jì)算引擎的異步消息發(fā)送方法,采用異步消息發(fā)送模式,減少了子圖間的信息交換次數(shù),節(jié)省了網(wǎng)絡(luò)通信資源,提高了處理效率。

其中,步驟S1的實(shí)現(xiàn)方式有多種,本發(fā)明實(shí)施例提供了步驟S1的一種優(yōu)選方式,具體包括:若滿足觸發(fā)條件,則將當(dāng)前頂點(diǎn)接收到的消息按預(yù)定規(guī)則沿當(dāng)前頂點(diǎn)的邊發(fā)送給下一頂點(diǎn)。

進(jìn)一步地,步驟S1的優(yōu)選方式還可以是:若邊被激活,將當(dāng)前頂點(diǎn)接收到的消息按預(yù)定規(guī)則沿當(dāng)前頂點(diǎn)的邊發(fā)送給下一頂點(diǎn)。

進(jìn)一步地,步驟S1的優(yōu)選方式還可以是:若當(dāng)前頂點(diǎn)接收到消息,則激活當(dāng)前頂點(diǎn);若當(dāng)前頂點(diǎn)被激活,則按照邊激活條件激活當(dāng)前頂點(diǎn)相應(yīng)的邊;若當(dāng)前頂點(diǎn)相應(yīng)的邊被激活,則將當(dāng)前頂點(diǎn)接收到的消息按預(yù)定規(guī)則沿當(dāng)前頂點(diǎn)的邊發(fā)送給下一頂點(diǎn);將當(dāng)前頂點(diǎn)的激活狀態(tài)清零。該優(yōu)選方法,以頂點(diǎn)接收到消息為發(fā)送消息的觸發(fā)條件,形成鏈?zhǔn)椒磻?yīng),更新消息會(huì)通過邊自動(dòng)傳遞到下一個(gè)頂點(diǎn),直到滿足終止條件,提高了信息發(fā)送效率。

其中,步驟S1中的預(yù)定規(guī)則包括以下規(guī)則中的任意一種:(1)消息只能從源點(diǎn)發(fā)給終點(diǎn),(2)消息只能從終點(diǎn)發(fā)往源點(diǎn),(3)消息既可以從源點(diǎn)發(fā)往終點(diǎn)也可以從終點(diǎn)發(fā)往源點(diǎn)。實(shí)際應(yīng)用中,消息發(fā)送的方向可以根據(jù)用戶的實(shí)際需求設(shè)定,如根據(jù)源點(diǎn)和終點(diǎn)的屬性值、消息的具體內(nèi)容判斷選用哪種消息發(fā)送的規(guī)則。

其中,邊被激活的條件包括邊的源點(diǎn)被激活和/或邊的終點(diǎn)被激活。

其中,步驟S1中的預(yù)設(shè)條件可由用戶根據(jù)實(shí)際需求進(jìn)行設(shè)定,優(yōu)選為沒有產(chǎn)生新消息和/或迭代次數(shù)達(dá)到設(shè)定的閾值。沒有產(chǎn)生新消息是指消息沒有沿著邊發(fā)送,即沒有頂點(diǎn)接收到消息。預(yù)設(shè)條件的設(shè)定可以控制消息在各個(gè)子圖中迭代的時(shí)間。

步驟S2的實(shí)現(xiàn)方式有多種,本發(fā)明實(shí)施例提供的提供了步驟S2的優(yōu)選方式,具體包括:在各個(gè)子圖中,若下一頂點(diǎn)有主頂點(diǎn)索引,則根據(jù)下一頂點(diǎn)的主頂點(diǎn)索引,將下一頂點(diǎn)接收到的消息發(fā)送給下一頂點(diǎn)的主頂點(diǎn);融合下一頂點(diǎn)的主頂點(diǎn)接收到的所有消息;根據(jù)下一頂點(diǎn)的主頂點(diǎn)的從頂點(diǎn)索引,將融合后的消息發(fā)送給下一頂點(diǎn)的所有從頂點(diǎn)。

其中,若下一頂點(diǎn)沒有主頂點(diǎn)索引,則表明該頂點(diǎn)就是主頂點(diǎn),該頂點(diǎn)只需接收其從頂點(diǎn)發(fā)送過來的消息即可。

本發(fā)明實(shí)施例的方法還包括對(duì)頂點(diǎn)屬性的更新,具體步驟包括:根據(jù)融合后的消息更新下一頂點(diǎn)的主頂點(diǎn)的屬性;根據(jù)下一頂點(diǎn)的主頂點(diǎn)的從頂點(diǎn)索引,將更新后的下一頂點(diǎn)的主頂點(diǎn)的屬性發(fā)送給下一頂點(diǎn)的所有從頂點(diǎn);根據(jù)更新后的下一頂點(diǎn)的主頂點(diǎn)的屬性,更新下一頂點(diǎn)的從頂點(diǎn)的屬性。通過從頂點(diǎn)索引快速查到到主頂點(diǎn)對(duì)應(yīng)的所有從頂點(diǎn)的位置,不再需要計(jì)算,提高了不同子圖間同步數(shù)據(jù)的效率。

其中,步驟S3中的終止條件可由用戶根據(jù)實(shí)際需求設(shè)定,優(yōu)選為沒有產(chǎn)生新消息和/或迭循環(huán)發(fā)送次數(shù)達(dá)到一定數(shù)量。沒有產(chǎn)生新消息是指消息沒有沿著邊發(fā)送,即沒有頂點(diǎn)接收到消息。

本發(fā)明實(shí)施例提供的基于圖計(jì)算引擎的異步消息發(fā)送方法,在消息發(fā)送過程中,采用異步消息發(fā)送模式,減少了子圖間的信息交換次數(shù),節(jié)省了網(wǎng)絡(luò)通信資源,提高了處理效率;另外,通過主頂點(diǎn)索引和從頂點(diǎn)索引快速查找到頂點(diǎn)在不同子圖間的位置,不再需要計(jì)算,提高了不同子圖間同步數(shù)據(jù)的效率。

基于與上述基于圖計(jì)算引擎的異步消息發(fā)送方法相同的發(fā)明構(gòu)思,本發(fā)明實(shí)施例提供了一種基于圖計(jì)算引擎的異步消息發(fā)送系統(tǒng),如圖5所示,包括:消息迭代模塊101,用于在各個(gè)子圖中,將當(dāng)前頂點(diǎn)接收到的消息按預(yù)定規(guī)則沿當(dāng)前頂點(diǎn)的邊發(fā)送給下一頂點(diǎn),直到滿足預(yù)設(shè)條件;消息同步模塊102,用于同步各個(gè)子圖中下一頂點(diǎn)接收的消息;循環(huán)判斷模塊103,用于若未滿足終止條件,則返回執(zhí)行消息迭代模塊的功能。

其中,消息同步模塊102具體用于:在各個(gè)子圖中,若下一頂點(diǎn)有主頂點(diǎn)索引,則根據(jù)下一頂點(diǎn)的主頂點(diǎn)索引,將下一頂點(diǎn)接收到的消息發(fā)送給下一頂點(diǎn)的主頂點(diǎn);融合下一頂點(diǎn)的主頂點(diǎn)接收到的所有消息;根據(jù)下一頂點(diǎn)的主頂點(diǎn)的從頂點(diǎn)索引,將融合后的消息發(fā)送給下一頂點(diǎn)的所有從頂點(diǎn)。

其中,還包括屬性更新模塊,用于:根據(jù)融合后的消息更新下一頂點(diǎn)的主頂點(diǎn)的屬性;根據(jù)下一頂點(diǎn)的主頂點(diǎn)的從頂點(diǎn)索引,將更新后的下一頂點(diǎn)的主頂點(diǎn)的屬性發(fā)送給下一頂點(diǎn)的所有從頂點(diǎn);根據(jù)更新后的下一頂點(diǎn)的主頂點(diǎn)的屬性,更新下一頂點(diǎn)的從頂點(diǎn)的屬性。

本發(fā)明實(shí)施例提供的基于圖計(jì)算引擎的異步消息發(fā)送系統(tǒng),在消息發(fā)送過程中,采用異步消息發(fā)送模式,減少了子圖間的信息交換次數(shù),節(jié)省了網(wǎng)絡(luò)通信資源,提高了處理效率;另外,通過主頂點(diǎn)索引和從頂點(diǎn)索引快速查找到頂點(diǎn)在不同子圖間的位置,不再需要計(jì)算,提高了不同子圖間同步數(shù)據(jù)的效率。

采用四個(gè)真實(shí)的大圖形數(shù)據(jù),對(duì)本發(fā)明實(shí)施例提供的基于圖計(jì)算引擎的異步消息發(fā)送方法及系統(tǒng)進(jìn)行績(jī)效評(píng)價(jià)。如表1所示,這四個(gè)大圖形數(shù)據(jù)分別為:(1)社交網(wǎng)絡(luò):soc-Epinisons1;(2)通信網(wǎng)絡(luò):wiki-Talk;(3)互聯(lián)網(wǎng)對(duì)等網(wǎng)絡(luò):p2p-Gnutella31;(4)道路網(wǎng)絡(luò):roadNet-PA。所有的實(shí)驗(yàn)都是在包含三臺(tái)服務(wù)器的Spark集群上進(jìn)行的,每臺(tái)服務(wù)器包括16個(gè)處理器(兩個(gè)英特爾至強(qiáng)e5620CPU)和32GB的RAM。

表1

實(shí)驗(yàn)結(jié)果如表2所示,Grapha欄的數(shù)據(jù)為運(yùn)用本發(fā)明的方法得到的實(shí)驗(yàn)數(shù)據(jù),GraphX欄的數(shù)據(jù)為運(yùn)用基于現(xiàn)有的GraphX得到的實(shí)驗(yàn)數(shù)據(jù)。表2給出了針對(duì)四種圖,得到的圖加載時(shí)間(load)和算法計(jì)算時(shí)間(compution)。從表2中可以看到本發(fā)明的方法需要更多的時(shí)間來從HDFS文件加載圖形數(shù)據(jù)。但是一旦數(shù)據(jù)加載完畢后,本發(fā)明的方法的計(jì)算速度顯然更勝一籌。特別是大直徑的roadNet-PA,GraphX在經(jīng)過430s后計(jì)算失敗,而通過本發(fā)明的方法可以成功計(jì)算出最后的結(jié)果,并且僅用了47.5s。

表2

最后應(yīng)說明的是:以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求和說明書的范圍當(dāng)中。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1