該說明書涉及管理分布式處理系統(tǒng)中的元數(shù)據(jù)。
分布式處理系統(tǒng)是包括能夠被指派為執(zhí)行各種任務(wù)或過程的多個數(shù)據(jù)處理器的系統(tǒng)。它們例如可以包括數(shù)千個數(shù)據(jù)處理器,其中每一個能夠執(zhí)行多種不同的過程。分布式處理系統(tǒng)可以被用于處理大量數(shù)據(jù)和/或用于處理連續(xù)的數(shù)據(jù)流。能夠由分布式計算系統(tǒng)來執(zhí)行的各種計算已經(jīng)促成了用于執(zhí)行各種任務(wù)的許多不同工具的研發(fā)。
技術(shù)實現(xiàn)要素:
總體上,該說明書中所描述主題的一個創(chuàng)新方面能夠以方法來體現(xiàn),其包括動作:在包括一個或多個數(shù)據(jù)處理裝置的集線器設(shè)備處接收計算規(guī)范,所述計算規(guī)范包括指定要由分布式處理系統(tǒng)所執(zhí)行的計算的初始狀態(tài)的粒子集合,所述分布式處理系統(tǒng)包括多個數(shù)據(jù)處理器,其中該粒子集合中所包括的每個粒子包括指定計算的初始狀態(tài)的一部分的元數(shù)據(jù);由該集線器設(shè)備基于與該粒子集合中所包括的每個粒子相關(guān)聯(lián)的粒子類型來存儲表示計算的狀態(tài)的粒子層級,該粒子層級包括用于該粒子層級的一個或多個預(yù)訂的預(yù)訂粒子,每個預(yù)訂與該粒子層級中所包括的一個或多個粒子相對應(yīng),并且每個預(yù)訂指定要由該集線器設(shè)備所執(zhí)行的一個或多個動作;以及由該集線器設(shè)備并且在該計算的執(zhí)行期間執(zhí)行由該一個或多個預(yù)訂中的至少一個預(yù)訂所指定的一個或多個動作中的至少一個動作。該方面的其它實施例包括相對應(yīng)的系統(tǒng)、裝置,以及在計算機存儲設(shè)備上進行編碼的被配置為執(zhí)行該方法的動作的計算機程序。
這些和其它實施例均可選地能夠包括以下一個或多個特征。該粒子層級可以包括:一個或多個管理器代理(agent)粒子,其指定一個或多個管理器代理過程的元數(shù)據(jù),所述一個或多個管理器代理過程管理該分布式處理系統(tǒng)的計算的執(zhí)行;一個或多個數(shù)據(jù)集粒子,其包括能夠由該分布式處理系統(tǒng)訪問的數(shù)據(jù)的元數(shù)據(jù);一個或多個任務(wù)粒子,其包括要由該分布式處理系統(tǒng)執(zhí)行的一個或多個任務(wù)的元數(shù)據(jù);或者一個或多個工作器代理粒子,其針對該一個或多個任務(wù)中的至少一個任務(wù)而包括一個或多個工作器代理的元數(shù)據(jù),每個工作器代理與用于執(zhí)行該任務(wù)的多個數(shù)據(jù)處理器的子集相對應(yīng)。
該計算規(guī)范可以針對該粒子層級的一個或多個預(yù)訂中的每一個預(yù)訂指定預(yù)訂代理。每個預(yù)訂代理可以是i)具有粒子層級中所包括的相對應(yīng)粒子的管理器代理,或者ii)具有粒子層級中所包括的相對應(yīng)粒子的工作器代理。
該一個或多個預(yù)訂之一可以是觀察預(yù)訂,其指示該集線器設(shè)備向該觀察預(yù)訂的預(yù)訂代理通知由該觀察預(yù)訂所對應(yīng)的該粒子層級中的一個或多個粒子指定的狀態(tài)部分的指定變化。
該一個或多個預(yù)訂之一可以是查詢預(yù)訂,其指示該集線器設(shè)備響應(yīng)于接收到該查詢預(yù)訂而為該查詢預(yù)訂的預(yù)訂代理提供與該查詢預(yù)訂所對應(yīng)的該粒子層級中的一個或多個粒子所指定的狀態(tài)部分相關(guān)聯(lián)的特定信息。
該一個或多個預(yù)訂之一可以是主張預(yù)訂,其指示該集線器設(shè)備指派該主張預(yù)訂所對應(yīng)的該粒子層級中的一個或多個粒子中所包括的粒子的所有權(quán)。
該方法可以進一步包括:接收用于計算的附加粒子;并且針對該計算將該附加粒子存儲在該粒子層級中。
該方法可以進一步包括:通過在計算的執(zhí)行期間監(jiān)視該粒子層級中所包括的一個或多個粒子的一個或多個變化而監(jiān)視該計算的狀態(tài);并且響應(yīng)于檢測到具有被預(yù)訂代理所預(yù)訂的相對應(yīng)預(yù)訂的特定粒子的特定變化而向該預(yù)訂代理提供通知。
每個粒子可以指定以下中的一個或多個:描述該粒子在該粒子層級內(nèi)的位置的名稱;該粒子的當(dāng)前狀態(tài);擁有該粒子的所有者;該粒子的所有權(quán)將會到期的到期時間;包括用于監(jiān)視計算進度的量度的統(tǒng)計;對粒子所有權(quán)的限制;對該粒子層級中所包括的其它粒子的依賴性;或者該集線器設(shè)備所指定的指示對該粒子的最近更新的時間戳。
要由該集線器所執(zhí)行的一個或多個動作可以包括以下中的一個或多個:向預(yù)訂代理提供在觀察預(yù)訂所對應(yīng)的一個或多個粒子中發(fā)生了預(yù)先指定的事件的通知;向預(yù)訂代理指派主張預(yù)訂所對應(yīng)的一個或多個粒子的所有權(quán);更新一個或多個粒子的當(dāng)前狀態(tài);或者為預(yù)訂代理提供查詢預(yù)訂所對應(yīng)的一個或多個粒子中包括的特定元數(shù)據(jù)。
管理器代理過程中的一個或多個管理器代理過程可以包括:啟動器代理過程,其對工作器代理粒子子樹進行觀察并且啟動過程;匹配器代理過程,其將要由該分布式處理系統(tǒng)處理的數(shù)據(jù)與工作器代理中的一個或多個工作器代理進行匹配;或者任務(wù)整形器代理過程,其對任務(wù)粒子子樹進行管理。
該說明書中所描述主題的特定實施例能夠被實施從而實現(xiàn)以下一種或多種優(yōu)勢。使用集線器設(shè)備來管理使用分布式處理系統(tǒng)所執(zhí)行的計算的元數(shù)據(jù)允許使用公共的集線器設(shè)備來執(zhí)行各種計算。公共的集線器設(shè)備能夠提供容錯、調(diào)度、工作器管理以及特定計算所需的其它特征。使用集線器設(shè)備執(zhí)行計算的工具開發(fā)人員避免了需要部署許多集線器設(shè)備共有的特征,并且該集線器設(shè)備在計算需要時還允許開發(fā)人員定制。除了集線器自身所支持的管理之外,所連接的代理能夠觀察并更新集線器中的元數(shù)據(jù)從而提供附加的管理功能,舉出幾個示例,諸如定制調(diào)度和工作器管理。
附圖以及以下的描述中給出了本說明書中所描述主題的一個或多個實施例的細節(jié)。該主題的其它特征、方面和優(yōu)勢將由于描述、附圖和權(quán)利要求而變得顯而易見。
附圖說明
圖1是其中集線器設(shè)備為分布式處理系統(tǒng)管理元數(shù)據(jù)的示例環(huán)境的框圖。
圖2是集線器設(shè)備所管理的示例粒子層級的圖示。
圖3是通過其為分布式處理系統(tǒng)管理元數(shù)據(jù)的示例過程的流程圖。
圖4是示例數(shù)據(jù)處理裝置的框圖。
各圖中同樣的附圖標(biāo)記和指示表示同樣的要素。
具體實施方式
集線器設(shè)備促進對使用分布式處理系統(tǒng)執(zhí)行的計算的元數(shù)據(jù)的管理。在實施主管-工作器架構(gòu)的分布式處理系統(tǒng)中,主管的傳統(tǒng)角色可以由集線器設(shè)備和管理器代理所承擔(dān)。該集線器設(shè)備保存表示系統(tǒng)所執(zhí)行的計算的狀態(tài)的元數(shù)據(jù)。該管理器代理則觀察計算的狀態(tài)并隨時間對其進行更新。工作器代理從集線器設(shè)備要求工作單元,執(zhí)行用于計算的數(shù)據(jù)處理,并且隨時間更新計算的狀態(tài)。
分布式處理系統(tǒng)可以包括許多數(shù)據(jù)處理器,它們均能夠被指派工作器或管理器的角色,并且可以被用來執(zhí)行部分計算。該集線器設(shè)備存儲計算狀態(tài)并且以被設(shè)計為包容各種計算的元數(shù)據(jù)管理要求的差異的方式來管理計算元數(shù)據(jù)。一種示例計算可以是對持續(xù)流動的傳入數(shù)據(jù)流所執(zhí)行的過濾、排序和報告過程的組合。另一種示例計算是大規(guī)模圖形處理算法,其生成與圖形中所表示的數(shù)據(jù)相關(guān)的統(tǒng)計和其它信息。
由分布式處理系統(tǒng)的數(shù)據(jù)處理器所承擔(dān)的管理器代理角色例如包括可以啟動要由系統(tǒng)所執(zhí)行的其它代理和過程的啟動器代理,將任務(wù)劃分為子任務(wù)以便由工作器代理進行處理的任務(wù)整形器代理,以及向工作器代理指派任務(wù)的匹配器代理。工作器代理執(zhí)行匹配器代理所指派的任務(wù)。管理器和工作器代理都貫穿計算的執(zhí)行而與集線器設(shè)備進行通信,例如發(fā)出指定計算狀態(tài)的變化的更新請求或者有關(guān)計算狀態(tài)的查詢。
存儲在集線器中以用于計算的信息可以包括若干類型的元數(shù)據(jù),它們共同包括任意給定時間的計算狀態(tài)。該元數(shù)據(jù)被存儲在粒子層級中,其中每個粒子表示指定計算狀態(tài)的一部分的元數(shù)據(jù)。例如,任務(wù)粒子子樹可以包括計算中所包括的每項任務(wù)和子任務(wù)的元數(shù)據(jù),并且每個粒子表示任務(wù)或子任務(wù)的元數(shù)據(jù),諸如負責(zé)執(zhí)行特定子任務(wù)的工作器代理或者子任務(wù)的進度。計算的初始狀態(tài)由控制器所提供的規(guī)范進行描述,上述控制器例如發(fā)起計算的計算機。貫穿該計算,粒子可以被增加、修改、或者從層級移除,這反映出計算狀態(tài)的變化。例如,已經(jīng)完成的任務(wù)和/或子任務(wù)的粒子可以從粒子層級中被移除,而附加任務(wù)或輸入數(shù)據(jù)的粒子則可以被添加至該層級。
執(zhí)行計算的代理可以使用預(yù)訂來表達對粒子層級中所表示的元數(shù)據(jù)的興趣,例如子樹的粒子、其它代理、數(shù)據(jù)集、或任務(wù)數(shù)據(jù)。預(yù)訂指定了對粒子子集的興趣,上述粒子子集可以包括單個粒子。預(yù)訂的范圍由其附接點和深度所建立,其指定了粒子層級中子樹的根并且可以對預(yù)訂所覆蓋的子樹內(nèi)的深度進行限制。作為示例,將準(zhǔn)備進行處理的粒子指派至能夠處理它們的代理的匹配器代理可以對觀察能夠執(zhí)行特定任務(wù)的工作器代理的子樹進行預(yù)訂?;谠擃A(yù)訂,集線器設(shè)備在所指定的工作器代理的子樹中發(fā)生變化時(諸如工作器代理完成了一項子任務(wù))向該匹配器代理提供更新。預(yù)訂粒子也可以在粒子層級中有所表示,并且例如能夠由初始計算規(guī)范來添加或者在有請求來自代理時被添加。
不同計算利用有所變化的輸入以及有所區(qū)分的輸出而實施不同范圍的不同的任務(wù),但是相同的集線器設(shè)備架構(gòu)能夠被用來管理許多不同計算的元數(shù)據(jù)。使用集線器設(shè)備來為分布式處理系統(tǒng)存儲元數(shù)據(jù)為執(zhí)行計算的工具的開發(fā)人員提供了能夠被用于各種新的以及現(xiàn)有的數(shù)據(jù)處理工具的靈活的元數(shù)據(jù)管理系統(tǒng)。
這些特征以及附加特征在下文中更為詳細地進行描述。
圖1是其中集線器設(shè)備為分布式處理系統(tǒng)管理元數(shù)據(jù)的示例環(huán)境100的框圖。諸如局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、互聯(lián)網(wǎng)或者它們的組合的計算機網(wǎng)絡(luò)102將控制器104連接至分布式處理系統(tǒng)106,后者包括集線器設(shè)備108、管理器代理112、和工作器代理114。示例網(wǎng)絡(luò)102還將網(wǎng)絡(luò)數(shù)據(jù)存儲設(shè)備116連接至分布式處理系統(tǒng)106和控制器104。雖然控制器104和網(wǎng)絡(luò)存儲設(shè)備116與分布式處理系統(tǒng)106分開描繪,但是其中之一或二者也可以被包括在分布式處理系統(tǒng)106之內(nèi)。分布式處理系統(tǒng)106還可以包括并未在示例環(huán)境100中進行描繪的附加的組件,諸如用于控制該分布式處理系統(tǒng)的管理系統(tǒng)/組件,或者用于管理分布式處理系統(tǒng)106內(nèi)的工作分配的專用負載平衡器。
控制器104向分布式處理系統(tǒng)106提供規(guī)范118。控制器104可以如示例環(huán)境100中所描繪的處于分布式處理系統(tǒng)106之外,或者處于分布式處理系統(tǒng)106之內(nèi)。規(guī)范118包括指定要由分布式處理系統(tǒng)106所執(zhí)行的計算的初始狀態(tài)的粒子集合。在一些實施方式中,控制器104由第三方提供以該規(guī)范,所述第三方例如開發(fā)人員或者用來與用戶進行接口對接的單獨系統(tǒng)。集線器設(shè)備108可以以其它方式接收初始規(guī)范118,例如可以在指令中提供初始規(guī)范118,所述指令被包括在分布式處理系統(tǒng)106上啟動的應(yīng)用中,或者可以從網(wǎng)絡(luò)存儲設(shè)備116取得。
集線器設(shè)備108在粒子層級中存儲用于計算的元數(shù)據(jù)并且支持粒子隨時間的更新。集線器設(shè)備108例如可以在服務(wù)器計算機上實施,并且可以包括用于存儲特定計算的元數(shù)據(jù)的本地或聯(lián)網(wǎng)存儲110。在一些實施方式中,網(wǎng)絡(luò)存儲設(shè)備116可以被集線器設(shè)備108單獨或結(jié)合存儲110所使用。集線器設(shè)備108與共同執(zhí)行計算的管理器代理112和工作器代理114進行通信。集線器設(shè)備108、存儲110、管理器代理112、和工作器代理114之間的通信例如可以是直接通信、網(wǎng)絡(luò)內(nèi)部通信、和/或跨網(wǎng)絡(luò)102的通信的任意組合。
管理器代理112是分布式處理系統(tǒng)106中對計算的執(zhí)行進行管理并且與集線器設(shè)備108進行交互從而隨時間修改計算狀態(tài)的組件。管理器代理例如包括在需要時啟動工作器代理114的啟動器代理,以及將工作單元與工作器代理114進行匹配的匹配器代理。在控制器104是分布式處理系統(tǒng)106的一部分的實施方式中,控制器104可以被認(rèn)為是管理器代理。
工作器代理114是分布式處理系統(tǒng)106中執(zhí)行部分計算的組件。工作器代理114還與集線器設(shè)備108進行交互以隨時間修改計算狀態(tài)。工作器代理可以在分布式計算系統(tǒng)106的一個或多個數(shù)據(jù)處理器上實施,并且在一些實施方式中能夠被用來執(zhí)行管理器代理為其所指派的任何任務(wù)。例如,工作器代理可以以各種方式來管控流數(shù)據(jù)或數(shù)據(jù)批次,諸如對數(shù)據(jù)排序、重拍記錄、移動數(shù)據(jù)、過濾記錄、以及生成輸出數(shù)據(jù)。
代理—管理代理112和工作器代理114—可以由分布式處理系統(tǒng)106中所包括的一個或多個數(shù)據(jù)處理器來實施。附加的數(shù)據(jù)處理器可以按照需要被添加和/或從分布式處理系統(tǒng)106被移除。此外,代理可以具有專用數(shù)據(jù)處理器或數(shù)據(jù)處理器池以便針對計算執(zhí)行代理的角色。在一些實施方式中,代理可以與本地存儲設(shè)備、分布式處理系統(tǒng)中所包括的存儲設(shè)備、和/或聯(lián)網(wǎng)存儲設(shè)備118進行通信。例如,對一批記錄執(zhí)行垃圾郵件過濾處理的工作器代理114可以從聯(lián)網(wǎng)存儲設(shè)備讀取記錄,使用本地存儲將記錄與垃圾郵件模板進行比較,并且將例如垃圾郵件或非垃圾郵件標(biāo)記的輸出寫入到另一個聯(lián)網(wǎng)存儲設(shè)備。
示例計算可以是通過啟動集線器設(shè)備108以及可選地啟動啟動器代理(例如,管理器代理112之一)來開始,所述集線器設(shè)備108和啟動器代理將負責(zé)基于工作器代理粒子而啟動其它代理。這例如可以使用腳本來執(zhí)行。在一些實施方式中,集線器設(shè)備108和所有代理可以在計算開始時被啟動,例如通過腳本啟動,這避免了對啟動器代理的需求,除非工作器代理粒子要隨時間而被添加至計算。
計算的初始規(guī)范118可以由控制器104提供至集線器設(shè)備108。規(guī)范118包括表示計算的初始狀態(tài)的粒子集合。例如,用于對一批數(shù)據(jù)執(zhí)行映射和減少功能的計算的控制器可以提供包括表示映射輸入和減少輸出的數(shù)據(jù)集粒子、表示映射和減少任務(wù)的粒子、以及能夠處理該映射和減少任務(wù)的工作器—例如被稱作映射工作器和減少工作器—的一個或多個工作器代理粒子的規(guī)范。集線器設(shè)備108以粒子層級對規(guī)范118中所包括的粒子進行表示,上述粒子層級在下文更為詳細地進行描述。
管理器代理112準(zhǔn)備要被工作器代理114所主張的粒子。例如,調(diào)度器代理可以決定計算的每個階段或任務(wù)應(yīng)當(dāng)何時開始,輸入劃分器代理可以將輸入數(shù)據(jù)劃分為多塊,任務(wù)整形器代理可以將多塊數(shù)據(jù)分組為要由工作器代理所執(zhí)行的任務(wù),并且工作器代理管理器則可以向能夠添加和/或移除多個工作器從而適應(yīng)計算需求的集群管理代理或系統(tǒng)提供信號。其它管理器代理112也可以被用來促進計算的執(zhí)行,并且它們例如能夠由開發(fā)人員按照執(zhí)行特定工作的需要而改變。
任務(wù)和子任務(wù)例如可以由匹配器代理基于工作器主張預(yù)訂而被指派給工作器代理。以下更為詳細描述的預(yù)訂指定了對粒子層級中的一部分的興趣。例如,執(zhí)行排序任務(wù)的工作器代理可以具有指示有興趣接收要被排序的數(shù)據(jù)的主張預(yù)訂。匹配器代理能夠識別沒有所有者的輸入數(shù)據(jù)并且將其指派給工作器代理,例如假設(shè)該工作器代理滿足輸入數(shù)據(jù)粒子所指定的任何要求。
工作器代理114利用其隨時間變化的任務(wù)的進度來對集線器設(shè)備108進行更新,并且集線器設(shè)備108可以以粒子層級向上傳播并匯總統(tǒng)計,諸如進度的量度。在任務(wù)粒子子樹中所表示的每項任務(wù)都完成時,集線器設(shè)備能夠更新任務(wù)粒子的狀態(tài)以指示該任務(wù)完結(jié)。在一些實施方式中,粒子指定在該粒子可以被主張之前必須被滿足的依賴性。例如,排序任務(wù)可以依賴于過濾過程,并且用于過濾過程的粒子無法被主張直至排序任務(wù)完成。
表示所要處理的新輸入(例如,如在用于計算的新的輸入源的情況下)或者計算的附加階段的粒子例如可以由控制器104基于外部事件或者如同在迭代計算中那樣作為計算自身的結(jié)果隨事件被添加至集線器設(shè)備108。針對終止的計算而言,控制器104、用于計算的指令或者其它代理可以檢測到終止并且開始關(guān)閉數(shù)據(jù)處理系統(tǒng)。例如,計算可以在處于任務(wù)粒子子樹的根部的粒子狀態(tài)被集線器設(shè)備108標(biāo)記為完結(jié)時完成。諸如對流數(shù)據(jù)所執(zhí)行的那些計算的其它計算可能并沒有指定的結(jié)尾。
如以上所提到的,除了示例環(huán)境100中所描繪的配置之外,集線器設(shè)備108可以在各種分布式處理系統(tǒng)配置中進行操作。除了以上所描述的示例計算和任務(wù)之外,集線器設(shè)備108還支持各種計算和任務(wù)。
圖2是在存儲110中存儲并且由集線器設(shè)備108進行管理的示例粒子層級200的圖示。示例粒子層級200通過以樹形結(jié)構(gòu)組織粒子來表示計算的狀態(tài),上述樹形結(jié)構(gòu)具有在根節(jié)點201下以子樹進行組織的粒子。在一些實施方式中,粒子可以在線路上進行表示,例如在線路協(xié)議中,并且如以上所提到的,包括描述計算的一部分的狀態(tài)的元數(shù)據(jù)。作為示例,分布式處理系統(tǒng)所執(zhí)行的排序任務(wù)可以被劃分為多個子任務(wù)以便由多個工作器進行處理,例如一個排序子任務(wù)可以用于對以A-M開始的數(shù)據(jù)記錄進行排序,另一個子任務(wù)則可以用于對以N-Z開始的記錄進行排序,并且第三子任務(wù)可以用于對非字母數(shù)據(jù)記錄進行排序。用于排序任務(wù)以及每個子任務(wù)的元數(shù)據(jù)被存儲在粒子層級之中。
在一些實施方式中,粒子是可以包括特定于該粒子所對應(yīng)的規(guī)范部分的元數(shù)據(jù)的一般數(shù)據(jù)對象。每個子任務(wù)粒子例如可以指定該子任務(wù)的狀態(tài),例如準(zhǔn)備、活動、或完成;該子任務(wù)的所有者,例如執(zhí)行該子任務(wù)的工作器代理的標(biāo)識符;以及該子任務(wù)的進度,例如已經(jīng)被排序的記錄的數(shù)目或百分比,或者當(dāng)前正在被排序的記錄的時間戳。任務(wù)粒子可以包括針對該任務(wù)的類似信息,并且任務(wù)的進度例如可以是每個子任務(wù)的進度的匯總或平均,或者當(dāng)前正在被排序的最舊記錄的時間戳。
示例粒子層級200包括作為管理器代理子樹的根的管理器代理粒子202。管理器代理粒子202包括用于計算的管理器代理的元數(shù)據(jù),諸如子樹中所包括的管理器代理的數(shù)目和類型。示例的管理器代理子樹包括三個管理器代理的粒子、啟動器粒子204、匹配器粒子206、和任務(wù)整形器粒子208。啟動器粒子204例如可以包括開始代理過程的啟動器代理的元數(shù)據(jù),上述代理過程包括創(chuàng)建集線器設(shè)備108以及計算所需的其它代理的過程。匹配器粒子206例如可以包括用于匹配器代理的元數(shù)據(jù),上述匹配器代理觀察準(zhǔn)備匹配的粒子并且將該粒子與能夠處理它們的可用代理進行匹配。任務(wù)整形器粒子208例如可以包括用于任務(wù)整形器代理的元數(shù)據(jù),上述任務(wù)整形器代理可以將表示大型任務(wù)或計算階段的粒子劃分為子任務(wù)以便由工作器代理進行處理。
示例匹配器粒子250包括用于元數(shù)據(jù)的若干字段或類別,諸如指示匹配器代理206的名稱和路徑位置的名稱字段以及指示匹配器代理當(dāng)前為“活動”的狀態(tài)字段,例如當(dāng)前在數(shù)據(jù)處理器上運行并且主動匹配工作器代理和任務(wù)。其它示例字段包括所有者字段,其識別粒子的所有者作為運行匹配器過程的數(shù)據(jù)處理器,以及指示13個任務(wù)中的12個已經(jīng)與工作器代理進行了匹配的統(tǒng)計字段。匹配器代理粒子206中可以包括其它字段,并且啟動器粒子204、任務(wù)整形器粒子208、和管理器代理粒子202中可以包括相同或不同的字段。
示例粒子層級200中所包括的數(shù)據(jù)集粒子210是數(shù)據(jù)集子樹的根。數(shù)據(jù)集粒子210包括描述計算數(shù)據(jù)的狀態(tài)的元數(shù)據(jù),諸如輸入和/或輸出數(shù)據(jù)的結(jié)構(gòu)、類型和位置。示例數(shù)據(jù)集子樹包括輸入數(shù)據(jù)粒子212和輸出數(shù)據(jù)粒子214。輸入數(shù)據(jù)粒子212例如可以包括指示輸入數(shù)據(jù)的存儲位置或流傳輸源、輸入數(shù)據(jù)的格式以及用于計算的輸入數(shù)據(jù)的數(shù)量的元數(shù)據(jù)。輸出數(shù)據(jù)粒子214例如可以包括指示輸出數(shù)據(jù)和/或日志數(shù)據(jù)的存儲位置以及輸出數(shù)據(jù)的格式和計算期間所產(chǎn)生的輸出數(shù)據(jù)數(shù)量的元數(shù)據(jù)。
示例粒子層級200中所包括的工作器代理粒子216是工作器代理子樹的根。工作器代理粒子216包括描述執(zhí)行計算的工作器代理的狀態(tài)的元數(shù)據(jù),諸如工作器代理的類型、工作器代理數(shù)目、以及工作器代理可用性。示例工作器代理子樹包括描述執(zhí)行映射功能的工作器代理(例如,映射工作器)的狀態(tài)的映射器粒子218,以及描述執(zhí)行減少功能(例如,減少工作器)的工作器代理的狀態(tài)的減少器粒子。映射器粒子218和減少器粒子220可以包括描述它們相應(yīng)子樹中所包括的工作器的狀態(tài)的元數(shù)據(jù),諸如掛起粒子指派的映射工作器的數(shù)目以及當(dāng)前執(zhí)行減少功能的工作器的數(shù)目。執(zhí)行映射功能的個體工作器的粒子—例如,m1 222和m2 224—包括個體工作器代理的元數(shù)據(jù),當(dāng)前被指定執(zhí)行減少功能的工作器的粒子—例如,r1 226和r2 228—同樣如此。
如同以上所描述的示例管理器代理粒子250,用于工作器的示例粒子r1 260包括用于元數(shù)據(jù)的若干字段或類別,諸如指示工作器的名稱和路徑位置的名稱字段,以及指示工作器當(dāng)前“掛起”的狀態(tài)字段,例如等待主張減少子任務(wù)。其它示例字段包括所有者字段,其將粒子的所有者識別為運行減少工作器過程的數(shù)據(jù)處理器,指示除非被所有者重新開始否則所有權(quán)將會到期的時間的所有者信息字段,以及指示當(dāng)前被粒子所有者所使用的系統(tǒng)資源的統(tǒng)計字段。減少器工作器粒子r1226中可以包括其它字段,并且匹配器工作器粒子m1 222和m2 224、匹配器粒子218、減少器粒子220、和工作器代理粒子216中可以包括相同或不同的字段。
示例的粒子層級200還包括形成任務(wù)子樹的根的任務(wù)粒子230。任務(wù)粒子230包括描述要在計算過程的期間被執(zhí)行(或正被執(zhí)行)的任務(wù)的狀態(tài)的元數(shù)據(jù),諸如所要執(zhí)行的任務(wù)的整體進度以及任務(wù)和子任務(wù)的整體數(shù)目和類型。示例任務(wù)子樹包括描述映射任務(wù)的狀態(tài)的映射粒子232以及描述減少任務(wù)的狀態(tài)的減少粒子234。映射粒子232和減少粒子234可以包括描述它們相應(yīng)的子樹中所包括的任務(wù)和/或子任務(wù)的狀態(tài)的元數(shù)據(jù),諸如任務(wù)的進度,其例如作為子任務(wù)進度的匯總,以及等待被集線器設(shè)備108或匹配器代理指定所有者的子任務(wù)粒子的數(shù)目。用于個體子任務(wù)的粒子—例如,A 236、B 238、C 240和D 242—包括相應(yīng)子任務(wù)的元數(shù)據(jù),諸如粒子所有者的身份和子任務(wù)進度。
預(yù)訂粒子244也包括在示例粒子層級200中,并且其形成預(yù)訂子樹的根。預(yù)訂粒子244包括描述預(yù)訂狀態(tài)的元數(shù)據(jù),諸如預(yù)訂的數(shù)目和類型。示例預(yù)訂子樹包括均描述預(yù)訂的狀態(tài)的預(yù)訂粒子246。在一些實施方式中,預(yù)訂粒子并不存儲在粒子層級的子樹中,而是可以替代地存儲在粒子層級的不同部分之中,例如隨預(yù)訂代理存儲,或者存儲在與粒子層級分立的數(shù)據(jù)結(jié)構(gòu)中。
如同示例的管理器代理粒子250和示例的減少器工作器粒子260,示例預(yù)訂粒子270包括用于元數(shù)據(jù)的若干字段或類別,諸如指示預(yù)訂的名稱和路徑位置的名稱字段以及指示預(yù)訂當(dāng)前為“活動”的狀態(tài)字段,例如具有預(yù)訂方。子狀態(tài)字段可以指定有關(guān)粒子狀態(tài)的附加信息,諸如被用來收窄預(yù)訂的信息,例如用于數(shù)據(jù)集粒子的子狀態(tài)字段可以指定準(zhǔn)備中的數(shù)據(jù)集的大小是未知的直至代理已經(jīng)確定數(shù)據(jù)集的大小并且將數(shù)據(jù)集的子狀態(tài)更新為處于準(zhǔn)備中但具有已知大小,這可以是數(shù)據(jù)集粒子被另一個工作器代理所主張的條件。預(yù)訂粒子的示例子狀態(tài)字段指定了預(yù)訂的類型,例如用于減少子任務(wù)D 242的主張預(yù)訂。所有者字段將粒子的預(yù)訂方識別為減少器工作器代理r2 220,并且所有權(quán)信息列出了減少子任務(wù)的所有權(quán)的要求,例如300MB的可用存儲器。在下文中更為詳細地描述預(yù)訂時,示例預(yù)訂粒子270指示減少器工作器r1226已經(jīng)對減少子任務(wù)D 242進行了主張,并且集線器設(shè)備108會在某些條件被滿足時將該減少子任務(wù)的所有權(quán)指派給該減少器工作器,諸如對所完成的映射子任務(wù)—例如,映射子任務(wù)B 238—的依賴性。預(yù)訂粒子270中可以包括其它字段,并且其它預(yù)訂粒子中可以包括相同或不同的字段。
如以上所提到的,預(yù)訂指定了對粒子或粒子子集的興趣,并且在粒子層級中具有相對應(yīng)的附接點和深度。雖然存在各種類型的預(yù)訂,但是每種預(yù)訂指定要由集線器設(shè)備所執(zhí)行的一個或多個動作。例如,觀察預(yù)訂可以被用來隨時間監(jiān)視計算的狀態(tài)并且在條件被滿足時使得代理得到有關(guān)一個或多個粒子的新的或當(dāng)前狀態(tài)的通知。示例觀察預(yù)訂可以被啟動器代理所預(yù)訂以隨時間觀察工作器代理粒子(例如工作器代理粒子216)的插入和變化。當(dāng)新的工作器代理粒子被插入時,集線器設(shè)備將由于該觀察預(yù)訂而通知啟動器代理。
另一種示例預(yù)訂是主張預(yù)訂,其表達對擁有粒子層級的某個部分中的粒子的興趣并且在可用粒子被匹配至進行預(yù)訂的代理時形成主張通知,上述代理受到代理的能力和粒子所有權(quán)的約束。該主張通知向進行預(yù)訂的代理通知其已經(jīng)基于該主張預(yù)訂而成為粒子的所有者。在一些實施方式中,代理能夠明確插入粒子并且將其自身命名為所有者而并不使用主張預(yù)訂。
查詢預(yù)訂被用來查找一個或多個粒子的當(dāng)前狀態(tài),如對集線器設(shè)備的直接查詢。例如,當(dāng)接收到針對任務(wù)粒子的主張通知時,工作器可能使用查詢預(yù)訂來查找數(shù)據(jù)集粒子中被該任務(wù)粒子識別為輸入的附加信息。另一種示例預(yù)訂是批準(zhǔn)預(yù)訂,其提供了防止發(fā)生某些變化的機會。例如,安全管理器可以防止具有敏感日志作為輸入并且其輸出位置違反安全法規(guī)的任務(wù)被插入,或者備份管理器可以防止備份工作器在主要任務(wù)已經(jīng)完成的情況下重新開始任務(wù)粒子的所有權(quán)。其它類型的預(yù)訂也可以被存儲在該粒子層級中,包括針對特定計算所開發(fā)的定制預(yù)訂。在一些實施方式中,某些類型的預(yù)訂在粒子層級中可能并非是持久的,例如查詢預(yù)訂可以被一次性地用來查詢集線器并且隨后就被遺忘。在一些實施方式中,某些類型的預(yù)訂在粒子層級中是持久的,例如,使得通知作為計算的元數(shù)據(jù)而定期被提供給代理的批準(zhǔn)預(yù)訂就隨時間而有所變化。
在一些實施方式中,預(yù)訂可以被局限于某些類型的粒子,或者具有某些屬性的粒子。例如,觀察預(yù)訂可以指定其僅有興趣針對特定狀態(tài)的粒子從集線器設(shè)備接收通知。另一種示例預(yù)訂可以指定其僅想要查詢指示相對應(yīng)任務(wù)完成超過90%的任務(wù)和子任務(wù)粒子。也可以使用其它限制或限制的組合,諸如主張預(yù)訂針對匹配特定輸入類型并且小于特定大小的輸入數(shù)據(jù)。
粒子層級的結(jié)構(gòu)可以取決于特定計算的規(guī)范和要求。其它粒子層級可以包括與示例粒子層級200中所描繪的那些更多或更少的粒子和子樹。例如,粒子層級可以具有多個工作器代理子樹,并且管理器代理可以直接作為與管理器代理粒子相反的根節(jié)點的后代。在一些實施方式中,預(yù)訂可以與粒子層級分立地存儲,例如存儲在集線器設(shè)備的本地存儲中的不同數(shù)據(jù)結(jié)構(gòu)和/或位置中。例如,如果計算調(diào)用多個任務(wù)整形器代理,則任務(wù)整形器粒子208可以是用于個體任務(wù)整形器的子樹的根,并且預(yù)訂246可以根據(jù)預(yù)訂類型而被組織為子樹,例如每種類型一個子樹。
每個粒子中所包括的元數(shù)據(jù)也可能與示例層級200的示例粒子中所包括的元數(shù)據(jù)相比有所變化。例如,粒子的名稱可以是集線器設(shè)備所指派的唯一標(biāo)識符,或者是唯一標(biāo)識符和路徑的組合。粒子狀態(tài)可以根據(jù)該粒子所對應(yīng)的計算部分而變化。例如,任務(wù)粒子與數(shù)據(jù)集粒子相比可以具有不同選項來描述其狀態(tài)。粒子狀態(tài)可以包括諸如以下任意的狀態(tài)代碼:指示粒子還沒有或不再處于集線器中的“缺失(absent)”,指示粒子不完整且仍然在準(zhǔn)備的“準(zhǔn)備(prep)”,指示粒子等等被調(diào)度的“掛起(pending)”,指示粒子由于依賴性無法前行的“阻塞(blocked)”,指示粒子能夠由匹配器代理給予所有者的“準(zhǔn)備好(ready)”,指示粒子能夠由集線器設(shè)備給予所有者的“可指派(assignable)”,指示粒子具有所有者的“活動的(active)”,指示粒子的處理已經(jīng)完成的“完成(done)”,指示粒子的處理不成功終止的“失敗(failed)”,以及指示粒子形成不正確并且無法被正常處理的“破壞(broken)”。
另一個示例粒子字段包括所有權(quán)信息,其可以描述對于代理為了擁有粒子所必須提供的功能屬性和資源的限制、在粒子能夠被擁有之前所必須被滿足的對其它粒子的依賴性、以及除非租約被重新開始否則對粒子的所有權(quán)將會到期的時間。其它粒子字段包括指定了集線器的針對粒子的最近更新的邏輯時間戳、狀態(tài)細節(jié)、粒子層級向上完成傳播的指示、以及可能被粒子的非所有者進行修改的線索。
貫穿計算,粒子層級可以有所變化。例如,粒子和子樹可以由控制器代理插入或移除,并且粒子內(nèi)的元數(shù)據(jù)隨著計算狀態(tài)的變化而變化。例如,并未結(jié)束的計算—諸如對流輸入數(shù)據(jù)的計算—可以具有活動的數(shù)據(jù)集粒子和子樹,隨著新數(shù)據(jù)的粒子被添加,對其處理已經(jīng)完成的數(shù)據(jù)的粒子被不斷移除。集線器還可以使得控制器代理結(jié)束對計算的處理,例如通過向控制器代理發(fā)送任務(wù)子樹的根已經(jīng)被集線器標(biāo)記為完成的通知。
圖3是通過其為分布式處理系統(tǒng)管理元數(shù)據(jù)的示例過程300的流程圖。過程300可以由諸如以上所描述的集線器設(shè)備的數(shù)據(jù)處理裝置來執(zhí)行。
在集線器設(shè)備處接收包括指定要由分布式處理系統(tǒng)所執(zhí)行的計算的初始狀態(tài)的粒子集合的計算規(guī)范(302)。該分布式處理系統(tǒng)包括多個數(shù)據(jù)處理器,并且該粒子集合中所包括的每個粒子包括指定計算的狀態(tài)的一部分的元數(shù)據(jù)。例如,用于對輸入數(shù)據(jù)的集合執(zhí)行過濾和排序過程的計算的控制器代理可以向集線器設(shè)備提供規(guī)范。該規(guī)范可以包括用于過濾任務(wù)和排序任務(wù)的粒子,以及用于要執(zhí)行過濾任務(wù)的工作器的粒子。作為示例,如果排序過程依賴于過濾過程,則該規(guī)范中所包括的粒子可以不包括用于執(zhí)行排序過程的工作器的粒子,因為它們在計算的初始階段并不被需要。
由該集線器設(shè)備基于與粒子集合中所包括的每個粒子相關(guān)聯(lián)的粒子類型而存儲表示計算的狀態(tài)的粒子層級(304)。該粒子層級可以包括針對該粒子層級的零個或更多預(yù)訂的預(yù)訂粒子,每個預(yù)訂與該粒子層級中所包括的零個或更多粒子相對應(yīng),并且每個預(yù)訂指定要由集線器設(shè)備所執(zhí)行的一個或多個動作,例如觀察和/或主張。
在一些實施方式中,預(yù)訂之一是觀察預(yù)訂,其指令集線器設(shè)備向該觀察預(yù)訂的預(yù)訂方通知該觀察預(yù)訂所對應(yīng)的該粒子層級中的一個或多個粒子所指定的狀態(tài)部分的指定變化。例如,啟動器代理可以對用于過濾任務(wù)的任務(wù)粒子而具有觀察預(yù)訂,集線器設(shè)備可以關(guān)于針對過濾任務(wù)的更新而向啟動器代理進行通知,并且啟動器代理可以使用該信息而針對取決于該過濾任務(wù)的后續(xù)排序任務(wù)而啟動工作器。
在一些實施方式中,一個或多個預(yù)訂之一是查詢預(yù)訂,其指示集線器設(shè)備響應(yīng)于接收到查詢預(yù)訂而向查詢預(yù)訂的預(yù)訂方提供與該查詢預(yù)訂所對應(yīng)的該粒子層級中的一個或多個粒子所指定的狀態(tài)部分相關(guān)聯(lián)的具體信息。例如,在用戶要求時報告任務(wù)的完成狀態(tài)的管理器代理可以針對特定任務(wù)的進度而向集線器設(shè)備發(fā)出查詢。
在一些實施方式中,一個或多個預(yù)訂之一是主張預(yù)訂,其指示集線器設(shè)備指派該主張預(yù)訂所對應(yīng)的該粒子層級中的一個或多個粒子中所包括的粒子的所有權(quán)。例如,工作器代理可以針對特定任務(wù)或子任務(wù)而向集線器設(shè)備發(fā)出主張預(yù)訂,并且集線器設(shè)備會將任務(wù)粒子的所有權(quán)指派給該工作器代理。
在一些實施方式中,該粒子層級包括一個或多個管理器代理粒子,所述一個或多個管理器代理粒子指定用于管理分布式處理系統(tǒng)的計算執(zhí)行的一個或多個管理器代理過程的元數(shù)據(jù)。例如,正在執(zhí)行管理要由分布式處理系統(tǒng)所執(zhí)行的計算的過程的數(shù)據(jù)處理器具有其自己的元數(shù)據(jù)以及該元數(shù)據(jù)存儲于其中的其自己的粒子層級部分。負載平衡代理的元數(shù)據(jù)例如可以包括指示分布式處理系統(tǒng)中的每個工作器代理的進度的數(shù)據(jù)。在一些實施方式中,管理器代理中的一個或多個包括:觀察工作器代理粒子子樹并且啟動過程的啟動器代理過程;將要由分布式處理系統(tǒng)處理的數(shù)據(jù)匹配至工作器代理中的一個或多個的匹配器代理過程;或者管理任務(wù)粒子子樹的任務(wù)整形器代理過程。
該粒子層級還可以包括一個或多個數(shù)據(jù)集粒子,所述一個或多個數(shù)據(jù)集粒子包括能夠由該分布式處理系統(tǒng)所訪問的數(shù)據(jù)的元數(shù)據(jù)。這例如可以包括用于輸入數(shù)據(jù)、輸出數(shù)據(jù)和日志數(shù)據(jù)的粒子,其可以包括諸如日志數(shù)據(jù)的位置、輸出數(shù)據(jù)的數(shù)量以及輸入數(shù)據(jù)的類型的元數(shù)據(jù)。
該粒子層級還可以包括一個或多個任務(wù)粒子,所述一個或多個任務(wù)粒子包括要由該分布式處理系統(tǒng)所執(zhí)行的一個或多個任務(wù)的元數(shù)據(jù)。例如,涉及到排序過程和過濾過程的計算可以具有每個過程的任務(wù)粒子。在一些實施方式中,每個任務(wù)粒子是作為該任務(wù)的一部分的子任務(wù)的子樹的根。例如,過濾任務(wù)可以包括用于過濾不同類型的輸入數(shù)據(jù)的子任務(wù)。
該粒子層級還可以包括一個或多個工作器代理粒子,所述一個或多個工作器代理粒子針對至少一個任務(wù)而包括均與用于執(zhí)行該任務(wù)的數(shù)據(jù)處理器的子集相對應(yīng)的一個或多個工作代理的元數(shù)據(jù)。使用涉及到排序和過濾任務(wù)的示例計算,工作器代理粒子子樹可以包括用于過濾工作器代理的一個粒子,其可以形成包括用于執(zhí)行過濾過程的數(shù)據(jù)處理器的粒子的子樹的根,以及用于排序工作器代理的另一個粒子,其可以形成包括用于執(zhí)行排序過程的數(shù)據(jù)處理器的粒子的子樹的根。
在一些實施方式中,該計算規(guī)范指定了針對粒子層級的一個或多個預(yù)訂中的每一個的預(yù)訂代理。例如,觀察特定任務(wù)粒子的啟動器代理可以被指定為觀察預(yù)訂的預(yù)訂方,其可以使得集線器設(shè)備代表啟動器代理自身而觀察任務(wù)粒子。在一些實施方式中,每個預(yù)訂代理是i)具有管理器代理子樹中所包括的相對應(yīng)粒子的管理器代理,或者ii)具有工作器代理子樹中所包括的相對應(yīng)粒子的工作器代理。在該實施方式中,預(yù)訂僅由工作器代理或管理器代理所預(yù)訂。
在一些實施方式中,接收用于計算的附加粒子(306)。例如,附加工作器代理可以被添加啟動器代理或負載平衡器代理。附加粒子可以以多種方式被插入,例如基于計算指令、管理器代理插入、用戶輸入、以及要處理的附加數(shù)據(jù)的到來。
在一些實施方式中,附加粒子被存儲在用于計算的粒子層級中(308)。如以上所提到的,粒子可以以多種方式被引入計算,并且所接收到的粒子可以由集線器設(shè)備在接收到該粒子時添加至粒子層級。
在一些實施方式中,通過監(jiān)視計算執(zhí)行期間該粒子層級中所包括的一個或多個粒子的一個或多個變化而對計算狀態(tài)進行監(jiān)視(310)。雖然該規(guī)范描述了計算的初始狀態(tài),但是隨著計算進行,粒子層級的粒子中所包括的數(shù)據(jù)可以由執(zhí)行計算的代理來更新,并且這些變化導(dǎo)致計算狀態(tài)的變化。針對粒子層級的修改可以在計算期間被報告給集線器設(shè)備和/或由其所觀察,并且該集線器設(shè)備可以隨著計算進度而匯總、追蹤、和管理元數(shù)據(jù)。例如,該集線器設(shè)備可以針對當(dāng)前被執(zhí)行的任務(wù)的任務(wù)粒子定期匯總統(tǒng)計字段以追蹤任務(wù)進度。例如,使用由執(zhí)行過濾任務(wù)的各個過濾器代理所報告的進度信息,該集線器設(shè)備可以將整體過濾器任務(wù)進度從完成了50%更新為75%,其反映出計算狀態(tài)的變化。
在一些實施方式中,監(jiān)視變化包括接收并處理針對粒子層級中的粒子的更新。例如,該集線器設(shè)備可以接收有關(guān)現(xiàn)有粒子的更新信息并且將該信息與粒子層級中的現(xiàn)有粒子進行融合。此外,在一些實施方式中,集線器設(shè)備可以接收現(xiàn)有粒子的新版本并且利用該新版本替換現(xiàn)有粒子。
在計算的執(zhí)行期間,該集線器設(shè)備執(zhí)行所述預(yù)訂針對粒子層級所指定的動作中的至少一個動作(312)。在一些實施方式中,該一個或多個動作包括:為預(yù)訂代理提供在觀察預(yù)訂所對應(yīng)的一個或多個粒子中發(fā)生了預(yù)先指定的事件的通知;向預(yù)訂代理指派主張預(yù)訂所對應(yīng)的一個或多個粒子的所有權(quán);更新一個或多個粒子的當(dāng)前狀態(tài);或者為預(yù)訂代理提供查詢預(yù)訂所對應(yīng)的一個或多個粒子中包括的特定元數(shù)據(jù)。例如,匹配器代理可以是使得集線器設(shè)備觀察過濾任務(wù)并且在過濾任務(wù)完成時通知匹配器代理的觀察預(yù)訂的預(yù)訂方。該觀察預(yù)訂所指定的動作是向預(yù)訂方進行的通知。作為另一個示例,主張預(yù)訂可以使得集線器設(shè)備采取將一個粒子的所有權(quán)指派給另一個粒子的動作,如同排序工作器代理具有針對排序任務(wù)的主張預(yù)訂的情形。
圖4是示例數(shù)據(jù)處理裝置的框圖。系統(tǒng)400包括處理器410、存儲器420、存儲設(shè)備430、和輸入/輸出設(shè)備440。組件410、420、430、和440中的每一個例如能夠使用系統(tǒng)總線450進行互連。處理器410能夠?qū)τ糜谠谙到y(tǒng)400內(nèi)執(zhí)行的指令進行處理。在一種實施方式中,處理器410是單線程處理器。在另一種實施方式中,處理器410是多線程處理器。處理器410能夠?qū)Υ鎯υ诖鎯ζ?20中或者存儲設(shè)備430上的指令進行處理。
存儲器420存儲系統(tǒng)400內(nèi)的信息。在一種實施方式中,存儲器420是計算機可讀介質(zhì)。在一種實施方式中,存儲器420是易失性存儲器單元。在另一種實施方式中,存儲器420是非易失性存儲器單元。
存儲設(shè)備430能夠為系統(tǒng)400提供大容量存儲。在一種實施方式中,存儲設(shè)備430是計算機可讀介質(zhì)。在各種不同實施方式中,存儲設(shè)備430例如可以包括硬盤設(shè)備、光盤設(shè)備,或者一些其它大容量存儲設(shè)備。
輸入/輸出設(shè)備440為系統(tǒng)400提供輸入/輸出操作。在一種實施方式中,輸入/輸出設(shè)備440可以包括一個或多個網(wǎng)絡(luò)接口設(shè)備,例如以太網(wǎng)卡、例如RS-232端口的串行通信設(shè)備、和/或例如802.11卡的無線接口設(shè)備。在另一種實施方式中,輸入/輸出設(shè)備可以包括被配置為接收輸入數(shù)據(jù)并且向例如鍵盤、打印機和顯示設(shè)備460的其它輸入/輸出設(shè)備發(fā)送輸出數(shù)據(jù)的驅(qū)動器設(shè)備。然而,也能夠使用其它實施方式,諸如移動計算設(shè)備、移動通信設(shè)備、機頂盒電視客戶端設(shè)備等。
該說明書中所描述的主題和操作能夠以數(shù)字電子電路來實施,或者以計算機軟件、固件、或硬件來實施,包括該說明書中所公開的結(jié)構(gòu)及其結(jié)構(gòu)等同物,或者以它們中一個或多個的組合來實施。該說明書中所描述主題的實施例能夠被實施為一個或多個計算機程序,即在計算機存儲介質(zhì)上進行編碼以便由數(shù)據(jù)處理裝置執(zhí)行或者控制其操作的計算機程序指令的一個或多個模塊。
計算機存儲介質(zhì)可以是計算機可讀存儲設(shè)備、計算機可讀存儲基板、隨機或串行訪問存儲器陣列或設(shè)備或者它們中一個或多個的組合,或者包括于其中。此外,雖然計算機存儲介質(zhì)并非是傳播信號,但是計算機存儲介質(zhì)可以是人工生成的傳播信號中所編碼的計算機程序指令的源或目的地。計算機存儲介質(zhì)還可以是一個或多個分立的物理組件或媒體(例如,多個CD、盤、或其它存儲設(shè)備),或者包括于其中。
該說明書中所描述的操作能夠被實施為由數(shù)據(jù)處理裝置對一個或多個計算機可讀存儲設(shè)備上所存儲或者從其它源所接收的數(shù)據(jù)所執(zhí)行的操作。
術(shù)語“數(shù)據(jù)處理裝置”包含用于處理數(shù)據(jù)的所有類型的裝置、設(shè)備、和機器,例如包括可編程處理器、計算機、片上系統(tǒng)、或者以上的多個或組合。該裝置可以包括專用邏輯電路,例如FPGA(現(xiàn)場可編程門陣列)或ASIC(特定于應(yīng)用的集成電路)。除了硬件之外,該裝置還可以包括為所討論的計算機程序創(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è)施,諸如web服務(wù)、分布式計算和網(wǎng)格計算基礎(chǔ)設(shè)施。
計算機程序(也被稱作程序、軟件、軟件應(yīng)用、腳本、或代碼)能夠以任意形式的編程語言進行編寫,包括編譯或解釋語言、聲明或過程語言,并且其可以以任意形式被采用,包括作為獨立程序或者作為適于在計算環(huán)境中使用的模塊、組件、子例程、對象、或其它單元。計算機程序可以對應(yīng)于文件系統(tǒng)中的文件,但是并非需要如此。程序可以存儲在保存其它程序或數(shù)據(jù)(例如,標(biāo)記語言文檔中所存儲的一個或多個腳本)的文件的一部分之中,存儲在專用于所討論程序的單個文件中,或者存儲在多個協(xié)同文件(例如,存儲一個或多個模塊、子程序、或代碼部分的文件)中。計算機程序能夠被部署為在一臺計算機上執(zhí)行或者在位于一個地點或跨多個地點分布并且通過通信網(wǎng)絡(luò)進行互連的多臺計算機上執(zhí)行。
該說明書中所描述的處理和邏輯流能夠由一個或多個可編程處理器來執(zhí)行,后者執(zhí)行一個或多個計算機程序以通過對輸入數(shù)據(jù)進行操作并生成輸出而執(zhí)行動作。處理和邏輯流能夠由例如FPGA(現(xiàn)場可編程門陣列)或ASIC(特定于應(yīng)用的集成電路)的專用邏輯電路所執(zhí)行,并且裝置也可以被實施為該裝用邏輯電路。
適于執(zhí)行計算機程序指令的處理器包括通用和專用微處理器二者,以及任意類型的數(shù)字計算機的任意一個或多個處理器。通常,處理器將從只讀存儲器或隨機訪問存儲器或者其二者接收指令和數(shù)據(jù)。計算機的必要元件為用于依據(jù)指令執(zhí)行動作的處理器以及用于存儲指令和數(shù)據(jù)的一個或多個存儲器設(shè)備。通常,計算機還將包括用于存儲數(shù)據(jù)的一個或多個大容量存儲設(shè)備,例如,磁盤、磁性光盤或光盤,或者操作耦合以往來于它們接收或傳送數(shù)據(jù)或者其二者。然而,計算機并非需要具有這樣的設(shè)備。此外,計算機可以嵌入另一設(shè)備之中,僅給出幾個示例,例如移動電話、個人數(shù)字助理(PDA)、移動音頻或視頻播放器、游戲控制臺、全球定位系統(tǒng)(GPS)接收器,或者便攜式存儲設(shè)備(例如,通用串行總線(USB)閃存)。適于存儲計算機程序指令和數(shù)據(jù)的設(shè)備包括所有形式的非易失性存儲器、媒體和存儲器設(shè)備,例如包括例如EPROM、EEPROM和閃存設(shè)備的半導(dǎo)體存儲器設(shè)備;例如內(nèi)部硬盤或可移動盤的磁盤;磁性光盤;以及CD-ROM和DVD-ROM盤。處理器和存儲器可以被補充以專用邏輯電路或者結(jié)合于其中。
為了提供與用戶的交互,本說明書中所描述的主題的實施方式能夠在具有用于向用戶顯示信息的顯示設(shè)備以及用戶能夠通過其向計算機提供輸入的鍵盤和指示設(shè)備的計算機上實施,該顯示設(shè)備例如CRT(陰極射線管)或LCD(液晶顯示器)監(jiān)視器,該指示設(shè)備例如鼠標(biāo)或軌跡球。也能夠使用其它類型的設(shè)備來提供與用戶的交互;例如,提供給用戶的反饋可以為任意形式的感覺反饋,例如視覺反饋、聽覺反饋或觸覺反饋;并且來自用戶的輸入能夠以任意形式被接收,包括聲音、語音或觸覺輸入。此外,計算機能夠通過向用戶所使用的設(shè)備發(fā)送文檔并且從其接收文檔而與用戶進行交互;例如,通過響應(yīng)于從web瀏覽器所接收的請求而向用戶的客戶端設(shè)備上的web瀏覽器發(fā)送網(wǎng)頁。
本說明書中所描述主題的實施例能夠在計算系統(tǒng)中實施,該計算系統(tǒng)包括例如作為數(shù)據(jù)服務(wù)器的后端組件,或者包括例如應(yīng)用服務(wù)器的中間件組件,或者包括例如客戶端計算機的前端組件,或者一個或多個這樣的后端、中間件或前端組件的任意組合,所述客戶端計算機具有用戶能夠通過其與本說明書中所描述主題的實施方式進行交互的圖形用戶界面或web瀏覽器。該系統(tǒng)的組件能夠通過例如通信網(wǎng)絡(luò)的任意形式或介質(zhì)的數(shù)字?jǐn)?shù)據(jù)通信進行互連。通信網(wǎng)絡(luò)的示例包括局域網(wǎng)(“LAN”)和廣域網(wǎng)(“WAN”)、互聯(lián)的網(wǎng)絡(luò)(例如,互聯(lián)網(wǎng))以及對等網(wǎng)絡(luò)(例如,自組織對等網(wǎng)絡(luò))。
計算系統(tǒng)可以包括用戶和服務(wù)器。用戶和服務(wù)器通常彼此遠離并且通常通過通信網(wǎng)絡(luò)進行交互。用戶和服務(wù)器的關(guān)系源自于在相應(yīng)計算機上運行并且互相具有用戶-服務(wù)器關(guān)系的計算機程序。在一些實施例中,服務(wù)器向用戶設(shè)備傳送數(shù)據(jù)(例如,HTML頁面)(例如,出于向與用戶設(shè)備進行交互的用戶顯示數(shù)據(jù)并且從其接收用戶輸入的目的)。能夠在服務(wù)器處從用戶設(shè)備接收在用戶設(shè)備所生成的數(shù)據(jù)(例如,用戶交互的結(jié)果)。
雖然該說明書包含許多特定實施細節(jié),但是這些并不應(yīng)當(dāng)被理解為對任何發(fā)明以及所要求保護的內(nèi)容的范圍進行限制,而是作為特定于特定發(fā)明的特定實施例的特征的描述。該說明書中以單獨實施例為背景進行描述的某些特征也能夠在單個實施例中以組合形式來實施。相反,以單個實施例為背景進行描述的各種特征也能夠單獨或以任意適當(dāng)子組合在多個實施例中實施。此外,雖然特征在上文中可以被描述為以某種組合進行工作并且甚至最初要求如此,但是來自所要求組合的一個或多個特征在一些情況下可以脫離該組合,并且所要求的組合可以針對子組合或子組合的變化。
類似地,雖然操作在圖中以特定順序進行描繪,但是這并不應(yīng)當(dāng)被理解為要求這樣的操作以所示出的特定順序或以連續(xù)順序來執(zhí)行,或者所有所圖示的操作都要被執(zhí)行以實現(xiàn)所期望的結(jié)果。在某些情況下,多任務(wù)和并行處理可以是有利的。此外,以上所描述實施例中的各種系統(tǒng)組件的分立并不應(yīng)當(dāng)被理解為在所有實施例中都要求這樣的分立,并且應(yīng)當(dāng)理解的是,所描述的程序組件和系統(tǒng)通常在單個軟件產(chǎn)品中集成在一起或者被封裝到多個軟件產(chǎn)品中。
因此,已經(jīng)對該主題的特定實施例進行了描述。其它實施例處于以下權(quán)利要求的范圍之內(nèi)。在一些情況下,權(quán)利要求中所引用的動作可以以不同順序來執(zhí)行并且仍然實現(xiàn)所期望的結(jié)果。此外,服務(wù)中所描繪的處理并非必然要求所示出的特定順序或連續(xù)順序以實現(xiàn)所期望的結(jié)果。在某些實施方式中,多任務(wù)和并行處理可以是有利的。