專利名稱:支持基于關(guān)鍵項(xiàng)的分布式進(jìn)程的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及支持基于關(guān)鍵項(xiàng)的分布式進(jìn)程。
背景技術(shù):
基于關(guān)鍵項(xiàng)(key-based)的進(jìn)程常常用在數(shù)據(jù)中心和執(zhí)行分布式進(jìn)程的其他計(jì)算實(shí)體群集或組中。數(shù)據(jù)中心和其他計(jì)算實(shí)體群集越來越多地可用,并且被用于通常通過將計(jì)算密集的進(jìn)程分布在許多計(jì)算實(shí)體上以分擔(dān)該巨大工作量來執(zhí)行這些進(jìn)程。例如,大的輸入數(shù)據(jù)集通過如下方式在數(shù)據(jù)中心處被處理在數(shù)據(jù)中心處將該輸入數(shù)據(jù)集在幾百或幾千個(gè)服務(wù)器之間劃分,使得每個(gè)服務(wù)器都可以對處理整個(gè)數(shù)據(jù)集的任務(wù)做出貢獻(xiàn)。為了有效地管理對勞動(dòng)的所述劃分,該巨大的數(shù)據(jù)集將以合適方式被劃分,并且各個(gè)服務(wù)器處的進(jìn)程的結(jié)果需要合適地組合以提供精確的結(jié)果。已經(jīng)有一種方案被用于使用基于關(guān)鍵項(xiàng)的進(jìn)程,所述進(jìn)程是用于使用關(guān)鍵項(xiàng)值對的數(shù)據(jù)并行計(jì)算的進(jìn)程。通過使用關(guān)鍵項(xiàng)值對,實(shí)現(xiàn)了一種框架以用于接受任務(wù);將任務(wù)分解成較小任務(wù);將這些任務(wù)分布到許多計(jì)算實(shí)體以供處理;以及然后將結(jié)果相組合以獲得輸出。例如,在用于在文檔語料庫中對每個(gè)不同單詞的頻率進(jìn)行計(jì)數(shù)的進(jìn)程中,關(guān)鍵項(xiàng)可以是單詞,并且值可以是表示該單詞在該文檔語料庫中的頻率的整數(shù)。這些關(guān)鍵項(xiàng)可以用于使得來自較小任務(wù)的中間結(jié)果能夠被合適地聚合以便獲得最終輸出。供與分布在幾百或幾千個(gè)服務(wù)器上的巨大數(shù)據(jù)集一起使用的基于關(guān)鍵項(xiàng)的進(jìn)程正越來越多地用作數(shù)據(jù)處理平臺(tái)。這些類型的基于關(guān)鍵項(xiàng)的進(jìn)程通常包括映射階段和約簡階段。在映射階段期間,每個(gè)服務(wù)器都將映射函數(shù)并行地應(yīng)用于輸入數(shù)據(jù)集的各本地塊。多個(gè)約簡器并行地工作以將映射階段的結(jié)果相組合以產(chǎn)生輸出。在約簡階段期間,映射階段的共享相同關(guān)鍵項(xiàng)的所有輸出都被呈現(xiàn)給相同的約簡器。不斷地需要改善這些類型的基于關(guān)鍵項(xiàng)的進(jìn)程在數(shù)據(jù)中心或其他計(jì)算實(shí)體群集上操作的速度、效率和精確度。下面描述的實(shí)施例不限于解決用于支持基于關(guān)鍵項(xiàng)進(jìn)程的已知系統(tǒng)和方法的任何或所有缺點(diǎn)的實(shí)施方式。
發(fā)明內(nèi)容
下面提供本發(fā)明的簡要發(fā)明內(nèi)容以便向讀者提供基本的理解。本發(fā)明內(nèi)容不是本發(fā)明的詳盡概觀,并且既不標(biāo)識(shí)本發(fā)明的關(guān)鍵/重要元素,也不描繪本發(fā)明的范圍。其唯一目的是以簡化形式提供在此公開一些概念作為稍后提供的更詳細(xì)描述的序言。描述了支持分布式的基于關(guān)鍵項(xiàng)的進(jìn)程。在一實(shí)施例中,數(shù)據(jù)中心處的服務(wù)器提供分布式的基于關(guān)鍵項(xiàng)的進(jìn)程以用于執(zhí)行計(jì)算成本高的任務(wù),并且使用以諸如環(huán)面之類的幾何拓?fù)涞狞c(diǎn)對點(diǎn)連接而被連接。在一示例中,在物理拓?fù)渲蠘?gòu)建聚合樹,每個(gè)聚合樹都是數(shù)據(jù)中心中的形成樹結(jié)構(gòu)的服務(wù)器序列。在一實(shí)施例中,針對特定約簡函數(shù)的數(shù)據(jù)分組被從樹的葉發(fā)送給根,并且在沿著該樹的每個(gè)服務(wù)器處,這些分組使用基于關(guān)鍵項(xiàng)的進(jìn)程的組合器函數(shù)被聚合。在一實(shí)施例中,如果服務(wù)器發(fā)生故障,則動(dòng)態(tài)地重新計(jì)算這些樹,并且觸發(fā)恢復(fù)階段以重新發(fā)送在發(fā)生故障的服務(wù)器處丟失的任何分組。在一些實(shí)施例中,通過檢查分組的內(nèi)容來調(diào)度分組。許多附帶特征將隨著參考下面的詳細(xì)描述并結(jié)合附圖進(jìn)行理解而得到更好的認(rèn)識(shí)。
根據(jù)附圖閱讀以下詳細(xì)描述,將更好地理解本發(fā)明,在附圖中圖1是提供基于關(guān)鍵項(xiàng)的進(jìn)程的計(jì)算實(shí)體的直接連接群集的示意圖;圖2是基于關(guān)鍵項(xiàng)的進(jìn)程的示意圖;圖3是每一個(gè)都被安排為提供基于關(guān)鍵項(xiàng)的進(jìn)程的多個(gè)計(jì)算實(shí)體的示意圖;圖4是示例性的基于關(guān)鍵項(xiàng)的進(jìn)程的流程圖;圖5是在計(jì)算實(shí)體處用于傳送基于關(guān)鍵項(xiàng)的數(shù)據(jù)的分組的方法的流程圖;圖6是在計(jì)算實(shí)體處用于基于內(nèi)容的優(yōu)先級(jí)調(diào)度的方法的流程圖;圖7是具有用于基于關(guān)鍵項(xiàng)進(jìn)程的聚合樹的直接連接拓?fù)渚W(wǎng)絡(luò)的示意圖;圖8是供用在直接連接拓?fù)渚W(wǎng)絡(luò)中的計(jì)算設(shè)備的示意圖;圖9是具有二維拓?fù)涞闹苯舆B接拓?fù)渚W(wǎng)絡(luò)的示意圖;圖10是具有在該網(wǎng)絡(luò)范圍內(nèi)所定義的第一聚合樹的圖9網(wǎng)絡(luò)的示意圖;圖11是在具有該網(wǎng)絡(luò)范圍內(nèi)所定義的第二聚合樹的圖9網(wǎng)絡(luò)的示意圖;圖12是在具有該網(wǎng)絡(luò)范圍內(nèi)所定義的第三聚合樹的圖9網(wǎng)絡(luò)的示意圖;圖13是在具有該網(wǎng)絡(luò)范圍內(nèi)所定義的第四聚合樹的圖9網(wǎng)絡(luò)的示意圖;圖14是具有三維拓?fù)涞闹苯舆B接拓?fù)渚W(wǎng)絡(luò)的示意圖;圖15是具有在該網(wǎng)絡(luò)范圍內(nèi)所定義的第一聚合樹的圖14網(wǎng)絡(luò)的示意圖;圖16是在具有該網(wǎng)絡(luò)范圍內(nèi)所定義的第二聚合樹的圖14網(wǎng)絡(luò)的示意圖;圖17是在具有該網(wǎng)絡(luò)范圍內(nèi)所定義的第三聚合樹的圖14網(wǎng)絡(luò)的示意圖;圖18是在具有該網(wǎng)絡(luò)范圍內(nèi)所定義的第四聚合樹的圖14網(wǎng)絡(luò)的示意圖;圖19是在具有該網(wǎng)絡(luò)范圍內(nèi)所定義的第五聚合樹的圖14網(wǎng)絡(luò)的示意圖;圖20是在具有該網(wǎng)絡(luò)范圍內(nèi)所定義的第六聚合樹的圖14網(wǎng)絡(luò)的示意圖;圖21是用于路徑上聚合的方法的流程圖;圖22示出了示例性基于計(jì)算的設(shè)備,其中可以實(shí)現(xiàn)用于在直接連接拓?fù)渚W(wǎng)絡(luò)中支持基于關(guān)鍵項(xiàng)的進(jìn)程的計(jì)算實(shí)體的實(shí)施例。附圖中使用相同的附圖標(biāo)記來表示相同的部分。
具體實(shí)施例方式下面結(jié)合附圖提供的詳細(xì)描述旨在作為對本示例的描述,而非表示用于解釋或利用本示例的唯一形式。本說明書闡述本示例的功能以及用于構(gòu)造和操作本示例的步驟序列。然而,相同或等效的功能與序列可由不同的示例來實(shí)現(xiàn)。盡管在此將本發(fā)明的示例描述為和示為是在數(shù)據(jù)中心處的服務(wù)器中實(shí)現(xiàn)的,但是
4所描述的系統(tǒng)是作為示例而非限制來提供的。本領(lǐng)域的技術(shù)人員能夠理解,本發(fā)明的示例適于應(yīng)用在多種不同類型的網(wǎng)絡(luò)或計(jì)算實(shí)體群集中。基于關(guān)鍵項(xiàng)的進(jìn)程可以是任何具有下列函數(shù)的進(jìn)程映射函數(shù),其處理輸入數(shù)據(jù)并且產(chǎn)生(關(guān)鍵項(xiàng),值)對的中間數(shù)據(jù)集;以及約簡函數(shù),其將具有相同關(guān)鍵項(xiàng)的(關(guān)鍵項(xiàng),值)對的集合相組合以產(chǎn)生輸出。合適的基于關(guān)鍵項(xiàng)的進(jìn)程的示例的非窮盡性列表為 MapReduce (商標(biāo))、Hadoop (商標(biāo))、Dryad (商標(biāo))以及 DryadLINQ (商標(biāo))。圖1是計(jì)算諸如數(shù)據(jù)中心處的服務(wù)器之類的計(jì)算實(shí)體102、或者通過通信鏈路彼此連接的任何其他類型的計(jì)算實(shí)體的群集100的示意圖。該群集具有直接連接拓?fù)?。也就是說,每個(gè)計(jì)算實(shí)體都具有到該網(wǎng)絡(luò)內(nèi)的其他計(jì)算實(shí)體的點(diǎn)對點(diǎn)連接,而不存在路由器或交換機(jī)。該群集可以具有幾百或幾千個(gè)或更多計(jì)算實(shí)體。為了執(zhí)行計(jì)算密集的任務(wù)、比如對大文檔語料庫中的單詞頻率進(jìn)行計(jì)數(shù)、對數(shù)據(jù)進(jìn)行排列、從點(diǎn)進(jìn)軌跡中提取用戶偏好、日志分析、在搜索引擎中執(zhí)行搜索、或者要處理大量數(shù)據(jù)的其他任務(wù),群集100使用基于關(guān)鍵項(xiàng)的進(jìn)程106?;陉P(guān)鍵項(xiàng)的進(jìn)程使得任務(wù)能夠被分解成許多較小任務(wù),這些較小任務(wù)進(jìn)而可以被分解成更小的任務(wù)并且以此類推。較小的任務(wù)在計(jì)算實(shí)體102處并行地執(zhí)行,所述計(jì)算實(shí)體102每個(gè)都處理數(shù)據(jù)集104的一小部分,并且其結(jié)果使用基于關(guān)鍵項(xiàng)的過程被組合或聚合以產(chǎn)生結(jié)果108。通過這種方式,計(jì)算實(shí)體的群集100能夠在其計(jì)算實(shí)體間分擔(dān)巨大任務(wù)的工作量?;陉P(guān)鍵項(xiàng)的進(jìn)程分布在群集100的計(jì)算實(shí)體間?;陉P(guān)鍵項(xiàng)的進(jìn)程可以是包括映射階段和約簡階段的任何合適類型。例如,如參考圖2所解釋的那樣,輸入數(shù)據(jù)集202 (例如文檔語料庫)使用映射函數(shù)200被映射到中間數(shù)據(jù)集204。中間數(shù)據(jù)集包括通常按照關(guān)鍵項(xiàng)排列的關(guān)鍵項(xiàng)、值對。在文檔語料庫的示例中,關(guān)鍵項(xiàng)可以是單詞,并且值可以是該單詞在文檔的行中的頻率。在群集100的每個(gè)計(jì)算實(shí)體處可以存在多個(gè)映射組件,并且這些組件可以并行地在群集上運(yùn)行以映射數(shù)據(jù)。群集中的計(jì)算實(shí)體處的多個(gè)約簡組件接收中間數(shù)據(jù)并且組合關(guān)鍵項(xiàng)、值對以產(chǎn)生一組輸出關(guān)鍵項(xiàng)值對208。例如,在關(guān)鍵項(xiàng)是單詞“a”的情況下,約簡任務(wù)可以接收所有關(guān)鍵項(xiàng)、值對,并且然后將這些對的值相加以便獲得單詞“a”在文檔語料庫中的頻率。圖3是圖1的群集100中的多個(gè)計(jì)算實(shí)體300的示意圖。每個(gè)計(jì)算實(shí)體都存儲(chǔ)輸入數(shù)據(jù)304的一部分。其包括多個(gè)映射組件306,所述映射組件306被安排為將輸入數(shù)據(jù)的本地存儲(chǔ)的部分映射到關(guān)鍵項(xiàng)、值對形式的中間數(shù)據(jù)308。本地產(chǎn)生的中間數(shù)據(jù)308可以由計(jì)算實(shí)體處的組合器組件310來組合以形成組合的中間數(shù)據(jù)集312。然后,使用分割組件314將該數(shù)據(jù)集分割成塊316,其中每個(gè)塊都針對一個(gè)特定的約簡任務(wù)。也就是說,每個(gè)約簡任務(wù)都被安排為對指定范圍的關(guān)鍵項(xiàng)進(jìn)行操作。如果特定塊的約簡任務(wù)處于本地計(jì)算實(shí)體處,則其被提供給該本地約簡任務(wù)。否則,該塊在該群集的范圍內(nèi)被發(fā)送給位于該群集中的其他位置處的合適約簡任務(wù)。例如,在圖3中,針對一定范圍的關(guān)鍵項(xiàng)的約簡任務(wù)318 位于所述計(jì)算實(shí)體之一的本地。針對一定范圍的關(guān)鍵項(xiàng)的另一約簡任務(wù)320位于另一計(jì)算實(shí)體的本地。在混洗(shuffle)階段,當(dāng)塊在群集的范圍內(nèi)被發(fā)送給合適約簡任務(wù)時(shí),可以如下面所述那樣要么通過使用路徑上(on-path)聚合、要么通過使用特定類型的調(diào)度方案來實(shí)現(xiàn)優(yōu)點(diǎn)。例如,當(dāng)約簡任務(wù)是合并性和交換性的時(shí),可以如本文獻(xiàn)之后所述的那樣使用路徑上聚合來實(shí)現(xiàn)性能優(yōu)點(diǎn)。在其他示例中,當(dāng)約簡任務(wù)不是合并性和交換性的時(shí),可以至少在混洗階段中使用調(diào)度方案來實(shí)現(xiàn)性能優(yōu)點(diǎn)。
在基于關(guān)鍵項(xiàng)的過程的示例中,在數(shù)據(jù)中心或其他群集中的計(jì)算實(shí)體的范圍內(nèi)分割400輸入數(shù)據(jù)集。多個(gè)映射任務(wù)運(yùn)行402在數(shù)據(jù)中心中的每個(gè)計(jì)算實(shí)體上以將經(jīng)分割的數(shù)據(jù)映射到關(guān)鍵項(xiàng)、值對。這稱為映射階段。使用組合函數(shù)聚合404映射任務(wù)的結(jié)果以便個(gè)每計(jì)算實(shí)體提供一個(gè)中間數(shù)據(jù)集。然后,將該中間數(shù)據(jù)集分割406成塊,并且在混洗階段中將這些塊在計(jì)算實(shí)體之間傳輸408。在該混洗階段期間,可以要么使用路徑上聚合、要么使用基于內(nèi)容的優(yōu)先級(jí)調(diào)度,這將在下面予以更詳細(xì)的描述。在現(xiàn)有數(shù)據(jù)中心中,混洗階段使用所有到所有(all to all)通信量模式,該通信量模式可能使網(wǎng)絡(luò)飽和并導(dǎo)致性能降低。 在混洗階段期間,塊被傳輸給合適的約簡任務(wù)。每個(gè)約簡任務(wù)都可以被認(rèn)為是具有在群集的范圍內(nèi)朝著該任務(wù)行進(jìn)的塊流或塊流量。在約簡階段期間,約簡任務(wù)將所有關(guān)鍵項(xiàng)、值對的集合與相同關(guān)鍵項(xiàng)相組合以產(chǎn)生輸出410。在許多現(xiàn)有數(shù)據(jù)中心中難以應(yīng)付混洗階段,因?yàn)檫@些數(shù)據(jù)中心難以支持所有對所有的通信量模式?,F(xiàn)有數(shù)據(jù)中心(其不使用直接連接拓?fù)浞?wù)器群集)通常具有高帶寬超額訂閱并且遭受吞吐量崩潰(in-cast)問題。帶寬超額訂閱意味著,數(shù)據(jù)中心的對分帶寬是低的,使得混洗階段期間的數(shù)據(jù)傳輸速率受到限制。另夕卜,所有對所有的通信量模式需要量級(jí)為服務(wù)器數(shù)目平方的多個(gè)流。該大數(shù)目的流與商品架頂式交換機(jī)上的小緩沖器相組合導(dǎo)致TCP吞吐量在緩沖區(qū)溢出時(shí)崩潰。這被稱為incast 問題。通過如下面所述那樣使用直接連接拓?fù)渚W(wǎng)絡(luò)和諸如基于內(nèi)容的優(yōu)先級(jí)調(diào)度之類的方案以及路徑上聚合,尤其是在混洗階段中實(shí)現(xiàn)優(yōu)點(diǎn)。現(xiàn)在給出關(guān)于基于內(nèi)容的優(yōu)先級(jí)調(diào)度的更多細(xì)節(jié)。在一些實(shí)施例中,約簡任務(wù)可以僅在其接收了與特定關(guān)鍵項(xiàng)相關(guān)聯(lián)的所有(關(guān)鍵項(xiàng),值)對時(shí)才啟動(dòng),然后,該約簡任務(wù)可以對該關(guān)鍵項(xiàng)執(zhí)行約簡函數(shù),同時(shí)仍然從該流中接收之后的分組(針對其他關(guān)鍵項(xiàng))。在一些實(shí)施例中,在群集中的計(jì)算實(shí)體處實(shí)現(xiàn)這樣的傳輸協(xié)議該傳輸協(xié)議嘗試使每個(gè)約簡函數(shù)具有對進(jìn)程可用的一組關(guān)鍵項(xiàng)的時(shí)間最大化。 這最大化了混洗階段與約簡階段之間的并發(fā)性,以便減小總作業(yè)執(zhí)行時(shí)間。每個(gè)計(jì)算實(shí)體都為每個(gè)約簡任務(wù)形成單獨(dú)的隊(duì)列,其中給每個(gè)約簡任務(wù)分配有不同范圍的關(guān)鍵項(xiàng)空間(例如以a-e開始的單詞)。具有關(guān)鍵項(xiàng)、值對形式的中間數(shù)據(jù)的有效載荷的分組被添加到這些隊(duì)列以便在混洗階段中被轉(zhuǎn)發(fā)給合適的約簡任務(wù)。為了從所維護(hù)的多個(gè)隊(duì)列中選擇下一分組以供傳送,可以由分組源將每個(gè)流的序列號(hào)嵌入在每個(gè)分組中。該組分組隊(duì)列在隊(duì)列的開頭處按照分組的序列號(hào)被排序。例如,具有最低序列號(hào)的分組被首先傳送。如果存在具有相同序列號(hào)的若干分組,則可以隨機(jī)選擇一個(gè)分組。參考圖5,為每個(gè)約簡器形成500 —個(gè)隊(duì)列,其中每個(gè)隊(duì)列都是以基于關(guān)鍵項(xiàng)的順序的分組,使得分組在每個(gè)隊(duì)列中的順序與關(guān)鍵項(xiàng)在這些分組的有效載荷中的順序相關(guān)。分組的有效載荷是按照關(guān)鍵項(xiàng)排序的中間數(shù)據(jù)。已經(jīng)由每個(gè)分組的最終源(而不是在多跳場景中由中間源)將每個(gè)源的序列號(hào)添加502到該分組?;谛蛄刑?hào)從隊(duì)列中選擇504要傳送的下一分組。然后傳送506所選分組?,F(xiàn)在參考圖6描述用于形成以基于關(guān)鍵項(xiàng)的順序的分組隊(duì)列的示例性方法。當(dāng)計(jì)算實(shí)體在混洗階段接收到600分組時(shí),其檢查602 針對該分組的有效載荷中的中間數(shù)據(jù)的約簡任務(wù)是否位于另一服務(wù)器上。如果不是,則將該分組輸入604到該計(jì)算實(shí)體處的本地約簡任務(wù)。否則,傳輸協(xié)議從該分組的有效載荷中提取出606第一關(guān)鍵項(xiàng)。然后,其將該分組添加到針對所需約簡任務(wù)的隊(duì)列中的在該隊(duì)列中由所提取的關(guān)鍵項(xiàng)所指示的位置處。由于有效載荷中的中間數(shù)據(jù)是以基于關(guān)鍵項(xiàng)的順序的,因此所提取的第一關(guān)鍵項(xiàng)是對于將分組放置到隊(duì)列中何處的良好指示符。這有助于使每個(gè)約簡任務(wù)具有對進(jìn)程可用的一組關(guān)鍵項(xiàng)的時(shí)間最大化?,F(xiàn)在描述使用路徑上聚合的示例。圖7示出了諸如數(shù)據(jù)中心或其他計(jì)算實(shí)體群集處的服務(wù)器之類的計(jì)算實(shí)體的直接連接拓?fù)渚W(wǎng)絡(luò)700。該網(wǎng)絡(luò)具有如下的拓?fù)湓撏負(fù)湟杂欣姆绞健⒈热缤ㄟ^使得能夠提供邊獨(dú)立(edge-ind印endent)的聚合樹來支持聚合樹,這將在下面予以描述。在網(wǎng)絡(luò)中可能存在幾百或幾千個(gè)計(jì)算實(shí)體。由于該拓?fù)涫侵苯舆B接,因此每個(gè)計(jì)算實(shí)體都具有到該網(wǎng)絡(luò)內(nèi)的其他計(jì)算實(shí)體的點(diǎn)對點(diǎn)連接,也就是說,不存在路由器或交換機(jī)。這些點(diǎn)對點(diǎn)連接可以是任何合適的類型,比如以太網(wǎng)連接、USB電纜、LightPeak (商標(biāo))、Fibre Channel (商標(biāo))、Myrinet (商標(biāo))、hfiniband(商標(biāo))、SCSI、SATA、SAS、SONET/SDH??梢允褂锰峁└咚俸碗姎飧綦x的任何點(diǎn)對點(diǎn)、串行或塊互連。在一些實(shí)施例中,網(wǎng)絡(luò)的拓?fù)涫菐缀瓮負(fù)洌渲性谠摰乩硗負(fù)涞姆秶鷥?nèi)可以定義多個(gè)邊獨(dú)立的聚合樹。實(shí)現(xiàn)邊獨(dú)立的樹的合適拓?fù)涞睦拥姆歉F盡列表是三維環(huán)面(亦稱k元3立方)、二維環(huán)面、三維以上更高維的環(huán)面、以及 De Bruijn圖。k元3立方是一種沿著每個(gè)軸具有k個(gè)計(jì)算實(shí)體的三維立方拓?fù)?,其中每個(gè)計(jì)算實(shí)體都直接連接到6個(gè)鄰居中的每個(gè)。在一些實(shí)施例中,每個(gè)聚合樹都包括直接連接網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)以便最優(yōu)地負(fù)載平衡。然而,這不是必需的。網(wǎng)絡(luò)700如上述那樣支持分布式的基于關(guān)鍵項(xiàng)的進(jìn)程106,所述進(jìn)程對巨大的數(shù)據(jù)集104進(jìn)行操作以產(chǎn)生結(jié)果108。通過使用直接連接網(wǎng)絡(luò)來實(shí)現(xiàn)優(yōu)點(diǎn)。例如,避免了通常發(fā)生在交換機(jī)和路由器處的瓶頸,并且尤其是在混洗階段中獲得了性能優(yōu)點(diǎn)。圖8中示出了網(wǎng)絡(luò)700處的示例性計(jì)算實(shí)體。該計(jì)算實(shí)體至少包括存儲(chǔ)器802, 該存儲(chǔ)器802存儲(chǔ)輸入數(shù)據(jù)集的一部分;基于關(guān)鍵項(xiàng)的進(jìn)程804,該進(jìn)程804用于對輸入數(shù)據(jù)集進(jìn)行操作;坐標(biāo)空間管理組件;故障檢測組件812,該故障檢測組件812被安排為檢測該計(jì)算實(shí)體處的鏈路中的故障;多跳路由組件814 ;運(yùn)行時(shí)816 ;恢復(fù)引擎818 ;以及計(jì)算實(shí)體所需的其他組件。圖8中的組件804-814中的每個(gè)都可以被稱為服務(wù)。運(yùn)行時(shí)816提供用于允許服務(wù)訪問相同計(jì)算實(shí)體上的其他服務(wù)的機(jī)制。這些服務(wù)中的一些可以連續(xù)地運(yùn)行,比如坐標(biāo)空間管理和故障檢測。輸入數(shù)據(jù)集在該計(jì)算實(shí)體處的那部分可以以任何方式來提供。例如,使用分布式文件系統(tǒng)來提供。這些數(shù)據(jù)可以被分成包含多個(gè)記錄的多個(gè)文件并且被預(yù)先插入到分布式文件系統(tǒng)中。唯一的關(guān)鍵項(xiàng)可以標(biāo)識(shí)出文件并且確定將存儲(chǔ)文件副本的一組服務(wù)器??商娲?,這些數(shù)據(jù)記錄可以被存儲(chǔ)在例如數(shù)據(jù)庫或關(guān)鍵項(xiàng)-值存儲(chǔ)之類的結(jié)構(gòu)化或半結(jié)構(gòu)化存儲(chǔ)系統(tǒng)中,從而避免直接使用文件。坐標(biāo)空間管理組件810被安排為創(chuàng)建和維護(hù)被映射到服務(wù)器或網(wǎng)絡(luò)中的其他計(jì)算實(shí)體上的坐標(biāo)空間。在一示例中,網(wǎng)絡(luò)拓?fù)涫?D環(huán)面并且服務(wù)器的唯一地址是3D坐標(biāo)。 如果網(wǎng)絡(luò)中的計(jì)算實(shí)體發(fā)生故障,則該計(jì)算實(shí)體的坐標(biāo)被動(dòng)態(tài)地重新分配給另一節(jié)點(diǎn)。這可以通過如下方式來實(shí)現(xiàn)將坐標(biāo)空間管理系統(tǒng)安排為動(dòng)態(tài)地調(diào)整坐標(biāo)空間使得發(fā)生故障的實(shí)體被繞開。例如,每個(gè)服務(wù)器具有唯一的標(biāo)識(shí)符,所述唯一標(biāo)識(shí)符表示該服務(wù)器在物理拓?fù)渲械奈恢玫牟⑶以谝粋€(gè)示例中,這采取3D坐標(biāo)的形式。該坐標(biāo)可以由在數(shù)據(jù)中心被委托時(shí)運(yùn)行的引導(dǎo)協(xié)議來分配。該引導(dǎo)協(xié)議、以及(χ ;y ;ζ)形式的分配標(biāo)識(shí)符也可以檢測接線不一致性。該引導(dǎo)協(xié)議減小了對數(shù)據(jù)中心進(jìn)行昂貴的人工檢查和配置的需要,并且使該進(jìn)程自動(dòng)化是有利的,尤其是因?yàn)閿?shù)據(jù)中心趨向于使用密封的存儲(chǔ)容器。在一示例中,引導(dǎo)協(xié)議通過選擇隨機(jī)節(jié)點(diǎn)作為概念原點(diǎn)(0 ;0 ;0)來實(shí)現(xiàn)這一點(diǎn), 并且使用分散算法來確定每個(gè)服務(wù)器的位置,從而利用對該拓?fù)涞南闰?yàn)知識(shí)。這在存在鏈路和服務(wù)器故障時(shí)、以及在接線不一致性的情況下起作用?;陉P(guān)鍵項(xiàng)的進(jìn)程804可以被安排為接收作業(yè)描述,所述作業(yè)表述例如包括映射的編碼、約簡以及所需的任何其他函數(shù),比如組合器和分割函數(shù)。其還可以接收對輸入數(shù)據(jù)和任何算子可配置參數(shù)的描述。在一示例中,當(dāng)計(jì)算實(shí)體800接收到作業(yè)請求時(shí),該作業(yè)請求被廣播給該群集中的所有計(jì)算實(shí)體。一般而言,當(dāng)計(jì)算實(shí)體接收到所廣播的請求時(shí),其確定輸入數(shù)據(jù)中的任何輸入數(shù)據(jù)是否為主要副本,并且如果是這樣,則發(fā)起映射任務(wù)以處理本地文件。這使得映射任務(wù)能夠讀取本地?cái)?shù)據(jù)而不是使用網(wǎng)絡(luò)資源來傳輸塊。然而,任何服務(wù)器都可以對任何文件運(yùn)行映射作業(yè),即使該服務(wù)器未存儲(chǔ)該文件的副本。這使得能夠處理故障或掉隊(duì)者(straggler)。基于關(guān)鍵項(xiàng)的進(jìn)程804可以在一些實(shí)施例中包括標(biāo)識(shí)符806和聚合器808。這些組件提供實(shí)現(xiàn)聚合樹的功能,這在下面予以描述。例如,該標(biāo)識(shí)符可以被安排為標(biāo)識(shí)出要聚合的分組流,并且該聚合器可以對所標(biāo)識(shí)出的流執(zhí)行分組聚合。運(yùn)行時(shí)816使得分組能夠在計(jì)算實(shí)體處在每個(gè)直接連接鏈路上被發(fā)送和接收。可以使用任何合適的分組格式。在一示例中,分組使用具有單個(gè)服務(wù)標(biāo)識(shí)符字段的報(bào)頭格式。 每個(gè)服務(wù)器上的運(yùn)行時(shí)816都使用該報(bào)頭來將分組解復(fù)用成正確的服務(wù)。服務(wù)可以根據(jù)需要在分組中包括其自己的附加報(bào)頭。為了允許運(yùn)行時(shí)管理出站(outbound)鏈路,每個(gè)服務(wù)都維護(hù)有出站分組隊(duì)列。當(dāng)在每個(gè)出站鏈路上存在容量時(shí),服務(wù)輪流地針對將在該鏈路上被發(fā)送的分組被運(yùn)行時(shí)輪詢。這意味著,在一些示例中,存在顯式的每鏈路的擁塞控制;如果鏈路處于容量狀態(tài),則將不針對該鏈路的分組對服務(wù)進(jìn)行輪詢。服務(wù)能夠控制鏈路隊(duì)列大小,決定合適丟棄分組并且還能夠在可能存在可轉(zhuǎn)發(fā)分組的若干鏈路時(shí)夠動(dòng)態(tài)地選擇鏈路以發(fā)出分組。運(yùn)行時(shí)缺省地提供公平排隊(duì)機(jī)制,這意味著,每個(gè)服務(wù)以相同頻率被輪詢,并且如果s個(gè)服務(wù)希望在相同鏈路上發(fā)送分組,則每個(gè)服務(wù)都將獲得鏈路帶寬的s分之一。在一些實(shí)施例中,使用路徑上聚合來提供顯著的性能優(yōu)點(diǎn)。這包括在混洗階段期間,在中間數(shù)據(jù)被傳遞給約簡任務(wù)時(shí)將中間數(shù)據(jù)的至少一些相組合。這減小了混洗階段中的擁塞并且更平均地分布工作負(fù)荷。例如,群集中的計(jì)算實(shí)體可以標(biāo)識(shí)出其接收到的多個(gè)分組流以供轉(zhuǎn)發(fā)給網(wǎng)絡(luò)中另一實(shí)體處的基于關(guān)鍵項(xiàng)的進(jìn)程的單個(gè)約簡任務(wù),其中這些分組具有基于關(guān)鍵項(xiàng)的分布式進(jìn)程的中間數(shù)據(jù)的有效載荷。然后,其能夠聚合來自所標(biāo)識(shí)出的流的多個(gè)分組以形成單個(gè)分組并將該單個(gè)分組轉(zhuǎn)發(fā)給該單個(gè)約簡任務(wù)。例如,聚合多個(gè)分組包括使用基于關(guān)鍵項(xiàng)的分布式進(jìn)程的組合器函數(shù)來聚合所述多個(gè)分組的有效載荷的中間數(shù)據(jù)。為了標(biāo)識(shí)出將要聚合的分組,可以使用一個(gè)或多個(gè)聚合樹。聚合樹是群集中的具有樹形結(jié)構(gòu)的計(jì)算實(shí)體序列。該樹的根是具有約簡任務(wù)的計(jì)算實(shí)體,并且葉以及樹的其他頂點(diǎn)是具有將要發(fā)送給約簡任務(wù)的中間數(shù)據(jù)的計(jì)算實(shí)體。中間數(shù)據(jù)的分組可以從樹的葉傳
8遞給根,并且路徑上聚合可以在該進(jìn)程期間在樹的每個(gè)頂點(diǎn)處進(jìn)行。節(jié)點(diǎn)從特定樹的子節(jié)點(diǎn)接收分組,并且知道聚合這些分組。然后,該節(jié)點(diǎn)將聚合的分組傳遞給該特定樹的父節(jié)
點(diǎn)ο為了在多個(gè)聚合樹處進(jìn)行路徑上聚合時(shí)在混洗節(jié)點(diǎn)期間提供改善的負(fù)載平衡,每個(gè)約簡任務(wù)都可以與處于網(wǎng)絡(luò)的相同實(shí)體或節(jié)點(diǎn)處的每個(gè)樹的根一起使用。這些聚合樹可以是邊獨(dú)立(或不相交)的,使得網(wǎng)絡(luò)中的兩個(gè)通信實(shí)體之間的任何點(diǎn)對點(diǎn)通信鏈路都不是兩個(gè)聚合樹的成員。這提供了負(fù)載平衡優(yōu)點(diǎn)。在使用多個(gè)聚合樹的情況下,群集或網(wǎng)絡(luò)的拓?fù)淇梢员贿x擇為使得所有節(jié)點(diǎn)都是每個(gè)樹的成員。這進(jìn)一步增強(qiáng)了負(fù)載平衡,但是不是必需的。圖9示出了 2D、5元網(wǎng)絡(luò)拓?fù)涞氖纠?。在此,每個(gè)節(jié)點(diǎn)(計(jì)算實(shí)體)都由包含其2D 坐標(biāo)的圓來表示。每個(gè)節(jié)點(diǎn)都具有四個(gè)到其他節(jié)點(diǎn)的點(diǎn)對點(diǎn)連接。該拓?fù)淇梢员粩U(kuò)展為每維更大數(shù)目的節(jié)點(diǎn),并且其支持四個(gè)邊獨(dú)立的聚合樹。這些樹在圖10至13中予以示出。具有坐標(biāo)2,2的節(jié)點(diǎn)是每個(gè)樹的根,并且在該示例中,為每個(gè)約簡任務(wù)使用四個(gè)聚合樹。多組四個(gè)樹可以彼此相疊地分層以提供和所需數(shù)目一樣多的約簡任務(wù)。該網(wǎng)絡(luò)可以通過增加每維的節(jié)點(diǎn)數(shù)目而按比例增大為更大數(shù)目的節(jié)點(diǎn)。例如,該網(wǎng)絡(luò)可以縮放為2D 100元網(wǎng)絡(luò)拓?fù)洹=泳€布局是已知的,其可以使用短電纜來實(shí)現(xiàn),由此減小成本。圖14給出了 3D、3元網(wǎng)絡(luò)拓?fù)?亦稱環(huán)面)的示例。再一次,每個(gè)節(jié)點(diǎn)都由包含該節(jié)點(diǎn)此時(shí)為3維的坐標(biāo)的圓來表示。每個(gè)節(jié)點(diǎn)都具有六個(gè)到其他節(jié)點(diǎn)的點(diǎn)對點(diǎn)連接。該拓?fù)淇梢员粩U(kuò)展為每維更大數(shù)目的節(jié)點(diǎn),并且其支持六個(gè)邊獨(dú)立的聚合樹。這些樹在圖15 至20予以示出。具有坐標(biāo)1,1,1的節(jié)點(diǎn)是每個(gè)樹的根,并且在該示例中,為每個(gè)約簡任務(wù)使用六個(gè)聚合樹。每個(gè)節(jié)點(diǎn)都知道其在每個(gè)聚合樹的子節(jié)點(diǎn)和父節(jié)點(diǎn)。這是通過如下方式來實(shí)現(xiàn)的在坐標(biāo)空間中將這些樹構(gòu)造為使得每個(gè)節(jié)點(diǎn)都能夠基于其本地坐標(biāo)導(dǎo)出其在樹中的位置。參考圖21,每個(gè)節(jié)點(diǎn)都計(jì)算聚合樹2100。計(jì)算實(shí)體訪問2102其本地生成的中間數(shù)據(jù)。 其從特定聚合樹的子節(jié)點(diǎn)接收和緩沖2104分組。該計(jì)算實(shí)體使用2106組合器函數(shù)聚合來自這些子節(jié)點(diǎn)的分組中的中間數(shù)據(jù)和/或本地生成的中間數(shù)據(jù)以形成新的分組。然后,將新分組發(fā)送2108給特定聚合樹的父節(jié)點(diǎn)。在通信鏈路故障的情況下,多跳組件810可以是知道坐標(biāo)的。通過將分組路由到頂點(diǎn)坐標(biāo),可以適應(yīng)鏈路故障。頂點(diǎn)坐標(biāo)是作為聚合樹一部分的直接連接網(wǎng)絡(luò)節(jié)點(diǎn)的坐標(biāo)。網(wǎng)絡(luò)中的每個(gè)計(jì)算實(shí)體都可以具有恢復(fù)引擎818,該恢復(fù)引擎818被安排為在接收到指示網(wǎng)絡(luò)中另一通信實(shí)體已經(jīng)發(fā)生故障的分組時(shí)觸發(fā)恢復(fù)階段。例如,恢復(fù)引擎被安排為聯(lián)系發(fā)生故障的通信實(shí)體的父通信實(shí)體并且請求從發(fā)生故障的通信實(shí)體接收到的上一關(guān)鍵項(xiàng)?;謴?fù)引擎可以被安排為指示發(fā)生故障的通信實(shí)體的每個(gè)子節(jié)點(diǎn)基于從發(fā)生故障的通信實(shí)體接收到的上一關(guān)鍵項(xiàng)重新發(fā)送分組。這使得能夠恢復(fù)在發(fā)生故障的節(jié)點(diǎn)處丟失的任何分組。在一示例中,服務(wù)器故障導(dǎo)致由坐標(biāo)空間管理組件806將表示發(fā)生故障的服務(wù)器上的頂點(diǎn)的坐標(biāo)重新映射到其他服務(wù)器。被路由到發(fā)生故障服務(wù)器上的頂點(diǎn)的分組將被遞送給負(fù)責(zé)該坐標(biāo)的另一服務(wù)器。從子節(jié)點(diǎn)發(fā)送到父節(jié)點(diǎn)的所有分組都具有針對該邊的從0 開始的本地序列號(hào)。當(dāng)服務(wù)器接收到針對某項(xiàng)點(diǎn)的分組時(shí),其檢查該序列號(hào)。如果序列號(hào)為非0,則服務(wù)器認(rèn)定已經(jīng)發(fā)生了故障,從而致使頂點(diǎn)被重新映射,并且其觸發(fā)恢復(fù)階段。 首先,服務(wù)器聯(lián)系發(fā)生故障的頂點(diǎn)的父頂點(diǎn),并且請求其從發(fā)生故障的頂點(diǎn)接收的上一關(guān)鍵項(xiàng)。接著在恢復(fù)進(jìn)程中,指示發(fā)生故障的頂點(diǎn)的每個(gè)子節(jié)點(diǎn)重新發(fā)送自所指定的上一關(guān)鍵項(xiàng)起的所有(關(guān)鍵項(xiàng),值)對。由于關(guān)鍵項(xiàng)是有序的,因此這保證聚合函數(shù)可以正確處理。如果樹的根發(fā)生故障,則需要重新發(fā)送所有(關(guān)鍵項(xiàng),值)對,并且新的頂點(diǎn)將僅僅請求每個(gè)子節(jié)點(diǎn)從頭開始重新發(fā)送。在一些情況下,實(shí)現(xiàn)這一點(diǎn)需要將重傳請求沿著樹向下傳播給作為發(fā)生故障節(jié)點(diǎn)的后代的具有原始中間數(shù)據(jù)的所有葉。在根未發(fā)生故障的情況下這是昂貴的,因此作為任選的優(yōu)化方案,每個(gè)頂點(diǎn)都保持在最近t毫秒發(fā)送的所有分組的拷貝。在正常操作下,故障和重新映射在t ms內(nèi)進(jìn)行,使得被恢復(fù)的頂點(diǎn)的子節(jié)點(diǎn)可以發(fā)送所述對,而不需要傳播重傳請求。在中間數(shù)據(jù)未被復(fù)制的實(shí)施方式中,如果發(fā)生故障的服務(wù)器存儲(chǔ)了中間數(shù)據(jù),則將需要重新生成這些中間數(shù)據(jù)。在這種情況下,可以使用利用如下知識(shí)的本地恢復(fù)進(jìn)程來選擇要運(yùn)行發(fā)生故障的映射任務(wù)的新服務(wù)器由該映射任務(wù)所處理的原始輸入數(shù)據(jù)的副本位于何處。由于映射函數(shù)是確定性的,因此所生成的關(guān)鍵項(xiàng)序列與發(fā)生故障的服務(wù)器所生成的關(guān)鍵項(xiàng)序列相同,使得映射任務(wù)在得知上一關(guān)鍵項(xiàng)已經(jīng)被并入以前不重新發(fā)送(關(guān)鍵項(xiàng),值)對。在一示例中,計(jì)算實(shí)體的直接連接網(wǎng)絡(luò)中的計(jì)算實(shí)體處的方法提供基于關(guān)鍵項(xiàng)的分布式進(jìn)程,該進(jìn)程包括在該計(jì)算實(shí)體處接收多個(gè)分組流,每個(gè)流都用于轉(zhuǎn)發(fā)給基于關(guān)鍵項(xiàng)進(jìn)程的位于該網(wǎng)絡(luò)中其他計(jì)算實(shí)體處的多個(gè)約簡任務(wù)之一,并且其中所述分組具有基于關(guān)鍵項(xiàng)進(jìn)程的關(guān)鍵項(xiàng)-值對的有效載荷;為每個(gè)約簡任務(wù)形成隊(duì)列;根據(jù)該約簡任務(wù)將所接收到的分組添加到該隊(duì)列,并且根據(jù)所述分組的有效載荷中的關(guān)鍵項(xiàng)將所述分組添加到該隊(duì)列中的一定位置處。例如,該方法包括通過根據(jù)每個(gè)分組的每資源序列號(hào)從所述隊(duì)列之一的開頭取出分組來選擇分組以供轉(zhuǎn)發(fā)給約簡任務(wù)。圖22示出了示例性的基于計(jì)算的設(shè)備2200的各種組件,該設(shè)備可以實(shí)現(xiàn)為計(jì)算和/或電子設(shè)備中的任何形式,且其中可以實(shí)現(xiàn)此處所描述的方法中的任何方法的實(shí)施例?;谟?jì)算的設(shè)備2200被安排為具有到網(wǎng)絡(luò)22 中的其他實(shí)體的多個(gè)通信鏈路。 其可以包括用于促進(jìn)這些通信鏈路的通信接口 2204。基于計(jì)算的設(shè)備2200還包括一個(gè)或多個(gè)處理器2202,這些處理器可以是微處理器、控制器或用于處理計(jì)算可執(zhí)行指令以控制設(shè)備操作以便支持基于關(guān)鍵項(xiàng)的進(jìn)程的任何其他合適類型的處理器。在一些例子中,例如在使用片上系統(tǒng)架構(gòu)的示例中,處理器2202 可以包括一個(gè)或多個(gè)固定功能塊(亦稱加速器),這些塊以硬件實(shí)現(xiàn)在此所述的任何方法的一部分??梢栽诨谟?jì)算的設(shè)備處提供包括操作系統(tǒng)2208或任何其他合適的平臺(tái)軟件的平臺(tái)軟件以使得能夠在該設(shè)備上執(zhí)行應(yīng)用軟件2210。存儲(chǔ)器2006還可以存儲(chǔ)數(shù)據(jù)2212, 比如輸入數(shù)據(jù)集的本地復(fù)制部分、基于關(guān)鍵項(xiàng)的進(jìn)程的中間數(shù)據(jù)或其他數(shù)據(jù)。提供有坐標(biāo)空間管理組件2216,其使用在直接連接網(wǎng)絡(luò)上共享的坐標(biāo)空間管理進(jìn)程來管理作為直接連接網(wǎng)絡(luò)一部分的計(jì)算設(shè)備的唯一坐標(biāo)。鏈路故障檢測組件2218被安排為監(jiān)控計(jì)算實(shí)體2200與直接連接網(wǎng)絡(luò)中的其他計(jì)算實(shí)體之間的直接連接并且報(bào)告任何鏈路故障。提供有實(shí)現(xiàn)多跳路由協(xié)議的多跳路由組件2220?;陉P(guān)鍵項(xiàng)的服務(wù)組件2214提供基于關(guān)鍵項(xiàng)的進(jìn)程,該進(jìn)程分布在實(shí)體的直接連接網(wǎng)絡(luò)上,計(jì)算設(shè)備2200是所述實(shí)體其中之一。通信協(xié)議棧22 實(shí)現(xiàn)計(jì)算設(shè)備2200與其他實(shí)體之間的基于分組的通信??梢允褂每捎苫谟?jì)算的設(shè)備2200訪問的任何計(jì)算機(jī)可讀介質(zhì)來提供計(jì)算機(jī)可執(zhí)行指令。計(jì)算機(jī)可讀介質(zhì)可以包括例如諸如存儲(chǔ)器2206等計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。諸如存儲(chǔ)器2206等計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于存儲(chǔ)如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)等信息的任何方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于,RAM、ROM、EPROM、EEPR0M、閃存或其他存儲(chǔ)器技術(shù)、 CD-ROM、數(shù)字多功能盤(DVD)或其他光存儲(chǔ)、磁帶盒、磁帶、磁盤存儲(chǔ)或其他磁存儲(chǔ)設(shè)備,或者可用于存儲(chǔ)信息以供計(jì)算設(shè)備訪問的任何其他非傳輸介質(zhì)。相反,通信介質(zhì)可以以諸如載波或其他傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)來體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或者其他數(shù)據(jù)。如本文所定義的,計(jì)算機(jī)存儲(chǔ)介質(zhì)不包括通信介質(zhì)。雖然在基于計(jì)算的設(shè)備2200 中示出了計(jì)算機(jī)存儲(chǔ)介質(zhì)(存儲(chǔ)器2206),但將明白,該存儲(chǔ)可以是分布式的或位于遠(yuǎn)處并經(jīng)由網(wǎng)絡(luò)或其他通信鏈路(例如,使用通信接口 2204)來訪問?;谟?jì)算的設(shè)備2200可以包括被安排成向可與基于計(jì)算的設(shè)備2200分開或集成在一起的顯示設(shè)備22M輸出顯示信息的輸入/輸出控制器2222。顯示信息可以提供圖形用戶界面。輸入/輸出控制器2222還被安排成接收并處理來自一個(gè)或多個(gè)設(shè)備的輸入,如用戶輸入設(shè)備22 (例如,鼠標(biāo)或鍵盤)。在一實(shí)施例中,如果顯示設(shè)備22M是觸敏顯示設(shè)備,則它還可擔(dān)當(dāng)用戶輸入設(shè)備2226。輸入/輸出控制器2222還向除顯示設(shè)備之外的設(shè)備輸出數(shù)據(jù),例如,本地連接的打印設(shè)備。此處使用的術(shù)語‘計(jì)算機(jī)’表示具有處理能力以使其能夠執(zhí)行指令的任何設(shè)備。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到這些處理能力被結(jié)合到許多不同設(shè)備中,并且因此術(shù)語‘計(jì)算機(jī)’包括PC、服務(wù)器、移動(dòng)電話、個(gè)人數(shù)字助理和許多其他設(shè)備。本文描述的方法可由有形存儲(chǔ)介質(zhì)上的機(jī)器可讀形式的軟件來執(zhí)行,例如計(jì)算機(jī)程序的形式,該計(jì)算機(jī)程序包括在該程序在計(jì)算機(jī)上運(yùn)行時(shí)適用于執(zhí)行本文描述的任何方法的所有步驟的計(jì)算機(jī)程序代碼裝置并且其中該計(jì)算機(jī)程序可被包括在計(jì)算機(jī)可讀介質(zhì)上。有形(或非暫態(tài))存儲(chǔ)介質(zhì)的示例可包括盤、拇指型驅(qū)動(dòng)器、存儲(chǔ)器等并且不包括傳播信號(hào)。軟件可適于在并行處理器或串行處理器上執(zhí)行以使得各方法步驟可以按任何合適的次序或同時(shí)執(zhí)行。這確認(rèn)了軟件可以是有價(jià)值的、可單獨(dú)交易的商品。它旨在包含運(yùn)行于或者控制 “啞”或標(biāo)準(zhǔn)硬件以實(shí)現(xiàn)所需功能的軟件。它還旨在包含例如用于設(shè)計(jì)硅芯片,或者用于配置通用可編程芯片的HDL(硬件描述語言)軟件等描述攝或者定義硬件配置以實(shí)現(xiàn)期望功能的軟件。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到用于存儲(chǔ)程序指令的存儲(chǔ)設(shè)備可分布在網(wǎng)絡(luò)上。例如, 遠(yuǎn)程計(jì)算機(jī)可存儲(chǔ)描述為軟件的該過程的示例。本地或終端計(jì)算機(jī)可訪問遠(yuǎn)程計(jì)算機(jī)并下載該軟件的一部分或全部以運(yùn)行該程序?;蛘?,本地計(jì)算機(jī)可按需下載軟件的片斷,或可以在本地終端處執(zhí)行一些軟件指令而在遠(yuǎn)程計(jì)算機(jī)(或計(jì)算機(jī)網(wǎng)絡(luò))處執(zhí)行一些軟件指令。 本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,通過使用本領(lǐng)域技術(shù)人員已知的常規(guī)技術(shù),軟件指令的全部或部分可由諸如DSP、可編程邏輯陣列等專用電路來執(zhí)行。如本領(lǐng)域技術(shù)人員將清楚的,此處給出的任何范圍或者設(shè)備值都可以被擴(kuò)展或者改變而不失去所尋求的效果。可以理解,上述各好處和優(yōu)點(diǎn)可涉及一個(gè)實(shí)施例或者可涉及若干實(shí)施例。各實(shí)施例不限于解決所述問題中的任一個(gè)或全部的實(shí)施例或具有所述好處和優(yōu)點(diǎn)中的任一個(gè)或全部的實(shí)施例。還可以理解,對‘一個(gè)’項(xiàng)目的引用指的是這些項(xiàng)目中的一個(gè)或多個(gè)。本文中描述的各方法步驟可以在適當(dāng)時(shí)按任何合適的次序或同時(shí)執(zhí)行。另外,可從任一種方法中刪除各個(gè)框,而不背離此處所述的主題的精神和范圍。上述示例中的任一個(gè)的各方面可以與所述其他示例中的任一個(gè)的各方面組合以形成其他示例而不失去所尋求的效果。術(shù)語‘包括’此處用來指包括所標(biāo)識(shí)的方法框或元素,但這些框或元素不構(gòu)成排他列表,并且方法或裝置可包含附加框或元素。可以理解,上面對一較佳實(shí)施例的描述只是作為示例給出并且本領(lǐng)域的技術(shù)人員可以做出各種修改。以上說明、示例和數(shù)據(jù)提供了對本發(fā)明的各示例性實(shí)施例的結(jié)構(gòu)和使用的全面描述。雖然上文以一定的詳細(xì)度或參考一個(gè)或多個(gè)單個(gè)實(shí)施例描述了本發(fā)明的各實(shí)施例,但是,在不偏離本發(fā)明的精神或范圍的情況下,本領(lǐng)域的技術(shù)人員可以對所公開的實(shí)施例作出很多更改。
權(quán)利要求
1.一種處于計(jì)算實(shí)體的直接連接網(wǎng)絡(luò)(100)中的用于提供基于關(guān)鍵項(xiàng)的分布式進(jìn)程的計(jì)算實(shí)體(300),包括針對在計(jì)算實(shí)體的網(wǎng)絡(luò)(100)的范圍內(nèi)定義的多個(gè)聚合樹中的每個(gè)標(biāo)識(shí)符(806),該標(biāo)識(shí)符(806)被安排為標(biāo)識(shí)出在所述計(jì)算實(shí)體處接收到的多個(gè)分組流以供轉(zhuǎn)發(fā)給所述網(wǎng)絡(luò)中另一實(shí)體處的基于關(guān)鍵項(xiàng)進(jìn)程的單個(gè)約簡任務(wù),該約簡任務(wù)對于每個(gè)所標(biāo)識(shí)的流是相同的約簡任務(wù),這些分組具有基于關(guān)鍵項(xiàng)的分布式進(jìn)程的中間數(shù)據(jù)的有效載荷;以及聚合器(808),該聚合器(808)被安排為聚合來自所標(biāo)識(shí)出的流的多個(gè)分組以形成單個(gè)分組并且將該單個(gè)分組轉(zhuǎn)發(fā)給該聚合樹的父計(jì)算實(shí)體;該聚合器被安排為使用基于關(guān)鍵項(xiàng)的分布式進(jìn)程的組合器函數(shù)來聚合所述多個(gè)分組的有效載荷的中間數(shù)據(jù)。
2.如權(quán)利要求1所述的計(jì)算實(shí)體(300),其特征在于,所述標(biāo)識(shí)符被安排為通過檢測從該聚合樹的子計(jì)算實(shí)體接收到的分組來標(biāo)識(shí)出所述多個(gè)流。
3.如權(quán)利要求1或2所述的計(jì)算實(shí)體(300),其特征在于,所述多個(gè)聚合樹用于單個(gè)約簡任務(wù)并且是邊獨(dú)立的,使得所述網(wǎng)絡(luò)中的兩個(gè)通信實(shí)體之間的任何點(diǎn)對點(diǎn)通信鏈路都不是所述多個(gè)聚合樹中的兩個(gè)聚合樹的成員。
4.如任一前述權(quán)利要求所述的計(jì)算實(shí)體(300),其特征在于,所述直接連接網(wǎng)絡(luò)為下列項(xiàng)任一三維環(huán)面、二維環(huán)面、二維以上的環(huán)面、以及De Bruijn圖。
5.如任一前述權(quán)利要求所述的計(jì)算實(shí)體,其特征在于,包括恢復(fù)引擎(818),該恢復(fù)引擎(818)被安排為在接收到指示所述網(wǎng)絡(luò)中的另一通信實(shí)體已經(jīng)發(fā)生故障的分組時(shí)觸發(fā)恢復(fù)階段,所述恢復(fù)引擎被安排為聯(lián)系發(fā)生故障的通信實(shí)體的父通信實(shí)體并且請求從發(fā)生故障的通信實(shí)體接收到的上一關(guān)鍵項(xiàng)。
6.如權(quán)利要求5所述的計(jì)算實(shí)體,其特征在于,所述恢復(fù)引擎被安排為指示發(fā)生故障的通信實(shí)體的每個(gè)子節(jié)點(diǎn)基于從發(fā)生故障的通信實(shí)體接收到的上一關(guān)鍵項(xiàng)重新發(fā)送分組。
7.一種使用點(diǎn)對點(diǎn)通信鏈路彼此連接的計(jì)算實(shí)體的直接連接拓?fù)渚W(wǎng)絡(luò)(100),其特征在于,每個(gè)計(jì)算實(shí)體都如權(quán)利要求1所述。
8.一種使用點(diǎn)對點(diǎn)通信鏈路彼此連接的計(jì)算實(shí)體的直接連接拓?fù)渚W(wǎng)絡(luò),其特征在于, 每個(gè)計(jì)算實(shí)體都如權(quán)利要求1所述并且該網(wǎng)絡(luò)具有3D環(huán)面拓?fù)洹?br>
9.一種在計(jì)算實(shí)體的直接連接網(wǎng)絡(luò)中的計(jì)算實(shí)體處用于提供基于關(guān)鍵項(xiàng)的分布式進(jìn)程的方法,包括針對在計(jì)算實(shí)體的網(wǎng)絡(luò)的范圍內(nèi)定義的多個(gè)聚合樹中的每個(gè)標(biāo)識(shí)出在所述計(jì)算實(shí)體處接收到的多個(gè)分組流以供轉(zhuǎn)發(fā)給所述網(wǎng)絡(luò)中另一實(shí)體處的基于關(guān)鍵項(xiàng)進(jìn)程的單個(gè)約簡任務(wù),該約簡任務(wù)對于每個(gè)所標(biāo)識(shí)的流是相同的約簡任務(wù),這些分組具有基于關(guān)鍵項(xiàng)的分布式進(jìn)程的中間數(shù)據(jù)的有效載荷;聚合Q106)來自所標(biāo)識(shí)出的流的多個(gè)分組以形成單個(gè)分組并且將該單個(gè)分組轉(zhuǎn)發(fā)給該聚合樹的父計(jì)算實(shí)體;其中聚合所述多個(gè)分組包括使用基于關(guān)鍵項(xiàng)的分布式進(jìn)程的組合器函數(shù)來聚合所述多個(gè)分組的有效載荷的中間數(shù)據(jù)。
10.如權(quán)利要求9所述的方法,其特征在于,所述直接連接網(wǎng)絡(luò)為下列項(xiàng)任一三維環(huán)面、二維環(huán)面、二維以上的環(huán)面、以及De Bruijn圖。
全文摘要
本發(fā)明涉及支持基于關(guān)鍵項(xiàng)的分布式進(jìn)程。描述了支持基于關(guān)鍵項(xiàng)的分布式進(jìn)程。在一實(shí)施例中,數(shù)據(jù)中心處的服務(wù)器提供基于關(guān)鍵項(xiàng)的進(jìn)程以用于執(zhí)行計(jì)算成本高的任務(wù),并且使用以諸如環(huán)面之類的幾何拓?fù)涞狞c(diǎn)對點(diǎn)連接而被連接。在一示例中,在數(shù)據(jù)中心的幾何拓?fù)渲蠘?gòu)建聚合樹,每個(gè)聚合樹都是數(shù)據(jù)中心中的形成樹結(jié)構(gòu)的服務(wù)器序列。在一實(shí)施例中,數(shù)據(jù)分組被從樹的葉發(fā)送給根,并且在沿著該樹的每個(gè)服務(wù)器處,這些分組使用基于關(guān)鍵項(xiàng)的進(jìn)程的組合器函數(shù)被聚合。在一實(shí)施例中,如果服務(wù)器發(fā)生故障,則動(dòng)態(tài)地重新計(jì)算這些樹,并且觸發(fā)恢復(fù)階段以重新發(fā)送在發(fā)生故障的服務(wù)器處丟失的任何分組。在一些實(shí)施例中,通過檢查分組的內(nèi)容來調(diào)度分組。
文檔編號(hào)H04L12/56GK102546402SQ20111043761
公開日2012年7月4日 申請日期2011年12月14日 優(yōu)先權(quán)日2010年12月14日
發(fā)明者A·唐納利, A·羅斯特朗, G·F·奧謝, P·科斯塔 申請人:微軟公司