大規(guī)模數(shù)據(jù)處理可以包括并行處理,其通常涉及同時在大數(shù)據(jù)集的每個元素上執(zhí)行一些操作。數(shù)據(jù)集可以分裂成較小的集合,稱作“碎片”,并且由單獨的處理和/或設(shè)備并行處理。
技術(shù)實現(xiàn)要素:
本公開涉及在并行處理操作期間動態(tài)調(diào)整碎片分配。
一般來說,在本說明書中描述的主題的一個革新方面能夠在方法中實施,方法包括下面的動作:確定輸入數(shù)據(jù)集的批量數(shù)據(jù)處理作業(yè)的目標完成時間,批量數(shù)據(jù)處理作業(yè)由多個任務(wù)執(zhí)行,多個任務(wù)的每個處理不同的輸入碎片,不同的輸入碎片包括輸入數(shù)據(jù)集的不同部分;從多個任務(wù)中,識別具有大于批量數(shù)據(jù)處理作業(yè)的目標完成時間的估計的完成時間的第一任務(wù),估計的完成時間代表第一任務(wù)將完成處理由第一任務(wù)處理的第一輸入碎片處的輸入數(shù)據(jù)集的該部分的估計時間;以及將第一輸入碎片分裂成第一分裂輸入碎片和不同于第一分裂輸入碎片的第二分裂輸入碎片,第一分裂輸入碎片包括第一輸入碎片的第一部分,并且第二分裂輸入碎片包括不同于第一部分的第一輸入碎片的第二部分。
該方面的其他實施例包括相應(yīng)的系統(tǒng)、裝置以及編碼在計算機存儲設(shè)備上、被配置為執(zhí)行方法的動作的計算機程序。
能夠?qū)崿F(xiàn)在該說明書中描述的主題的特定實施例以實現(xiàn)下面的優(yōu)點的一個或多個。通過在處理作業(yè)期間動態(tài)地適配碎片分配,可以更好地優(yōu)化碎片分配,因為關(guān)于每個特定碎片的更多信息可用,諸如它的大小、復雜度、平均處理速率或者其他信息。以這種方式適配碎片分配也允許分配響應(yīng)觀察到的條件而改變,諸如任務(wù)(例如,計算資源)處理碎片比預期更慢或者另外的處理資源正在變得可用。
在該說明書中描述的主題的一個或多個實施例的細節(jié)在下面的附隨附圖和描述中陳述。主題的其他特征、方面和優(yōu)點將從描述、附圖和權(quán)利要求書中變得明白。
附圖說明
圖1是在并行處理操作期間動態(tài)調(diào)整碎片分配能夠發(fā)生的環(huán)境的框圖。
圖2A-2B是在碎片分裂之前和之后的系統(tǒng)配置的框圖。
圖3是在并行處理操作期間動態(tài)調(diào)整碎片分配的示例處理的順序圖。
圖4是在并行處理操作期間動態(tài)調(diào)整碎片分配的示例處理的流程圖。
圖5是示例計算設(shè)備的框圖。
在各種附圖中相同的附圖標記和名稱指示相同的元素。
具體實施方式
大規(guī)模并行數(shù)據(jù)處理應(yīng)用必須分發(fā)大的輸入數(shù)據(jù)集用于由任務(wù)池(例如,計算資源)進行處理。這可以通過將輸入數(shù)據(jù)集劃分成較小的集合或者“碎片”,并且將碎片指派給可用的任務(wù)來執(zhí)行。在涉及異質(zhì)性輸入數(shù)據(jù)集、任務(wù)執(zhí)行環(huán)境、網(wǎng)絡(luò)條件或者其他變化因素的情況下,可能難以均勻地劃分輸入數(shù)據(jù)集,使得每個任務(wù)在相似量的時間內(nèi)處理它的被指派的碎片。大相徑庭的碎片處理時間可以導致比其他碎片花費更長時間進行處理的“落后者”碎片。如果特定作業(yè)在完成之前需要所有碎片被處理,那么落后者碎片可以主導該特定作業(yè)的總體運行時間。而且,如果任務(wù)的計算結(jié)果沒有提交到諸如遠程磁盤這樣的永久存儲器,那么落后者碎片可能是成問題的。因為前述異質(zhì)性,輸入數(shù)據(jù)集的特定區(qū)段可能處理起來非常慢或者可能包含比預期的更多的記錄。如果處理該碎片的任務(wù)在輸出持久化之前失敗,那么所有的進展可能丟失。如果系統(tǒng)等待直到在提交工作之前處理整個碎片,那么大量的工作可能需要重做。大的碎片大小可以加劇這種問題。
小的碎片大小也引入問題,諸如與指派和管理更大量的碎片有關(guān)的另外的開銷,以及當處理時任務(wù)需要尋找到每個碎片的開始而不是順序地讀取較大的碎片。
因此,本公開描述在并行處理操作期間動態(tài)調(diào)整碎片分配的技術(shù)。一個示例包括未認領(lǐng)碎片的中央儲存庫、任務(wù)池和監(jiān)管器。最初,監(jiān)管器將輸入數(shù)據(jù)集分割成足夠的碎片使得每個任務(wù)忙碌。然后每個任務(wù)監(jiān)控它自己的進展同時處理它的碎片?;诿總€任務(wù)觀察到的內(nèi)容,它發(fā)布關(guān)于它將什么時候完成它的碎片的處理的估計。監(jiān)管器觀察這些估計。如果不存在剩余的未認領(lǐng)的碎片并且至少一個任務(wù)不忙碌,那么并行處理操作已經(jīng)進入“尾聲”狀態(tài)。在一些情況下,當這發(fā)生時,假定完美的碎片切分/負載均衡,監(jiān)管器基于來自任務(wù)的發(fā)布的估計來估計作業(yè)什么時候應(yīng)當結(jié)束。該估計對應(yīng)于每個任務(wù)同時結(jié)束,并且可以是每個任務(wù)的估計的剩余時間的平均,將空閑任務(wù)的剩余時間計為零。監(jiān)管器將關(guān)于操作什么時候應(yīng)當完成的該估計(“截止時間”或者“目標完成時間”)發(fā)布給任務(wù)。在一些情況下,監(jiān)管器可以(而不是當操作進入尾聲狀態(tài)時或者除了當操作進入尾聲狀態(tài)時之外還)遍及執(zhí)行而提供周期性的估計。
當接收到目標完成時間時,每個任務(wù)估計在目標完成時間之前能夠處理它的碎片的多少。如果任務(wù)能夠在目標完成時間之前完成處理,那么它繼續(xù)照常處理。如果不能,那么任務(wù)估計在目標完成時間之前它能夠處理碎片的多少。例如,任務(wù)可以假定它的平均處理速率將保持恒定。基于該估計,任務(wù)將它的碎片分裂成前綴和后綴。前綴包含在目標完成日期之前任務(wù)期望完成的碎片的部分。后綴包含任務(wù)不期望完成的部分。任務(wù)將后綴返回給監(jiān)管器。空閑任務(wù)然后從返回的后綴中認領(lǐng)碎片進行處理。注意,操作能夠在執(zhí)行期間進入和退出該“尾聲”狀態(tài)多次,并且發(fā)布估計的完成時間以及任務(wù)分裂的循環(huán)能夠在執(zhí)行期間發(fā)生多次。
另一個示例方法包括確定由多個任務(wù)執(zhí)行的輸入數(shù)據(jù)集的批量數(shù)據(jù)處理作業(yè)的目標完成時間。多個任務(wù)的每個處理代表輸入數(shù)據(jù)集的不同部分的輸入碎片。從多個任務(wù)中,處理第一輸入碎片的第一任務(wù)被識別具有比批量數(shù)據(jù)處理作業(yè)的目標完成時間大的估計完成時間。作為響應(yīng),第一輸入碎片被分裂成多個不同的輸入碎片,每個包括第一輸入碎片的一部分。然后可以將不同的輸入碎片指派給不同的任務(wù)來完成。
這些特征和另外的特征將在下面更詳細地描述。
圖1是在并行處理操作期間動態(tài)調(diào)整碎片分配能夠發(fā)生的環(huán)境100的框圖。如所示,環(huán)境100包括并行處理操作101,并行處理操作101包括處理多個碎片104a-n的多個任務(wù)102a-n。并行處理操作101由監(jiān)管器108監(jiān)管。在操作中,輸入數(shù)據(jù)集110分裂成碎片104a-n以便由任務(wù)102a-n處理。任務(wù)102a-n處理碎片104a-n以產(chǎn)生輸出數(shù)據(jù)集112。
環(huán)境100包括并行處理操作101。在一些實現(xiàn)方式中,并行處理操作101可以是任何類型的分布式處理應(yīng)用,諸如,例如,映射規(guī)約、管線、分布式查詢或者另一種類型的應(yīng)用。并行處理操作101可以被配置為跨越通過經(jīng)由網(wǎng)絡(luò)通信而連接的一個或多個服務(wù)器而執(zhí)行。在一些情況下,除了被描繪為將輸入數(shù)據(jù)集110分裂成碎片104a-n用于由任務(wù)102a-n處理的那些之外,并行處理操作101還可以包括另外的組件。在一些情況下,監(jiān)管器108可以執(zhí)行該操作。任務(wù)102a-n也可以執(zhí)行分裂操作。
并行處理操作101包括任務(wù)102a-n。在操作中,任務(wù)102a-n處理相關(guān)聯(lián)的碎片104a-n。在一些情況下,任務(wù)102a-n可以每個在各個碎片104a-n上執(zhí)行相同的處理操作。任務(wù)102a-n可以是在一個或多個服務(wù)器上執(zhí)行的軟件處理。在一些情況下,任務(wù)102a線程可以包括不同類型的組件,諸如,例如,映射器、規(guī)約器(reducer)、置亂器(shuffler)、組合器、管線對象或者其他類型的組件。
監(jiān)管器108通過與任務(wù)102a-n通信來監(jiān)管并行處理操作101。在一些實現(xiàn)方式中,監(jiān)管器108是在服務(wù)器或者服務(wù)器的集合上執(zhí)行的軟件處理或者軟件處理的集合。監(jiān)管器108可以經(jīng)由網(wǎng)絡(luò)(未示出)與任務(wù)102a-n通信。通信可以包括狀態(tài)信息從任務(wù)102a-n到監(jiān)管器108的交換。通信也可以包括來自監(jiān)管器108、關(guān)于并行處理操作101的統(tǒng)計的指示,諸如目標完成時間(下面討論)。在一些情況下,監(jiān)管器108可以控制任務(wù)102a-n的操作,諸如,例如,暫停任務(wù)102a-n、繼續(xù)進行任務(wù)102a-n、將碎片指派給任務(wù)102a-n、分裂任務(wù)102a-n或者其他操作。
如所示,并行處理操作101處理輸入數(shù)據(jù)集110。輸入數(shù)據(jù)集110可以包括結(jié)構(gòu)化或者非結(jié)構(gòu)化數(shù)據(jù)(諸如,例如,鍵值對、文件、數(shù)據(jù)庫行、數(shù)據(jù)庫列或者其他類型的數(shù)據(jù))的任何組合。類似地,由并行處理操作101產(chǎn)生的輸出數(shù)據(jù)集112可以包括結(jié)構(gòu)化或者非結(jié)構(gòu)化數(shù)據(jù)(諸如,例如,鍵值對、文件、數(shù)據(jù)庫行、數(shù)據(jù)庫列或者其他類型的數(shù)據(jù))的任何組合。在一些情況下,包括在輸出數(shù)據(jù)集112中的數(shù)據(jù)的類型可以與包括在輸入數(shù)據(jù)集110中的數(shù)據(jù)的類型相同。輸出數(shù)據(jù)集112也可以是與輸入數(shù)據(jù)集110不同的類型。在一些實現(xiàn)方式中,諸如,例如,對于執(zhí)行關(guān)于輸入數(shù)據(jù)集110中的每個記錄的操作(例如,數(shù)據(jù)庫更新)的操作,并行處理操作101可以不產(chǎn)生輸出數(shù)據(jù)集。
圖2A-B是在碎片分裂之前(200)和之后(210)的系統(tǒng)配置的框圖。如圖2A中所示,監(jiān)管器202與一個或多個任務(wù)204a-c通信。任務(wù)204a-c處理一個或多個碎片206a-c。在208,任務(wù)204a-c將它們各自的估計完成時間通信至監(jiān)管器202。例如,任務(wù)204a將估計完成時間4分鐘通信至監(jiān)管器202。任務(wù)204b將估計完成時間3分鐘通信至監(jiān)管器202。任務(wù)204c將估計完成時間13分鐘通信至監(jiān)管器202。如所示,任務(wù)212在配置200中是空閑的(亦即,沒有處理碎片)。因為存在空閑任務(wù)(212)并且沒有碎片還要被分派,所以圖2A中所示的作業(yè)處于尾聲狀態(tài)。
作為接收來自任務(wù)204a-c的估計完成時間的響應(yīng),在209,監(jiān)管器202確定與任務(wù)204a-c相關(guān)聯(lián)的并行處理操作的目標完成時間。在該情況下,監(jiān)管器202確定目標完成時間是5分鐘。監(jiān)管器202可以通過將每個任務(wù)204a-c以及空閑任務(wù)212的估計完成時間取平均來確定目標完成時間,空閑任務(wù)212可以看作具有完成時間0。在一些情況下,監(jiān)管器202可以基于關(guān)于包括任務(wù)204a-c和212的并行處理操作而指定的目標完成時間,諸如由并行處理操作的管理員指定的截止時間,來確定目標完成時間。在一些實現(xiàn)方式中,目標完成時間代表假定任務(wù)204a-c同時完成,并行處理操作的預期完成時間。目標完成時間也可以代表任務(wù)240a-c和212的報告的完成時間的加權(quán)平均。目標完成時間也可以由監(jiān)管器202根據(jù)其他過程或算法確定。
在一些情況下,208和209處任務(wù)204a-c和212以及監(jiān)管器202之間的通信經(jīng)由網(wǎng)絡(luò)(未示出)發(fā)生。通信可以根據(jù)一個或多個聯(lián)網(wǎng)協(xié)議執(zhí)行,諸如,例如,超文本傳輸協(xié)議(HTTP)、簡單網(wǎng)絡(luò)管理協(xié)議(SNMP)、遠程過程調(diào)用(RPC)或者其他協(xié)議。
圖2B示出碎片206c分裂之后的系統(tǒng)配置210。在操作中,任務(wù)204c可以接收來自監(jiān)管器202的目標完成時間。任務(wù)204c可以比較目標完成時間5分鐘和它的估計完成時間13分鐘,并且確定在目標完成時間之前它將不會結(jié)束處理碎片206c。作為響應(yīng),任務(wù)204c可以將碎片206c分裂成分裂碎片214a-b,每個包含碎片206c的一部分。任務(wù)204c可以繼續(xù)處理分裂碎片214a。分裂碎片214b可以由(先前空閑的)任務(wù)212處理。在一些情況下,分裂碎片214b可以由任務(wù)204c發(fā)送給監(jiān)管器202。監(jiān)管器202然后可以將碎片214b指派給任務(wù)212。監(jiān)管器202也可以將分裂碎片214b放置到諸如任務(wù)212這樣的空閑任務(wù)可以領(lǐng)取分裂碎片214b進行處理的位置。在一些情況下,該碎片分裂可以由監(jiān)管器202,諸如通過發(fā)送給任務(wù)204c的消息而發(fā)起。雖然圖2B示出碎片206c分裂成兩個新的碎片,但是在一些情況下,碎片206c可以分裂成多于兩個碎片。
圖3是在并行處理操作期間動態(tài)調(diào)整碎片分配的示例處理300的順序圖。圖3提供關(guān)于圖2A-B中示出的操作的更多細節(jié)。在305,任務(wù)204a將它的估計完成時間(4分鐘)發(fā)送給監(jiān)管器202。在310,任務(wù)204b將它的估計完成時間(3分鐘)發(fā)送給監(jiān)管器202。在315,任務(wù)204c將它的估計完成時間(13分鐘)發(fā)送給監(jiān)管器202。在一些情況下,該通信可以如關(guān)于圖2A-B描述的而發(fā)生。在320,監(jiān)管器202基于來自任務(wù)204a-c的估計完成時間確定目標完成時間。再次,可以如關(guān)于圖2A-B描述的,計算目標完成時間。在325-335,監(jiān)管器202將目標完成時間(5分鐘)發(fā)送給任務(wù)204a-c。該通信可以如關(guān)于圖2A-B描述的而發(fā)生。
在340,任務(wù)204c確定它的估計完成時間(13分鐘)大于它從監(jiān)管器202接收的目標完成時間(5分鐘)。作為響應(yīng),任務(wù)204c分裂它的相關(guān)聯(lián)的碎片206c(345)。在350,任務(wù)204c將分裂碎片214b發(fā)送給監(jiān)管器202。在355,任務(wù)204c繼續(xù)處理分裂碎片214a。在360,監(jiān)管器202將碎片214b指派給任務(wù)212。
圖4是在并行處理操作期間動態(tài)調(diào)整碎片分配的示例處理400的流程圖。在405,確定輸入數(shù)據(jù)集的批量數(shù)據(jù)處理作業(yè)的目標完成時間。批量數(shù)據(jù)處理作業(yè)可以由多個任務(wù)執(zhí)行,每個任務(wù)處理包括輸入數(shù)據(jù)集的不同部分的輸入碎片。
在410,從多個任務(wù)中識別具有大于批量處理作業(yè)的目標完成時間的估計完成時間的第一任務(wù)。在一些情況下,目標完成時間是由批量數(shù)據(jù)處理作業(yè)的管理員指定用于結(jié)束批量數(shù)據(jù)處理作業(yè)的截止時間。第一任務(wù)的估計完成時間代表第一任務(wù)將完成處理由第一任務(wù)處理的第一輸入碎片處的輸入數(shù)據(jù)集的該部分的估計時間。在一些情況下,多個任務(wù)的每個包括估計完成時間,估計完成時間代表任務(wù)將完成處理它的輸入碎片的估計時間,并且目標完成時間是批量數(shù)據(jù)處理作業(yè)的多個任務(wù)的估計完成時間的平均。在一些情況下,可以考慮與批量數(shù)據(jù)處理作業(yè)相關(guān)聯(lián)的空閑任務(wù),諸如,例如,通過將估計完成時間零指派到那些任務(wù)來確定估計完成時間??梢灾辽俨糠值鼗谙旅鎭泶_定多個任務(wù)的每個的估計完成時間,即對于多個任務(wù)的每個、剩余將要處理的輸入碎片的一部分的大小,對于已經(jīng)關(guān)于多個任務(wù)的每個而處理的輸入碎片的一部分、與多個任務(wù)的每個相關(guān)聯(lián)的處理速率,或者對于關(guān)于多個任務(wù)的每個在時間窗口內(nèi)處理的輸入碎片的一部分、與多個任務(wù)的每個相關(guān)聯(lián)的近期處理速率,或者其他信息。
在415,第一輸入碎片分裂成第一分裂輸入碎片以及第二、不同的分裂輸入碎片。分裂輸入碎片的每個包括第一輸入碎片的不同部分。在一些情況下,指派第一分裂輸入碎片由第二任務(wù)處理,并且指派第二分裂輸入碎片由不同于第二任務(wù)的第三任務(wù)處理。在一些實現(xiàn)方式中,第二任務(wù)是第一任務(wù),并且第三任務(wù)是與批量數(shù)據(jù)處理作業(yè)相關(guān)聯(lián)的空閑任務(wù)。
在一些情況下,識別第一任務(wù)以及分裂第一輸入碎片由第一任務(wù)自身執(zhí)行。在這種情況下,第一任務(wù)可以從與批量數(shù)據(jù)處理作業(yè)相關(guān)聯(lián)的監(jiān)管器處理接收目標完成時間,并且將它與它的估計完成時間相比較以確定在目標完成時間之前它將不會完成。第一任務(wù)可以將在目標完成時間之前第一任務(wù)將不能處理的第一輸入碎片的一部分的指示發(fā)送給監(jiān)管器處理,并且作為響應(yīng),監(jiān)管器處理可以將第一輸入碎片的該部分指派給空閑任務(wù)進行處理。識別第一任務(wù)并且分裂第一輸入碎片也可以由監(jiān)管器處理執(zhí)行。
在一些情況下,方法400包括識別批量數(shù)據(jù)處理作業(yè)已經(jīng)進入尾聲狀態(tài),在尾聲狀態(tài)中,與輸入數(shù)據(jù)集相關(guān)聯(lián)的所有未完成的碎片都正在由任務(wù)處理并且存在可用來處理碎片的空閑任務(wù)。在這種情況下,可以在識別批量數(shù)據(jù)處理作業(yè)已經(jīng)進入尾聲狀態(tài)之后執(zhí)行識別第一任務(wù)和分裂第一輸入碎片。
圖5是可以作為客戶端或者作為服務(wù)器或者多個服務(wù)器,用來實現(xiàn)在本文獻中描述的系統(tǒng)和方法的計算設(shè)備500、550的框圖。計算設(shè)備500旨在代表各種形式的數(shù)字計算機,諸如筆記本電腦、臺式機、工作站、個人數(shù)字助理、服務(wù)器、刀片服務(wù)器、大型機或者其他適當?shù)挠嬎銠C。計算設(shè)備550旨在代表各種形式的移動設(shè)備,諸如個人數(shù)字助理、蜂窩式電話、智能電話以及其他類似的計算設(shè)備。另外,計算設(shè)備500或者550能夠包括通用串行總線(USB)閃存驅(qū)動器。USB閃存驅(qū)動器可以存儲操作系統(tǒng)和其他應(yīng)用。USB閃存驅(qū)動器能夠包括輸入/輸出組件,諸如無線收發(fā)器或者可以插入另一個計算設(shè)備的USB端口中的USB連接器。這里示出的組件、它們的連接和關(guān)系以及它們的功能意在僅是示例性的,并且不意在限制在本文獻中描述和/或要求保護的本發(fā)明的實現(xiàn)方式。
計算設(shè)備500包括處理器502、存儲器504、存儲設(shè)備506、連接到存儲器504和高速擴展端口510的高速接口508以及連接到低速總線514和存儲設(shè)備506的低速接口512。組件502、504、506、508、510和512的每個使用各種總線互連,并且可以安裝在常見的主板上或者在適當?shù)那闆r下以其他方式安裝。處理器502能夠處理在計算設(shè)備500內(nèi)執(zhí)行的指令,包括存儲在存儲器504中或者存儲設(shè)備506上、在諸如耦合到高速接口508的顯示器516這樣的外部輸入/輸出設(shè)備上顯示用于GUI的圖形信息的指令。在其他實現(xiàn)方式中,在適當?shù)那闆r下,可以連同多個存儲器以及多種類型的存儲器使用多個處理器和/或多個總線。而且,可以連接多個計算設(shè)備500,每個設(shè)備提供必要操作的部分(例如,作為服務(wù)器庫、一組刀片服務(wù)器或者多處理器系統(tǒng))。
存儲器504存儲計算設(shè)備500內(nèi)的信息。在一種實現(xiàn)方式中,存儲器504是一個或多個易失性存儲單元。在另一種實現(xiàn)方式中,存儲器504是一個或多個非易失性存儲單元。存儲器504也可以是諸如磁盤或者光盤這樣的另一種形式的計算機可讀介質(zhì)。
存儲設(shè)備506能夠為計算設(shè)備500提供海量存儲。在一種實現(xiàn)方式中,存儲設(shè)備506可以是或者包含計算機可讀介質(zhì),諸如軟盤設(shè)備、硬盤設(shè)備、光盤設(shè)備或者磁帶設(shè)備、閃存或者其他類似的固態(tài)存儲設(shè)備、或者設(shè)備陣列,包括在存儲區(qū)域網(wǎng)或者其他配置中的設(shè)備。計算機程序產(chǎn)品能夠在信息載體中有形地實施。計算機程序產(chǎn)品也可以包含當執(zhí)行時,執(zhí)行諸如上面描述的那些的一個或多個方法的指令。信息載體是計算機或者機器可讀介質(zhì),諸如存儲器504、存儲設(shè)備506或者處理器502上的存儲器。
高速接口508為計算設(shè)備500管理帶寬密集型操作,而低速接口512管理較低帶寬密集型操作。這種功能分配僅是示例性的。在一種實現(xiàn)方式中,高速接口508耦合到存儲器504、顯示器516(例如,通過圖形處理器或者加速器),以及耦合到可以接受各種擴展卡(未示出)的高速擴展端口510。在該實現(xiàn)方式中,低速接口512耦合到存儲設(shè)備506和低速擴展端口514。可以包括各種通信端口(例如,USB、藍牙、以太網(wǎng)、無線以太網(wǎng))的低速擴展端口可以耦合到一個或多個輸入/輸出設(shè)備,諸如鍵盤、指點設(shè)備、掃描儀,或者例如通過網(wǎng)絡(luò)適配器耦合到諸如交換機或路由器這樣的聯(lián)網(wǎng)設(shè)備。
計算設(shè)備500可以以許多不同的形式實現(xiàn),如在圖中所示。例如,它可以作為標準服務(wù)器520實現(xiàn),或者在一組這種服務(wù)器中實現(xiàn)多次。它也可以作為機架服務(wù)器系統(tǒng)524的部分而實現(xiàn)。另外,它可以在諸如筆記本電腦522這樣的個人計算機中實現(xiàn)。作為替換,來自計算設(shè)備500的組件可以與諸如設(shè)備550這樣的移動設(shè)備(未示出)中的其他組件組合。這種設(shè)備的每個可以包含計算設(shè)備500、550的一個或多個,并且整個系統(tǒng)可以由彼此通信的多個計算設(shè)備500、550構(gòu)成。
除了別的組件之外,計算設(shè)備550包括處理器552、存儲器564、諸如顯示器554這樣的輸入/輸出設(shè)備、通信接口566以及收發(fā)器568。設(shè)備550也可以提供有諸如微型硬盤這樣的存儲設(shè)備或者其他設(shè)備來提供另外的存儲。組件550、552、564、554、566和568的每個使用各種總線互連,并且組件的幾個可以安裝在常見的主板上或者在適當?shù)那闆r下以其他方式安裝。
處理器552能夠執(zhí)行計算設(shè)備550內(nèi)的指令,包括存儲在存儲器564中的指令。處理器可以作為包括單獨的以及多個模擬和數(shù)字處理器的芯片的芯片集實現(xiàn)。另外,處理器可以使用許多體系結(jié)構(gòu)的任何來實現(xiàn)。例如,處理器552可以是CISC(復雜指令集計算機)處理器、RISC(精簡指令集計算機)處理器、或者MISC(最小指令集計算機)處理器。處理器可以提供例如設(shè)備550的其他組件的協(xié)同,諸如用戶接口的控制、由設(shè)備550運行的應(yīng)用以及設(shè)備550的無線通信。
處理器552可以通過控制接口558以及耦合到顯示器554的顯示接口556與用戶通信。顯示器554可以是,例如,TFT(薄膜晶體管液晶顯示器)顯示器或者OLED(有機發(fā)光二極管)顯示器或者其他適當?shù)娘@示技術(shù)。顯示接口556可以包括用于驅(qū)動顯示器554將圖形和其他信息展示給用戶的適當?shù)碾娐废到y(tǒng)。控制接口558可以接收來自用戶的命令并且轉(zhuǎn)換它們用于提交給處理器552。另外,可以提供外部接口562與處理器552通信,以便使得設(shè)備550能夠與其他設(shè)備進行附近區(qū)域通信。在一些實現(xiàn)方式中,外部接口562可以提供例如有線通信,或者在其他實現(xiàn)方式中,提供無線通信,并且也可以使用多個接口。
存儲器564存儲計算設(shè)備550內(nèi)的信息。存儲器564能夠作為一個或多個計算機可讀介質(zhì)、一個或多個易失性存儲單元或者一個或多個非易失性存儲單元的一個或多個實現(xiàn)。也可以提供擴展存儲器574并且擴展存儲器574通過擴展接口572連接到設(shè)備550,擴展接口572可以包括例如SIMM(單列直插存儲模塊)卡接口。這種擴展存儲器574可以為設(shè)備550提供額外的存儲空間,或者也可以為設(shè)備550存儲應(yīng)用或者其他信息。具體地,擴展存儲器574可以包括執(zhí)行或者補充上面描述的處理的指令,并且也可以包括安全信息。因此,例如,擴展存儲器574可以提供作為設(shè)備550的安全模塊,并且可以使用允許設(shè)備550的安全使用的指令進行編程。另外,安全應(yīng)用可以經(jīng)由SIMM卡,連同另外的信息一起提供,諸如以不可非法入侵的方式將識別信息放置在SIMM卡上。
如下面所討論的,存儲器564可以包括,例如,閃存和/或NVRAM存儲器。在一種實現(xiàn)方式中,計算機程序產(chǎn)品在信息載體中有形地實施。計算機程序產(chǎn)品包含當執(zhí)行時,執(zhí)行諸如上面描述的那些的一個或多個方法的指令。信息載體是可以例如經(jīng)由收發(fā)器568或者外部接口562接收的計算機或者機器可讀介質(zhì),諸如存儲器564、擴展存儲器574或者處理器552上的存儲器。
設(shè)備550可以通過通信接口566無線地通信,在必要的情況下,通信接口566可以包括數(shù)字信號處理電路系統(tǒng)。通信接口566可以提供各種模式或者協(xié)議下的通信,其中諸如GSM語音呼叫、SMS、EMS或者MMS消息傳遞、CDMA、TDMA、PDC、WCDMA、CDMA2000或者GPRS。這種通信可以例如通過射頻收發(fā)器568而發(fā)生。另外,近程通信可以諸如使用藍牙、WiFi或者其他這種收發(fā)器(未示出)而發(fā)生。另外,GPS(全球定位系統(tǒng))接收器模塊570可以提供另外的導航以及位置相關(guān)的無線數(shù)據(jù)給設(shè)備550,這可以在適當?shù)那闆r下由在設(shè)備550上運行的應(yīng)用使用。
設(shè)備550也可以使用音頻編碼解碼器560可聽地通信,音頻編碼解碼器560可以接收來自用戶的口頭信息并且將它轉(zhuǎn)換成可使用的數(shù)字信息。音頻編碼解碼器560可以諸如通過例如在設(shè)備550的手持機中的揚聲器,類似地為用戶生成可聽的聲音。這種聲音可以包括來自語音電話呼叫的聲音,可以包括記錄的聲音(例如,語音消息、音樂文件等)并且也可以包括由在設(shè)備550上操作的應(yīng)用生成的聲音。
計算設(shè)備550可以以許多不同的形式實現(xiàn),如圖中所示。例如,它可以作為蜂窩式電話580實現(xiàn)。它也可以作為智能電話582、個人數(shù)字助理或者其他類似的移動設(shè)備的部分而實現(xiàn)。
在各種實現(xiàn)方式中,如果先前的操作未成功(例如,如果沒有執(zhí)行確定),那么不執(zhí)行“響應(yīng)”另一個操作或者“作為”另一個操作的“結(jié)果”(例如,確定或者識別)而執(zhí)行的操作?!白詣印眻?zhí)行的操作是沒有用戶干預(例如,干預的用戶輸入)而執(zhí)行的操作。本文獻中使用有條件的語言描述的特征可以描述可選的實現(xiàn)方式。在一些示例中,從第一設(shè)備“傳輸”到第二設(shè)備包括第一設(shè)備將數(shù)據(jù)放置到網(wǎng)絡(luò)中由第二設(shè)備接收,但是可以不包括第二設(shè)備接收數(shù)據(jù)。相反地,從第一設(shè)備“接收”可以包括從網(wǎng)絡(luò)接收數(shù)據(jù),但是可以不包括第一設(shè)備傳輸數(shù)據(jù)。
由計算系統(tǒng)“確定”能夠包括計算系統(tǒng)請求另一個設(shè)備執(zhí)行確定并且將結(jié)果提供給計算系統(tǒng)。而且,由計算系統(tǒng)“顯示”或者“展示”能夠包括計算系統(tǒng)發(fā)送數(shù)據(jù)用于使得另一個設(shè)備顯示或者展示所引用的信息。
在該說明書中描述的主題和操作的實施例能夠在數(shù)字電子電路系統(tǒng),或者在計算機軟件、固件或者硬件中,包括在本說明書中公開的結(jié)構(gòu)以及它們的結(jié)構(gòu)等同物,或者它們的一個或多個的組合中實現(xiàn)。在本說明書中描述的主題的實施例能夠作為一個或多個計算機程序,亦即,計算機程序指令的一個或多個模塊實現(xiàn),它們編碼在計算機存儲介質(zhì)上用于由數(shù)據(jù)處理裝置執(zhí)行或者控制數(shù)據(jù)處理裝置的操作。作為替代或者另外地,程序指令能夠編碼在人工生成的傳播信號上,例如,機器生成的電氣、光學或者電磁信號,生成該信號以編碼信息用于傳輸?shù)竭m當?shù)慕邮掌髟O(shè)備,用于由數(shù)據(jù)處理裝置執(zhí)行。計算機存儲介質(zhì)能夠是計算機可讀存儲設(shè)備、計算器可讀存儲基板、隨機或者串行存取存儲陣列或者設(shè)備,或者它們的一個或多個的組合,或者包括在其中。而且,當計算機存儲介質(zhì)不是傳播信號時,計算機存儲介質(zhì)能夠是編碼在人工生成的傳播信號中的計算機程序指令的來源或目的地。計算機存儲介質(zhì)也能夠是一個或多個單獨的物理組件或介質(zhì)(例如,多個CD、磁盤或者其他存儲設(shè)備),或者包括在其中。
在本說明書中描述的操作能夠作為由數(shù)據(jù)處理裝置在存儲在一個或多個計算機可讀存儲設(shè)備上或者從其他來源接收的數(shù)據(jù)上執(zhí)行的操作來實現(xiàn)。
術(shù)語“數(shù)據(jù)處理裝置”包括用于處理數(shù)據(jù)的所有種類的裝置、設(shè)備和機器,作為示例包括可編程處理器、計算機、片上系統(tǒng)、或者前述的多個或者組合。裝置能夠包括專用邏輯電路系統(tǒng),例如,F(xiàn)PGA(現(xiàn)場可編程門陣列)或者ASIC(專用集成電路)。除了硬件之外,裝置也能夠包括為討論中的計算機程序創(chuàng)建執(zhí)行環(huán)境的代碼,例如構(gòu)成處理器固件、協(xié)議棧、數(shù)據(jù)庫管理系統(tǒng)、操作系統(tǒng)、跨平臺運行環(huán)境、虛擬機或者它們的一個或多個的組合的代碼。裝置和執(zhí)行環(huán)境能夠?qū)崿F(xiàn)各種不同的計算模型基礎(chǔ)設(shè)施,諸如網(wǎng)絡(luò)服務(wù)、分布式計算和網(wǎng)格計算基礎(chǔ)設(shè)施。
計算機程序(也稱作程序、軟件、軟件應(yīng)用、腳本或者代碼)能夠以任何形式的編程語言編寫,包括編譯或者解釋語言、聲明式或者過程式語言,并且它能夠以任何形式部署,包括作為獨立程序或者作為模塊、組件、子例程、對象或者適合于在計算環(huán)境中使用的其他單元。計算機程序可以,但是不需要,對應(yīng)于文件系統(tǒng)中的文件。程序能夠存儲在保存其他程序或數(shù)據(jù)(例如,存儲在標記語言文檔中的一個或多個腳本)的文件的一部分中,在討論中的程序?qū)S玫膯蝹€文件中,或者在多個協(xié)同的文件中(例如,存儲一個或多個模塊、子程序或者代碼的部分的文件)。能夠部署計算機程序在一個計算機上或者在位于一個場所或者跨越多個場所而分布并且由通信網(wǎng)絡(luò)互連的多個計算機上執(zhí)行。
在本說明書中描述的處理和邏輯流程能夠由一個或多個可編程處理器執(zhí)行,一個或多個可編程處理器執(zhí)行一個或多個計算機程序以通過在輸入數(shù)據(jù)上操作并且生成輸出來執(zhí)行動作。處理和邏輯流程也能夠由專用邏輯電路系統(tǒng)執(zhí)行,并且裝置也能夠作為專用邏輯電路系統(tǒng)而實現(xiàn),例如,F(xiàn)PGA(現(xiàn)場可編程門陣列)或者ASIC(專用集成電路)。
作為示例,適合于計算機程序的執(zhí)行的處理器包括通用和專用微處理器兩者,以及任何種類的數(shù)字計算機的任何一個或多個處理器。通常,處理器將接收來自只讀存儲器或者隨機存取存儲器或者二者的指令和數(shù)據(jù)。計算機的必需元件是用于根據(jù)指令執(zhí)行動作的處理器以及用于存儲指令和數(shù)據(jù)的一個或多個存儲設(shè)備。通常,計算機也將包括,或者操作地耦合以接收來自用于存儲數(shù)據(jù)的一個或多個海量存儲設(shè)備的數(shù)據(jù)或者傳送數(shù)據(jù)到該一個或多個海量存儲設(shè)備,或者二者,海量存儲設(shè)備例如磁性、磁光盤或者光盤。然而,計算機不需要具有這種設(shè)備。而且,計算機能夠在另一個設(shè)備中實施,例如,移動電話、個人數(shù)字助理(PDA)、移動音頻或視頻播放器、游戲控制臺、全球定位系統(tǒng)(GPS)接收器或者便攜式存儲設(shè)備(例如,通用串行總線(USB)閃存驅(qū)動器),僅舉幾個例子。適合于存儲計算機程序指令和數(shù)據(jù)的設(shè)備包括所有形式的非易失性存儲器、介質(zhì)和存儲設(shè)備,作為示例,包括半導體存儲設(shè)備,例如,EPROM、EEPROM和閃存設(shè)備;磁盤,例如,內(nèi)部硬盤或者可移除磁盤;磁光盤;以及CDROM和DVD-ROM盤。處理器和存儲器能夠由專用邏輯電路系統(tǒng)補充,或者合并在專用邏輯電路系統(tǒng)中。
為了提供與用戶的交互,在本說明書中描述的主題的實施例能夠在計算機上實現(xiàn),計算機具有顯示設(shè)備,例如,CRT(陰極射線管)或者LCD(液晶顯示)監(jiān)控器,用于顯示信息給用戶,以及鍵盤和指點設(shè)備,例如,鼠標或軌跡球,由此用戶能夠提供輸入到計算機。其他種類的設(shè)備同樣能夠用來提供與用戶的交互;例如,提供給用戶的反饋能夠是任何形式的傳感反饋,例如,視覺反饋、聽覺反饋或者觸覺反饋;并且來自用戶的輸入能夠以任何形式接收,包括聲學、語音或者觸覺輸入。另外,計算機能夠通過發(fā)送文檔到由用戶使用的設(shè)備并且接收來自由用戶使用的設(shè)備的文檔與用戶交互;例如,通過響應(yīng)從網(wǎng)絡(luò)瀏覽器接收的請求,發(fā)送網(wǎng)頁到用戶的用戶設(shè)備上的網(wǎng)絡(luò)瀏覽器。
在本說明書中描述的主題的實施例能夠在包括后端組件的計算系統(tǒng)中,例如,作為數(shù)據(jù)服務(wù)器,或者在包括中間件組件的計算系統(tǒng)中,例如,作為應(yīng)用服務(wù)器,或者在包括前端組件的計算系統(tǒng)中,例如,作為具有圖形用戶界面或者網(wǎng)絡(luò)瀏覽器的用戶計算機,通過圖形用戶界面或者網(wǎng)絡(luò)瀏覽器,用戶能夠與在本說明書中描述的主題的實現(xiàn)方式交互,或者一個或多個這種后端、中間件或者前端組件的任何組合而實現(xiàn)。系統(tǒng)的組件能夠通過任何形式或介質(zhì)的數(shù)字數(shù)據(jù)通信,例如通信網(wǎng)絡(luò)互連。通信網(wǎng)絡(luò)的示例包括局域網(wǎng)(“LAN”)和廣域網(wǎng)(“WAN”)、互聯(lián)網(wǎng)絡(luò)(例如,因特網(wǎng))以及對等網(wǎng)絡(luò)(例如,自組織對等網(wǎng)絡(luò))。
計算系統(tǒng)能夠包括用戶和服務(wù)器。用戶和服務(wù)器通常遠離彼此并且典型地通過通信網(wǎng)絡(luò)交互。用戶和服務(wù)器的關(guān)系借助于在各自的計算機上運行并且具有到彼此的用戶-服務(wù)器關(guān)系的計算機程序而出現(xiàn)。在一些實施例中,服務(wù)器將數(shù)據(jù)(例如,HTML頁面)傳輸?shù)接脩粼O(shè)備(例如,為了顯示數(shù)據(jù)給與用戶設(shè)備交互的用戶以及接收來自該用戶的用戶輸入)。在用戶設(shè)備處生成的數(shù)據(jù)(例如,用戶交互的結(jié)果)能夠從服務(wù)器處的用戶設(shè)備接收。
雖然本說明書包含許多具體的實現(xiàn)細節(jié),但是這些不應(yīng)當解釋為對于任何發(fā)明的范圍或者可以要求保護的內(nèi)容的限制,而是解釋為針對特定發(fā)明的特定實施例的特征的描述。在單獨的實施例的上下文中在本說明書中描述的某些特征也能夠在單個實施例中組合實現(xiàn)。相反地,在單個實施例的上下文中描述的各種特征也能夠單獨地或者以任何適當?shù)淖咏M合在多個實施例中實現(xiàn)。而且,雖然特征可以在上面描述為在某些組合中起作用,并且甚至最初如此要求,但是來自所要求保護的組合的一個或多個特征在某些情況下能夠從組合中去除,并且所要求保護的組合可以指向子組合或者子組合的變型。
類似地,雖然操作在附圖中以特定的次序描繪,但是這不應(yīng)當理解為需要這種操作以所示的特定次序或者以順序的次序執(zhí)行,或者需要執(zhí)行所有例示的操作,以實現(xiàn)期望的結(jié)果。在某些情況下,多任務(wù)和并行處理可以是有利的。而且,在上面描述的實施例中各種系統(tǒng)組件的分離不應(yīng)當理解為在所有實施例中需要這種分離,并且應(yīng)當理解,所描述的程序組件和系統(tǒng)能夠通常在單個軟件產(chǎn)品中集成在一起或者封裝到多個軟件產(chǎn)品中。
因此,已經(jīng)描述了主題的特定實施例。其他實施例在下面的權(quán)利要求的范圍內(nèi)。在一些情況下,在權(quán)利要求書中敘述的動作能夠以不同的次序執(zhí)行并且仍然實現(xiàn)期望的結(jié)果。另外,在附圖中描繪的處理不一定需要所示的特定次序,或者順序的次序,以實現(xiàn)期望的結(jié)果。在某些實現(xiàn)方式中,多任務(wù)和并行處理可以是有利的。