自動(dòng)化實(shí)驗(yàn)平臺(tái)的制作方法
【專利摘要】本文檔針對(duì)提供允許用戶構(gòu)建和執(zhí)行各種類型數(shù)據(jù)驅(qū)動(dòng)工作流的可視集成開(kāi)發(fā)環(huán)境(“IDE”)的自動(dòng)化實(shí)驗(yàn)平臺(tái)。自動(dòng)化實(shí)驗(yàn)平臺(tái)包括后端組件,其包括API服務(wù)器、目錄、集群管理組件以及執(zhí)行集群節(jié)點(diǎn)。工作流可視地表示為有向無(wú)環(huán)圖并被以文本方式編碼。工作流被變換成為了執(zhí)行而被分發(fā)到執(zhí)行集群節(jié)點(diǎn)的作業(yè)。
【專利說(shuō)明】自動(dòng)化實(shí)驗(yàn)平臺(tái)
[0001]對(duì)相關(guān)申請(qǐng)的交叉引用
[0002]本申請(qǐng)要求于2013年12月17日提交的臨時(shí)申請(qǐng)N0.61/916,888的權(quán)益。
技術(shù)領(lǐng)域
[0003]本文檔涉及計(jì)算機(jī)化的系統(tǒng)并且,更具體而言,涉及提供允許用戶構(gòu)建和執(zhí)行數(shù)據(jù)驅(qū)動(dòng)的工作流的可視集成開(kāi)發(fā)環(huán)境的自動(dòng)化實(shí)驗(yàn)平臺(tái)。
【背景技術(shù)】
[0004]在過(guò)去的60年里,數(shù)據(jù)處理已經(jīng)從很大程度上依靠使用基本操作系統(tǒng)功能和手工編碼的數(shù)據(jù)處理例程的特設(shè)程序演變到龐大的各種不同類型的更高級(jí)自動(dòng)化數(shù)據(jù)處理環(huán)境,包括與數(shù)據(jù)庫(kù)管理系統(tǒng)關(guān)聯(lián)的各種通用數(shù)據(jù)處理應(yīng)用和實(shí)用程序及工具。但是,這些自動(dòng)化數(shù)據(jù)處理系統(tǒng)當(dāng)中許多與顯著的約束關(guān)聯(lián),包括關(guān)于數(shù)據(jù)處理過(guò)程、數(shù)據(jù)模型、數(shù)據(jù)類型的約束,以及其它此類約束。而且,大多數(shù)自動(dòng)化系統(tǒng)仍然涉及大量特定于問(wèn)題的編碼來(lái)指定將數(shù)據(jù)指向與特定接口關(guān)聯(lián)的特定類型功能所需的數(shù)據(jù)處理步驟以及數(shù)據(jù)變換。其結(jié)果是,設(shè)計(jì)和開(kāi)發(fā)數(shù)據(jù)處理系統(tǒng)和工具的那些人以及使用它們的那些人繼續(xù)尋求新的數(shù)據(jù)處理系統(tǒng)和功能。
【發(fā)明內(nèi)容】
[0005]本文檔針對(duì)提供允許用戶構(gòu)建和執(zhí)行各種類型數(shù)據(jù)驅(qū)動(dòng)的工作流的可視集成開(kāi)發(fā)環(huán)境(“IDE”)的自動(dòng)化實(shí)驗(yàn)平臺(tái)。自動(dòng)化實(shí)驗(yàn)平臺(tái)包括后端組件,包括API服務(wù)器、目錄、集群管理組件以及執(zhí)行集群節(jié)點(diǎn)。工作流可視地表示為有向無(wú)環(huán)圖并被以文本方式編碼。工作流被變換成為了執(zhí)行而被分發(fā)到執(zhí)行集群節(jié)點(diǎn)的作業(yè)。
【附圖說(shuō)明】
[0006]圖1示出了由當(dāng)前公開(kāi)的自動(dòng)化實(shí)驗(yàn)平臺(tái)的用戶創(chuàng)建的示例工作流。
[0007]圖2示出了,在圖1所示的實(shí)驗(yàn)運(yùn)行之后,用戶可以如何通過(guò)用新的輸入數(shù)據(jù)集202替換圖1中的輸入數(shù)據(jù)集102來(lái)修改實(shí)驗(yàn)。
[0008]圖3示出了圖2中所示的第二工作流的儀表板視圖。
[0009]圖4提供了用于各種類型計(jì)算機(jī)的一般體系架構(gòu)圖。
[0010]圖5示出了互聯(lián)網(wǎng)連接的分布式計(jì)算機(jī)系統(tǒng)。
[0011]圖6示出了云計(jì)算。
[0012]圖7示出了通用計(jì)算機(jī)系統(tǒng)的一般化的硬件和軟件組件,其中計(jì)算機(jī)系統(tǒng)諸如具有類似于圖1所示的體系架構(gòu)的通用計(jì)算機(jī)系統(tǒng)。
[0013]圖8A-B示出了兩種類型的虛擬機(jī)和虛擬機(jī)執(zhí)行環(huán)境。
[0014]圖9示出了客戶端和服務(wù)器計(jì)算機(jī)之間的電子通信。
[0015]圖10示出了資源在RESTful API中的角色。
[0016]圖1lA-D示出了由在RESTful應(yīng)用中使用的HTTP應(yīng)用層協(xié)議提供的四個(gè)基本動(dòng)詞,或操作。
[0017]圖12示出了當(dāng)前文檔針對(duì)的科學(xué)工作流系統(tǒng)的主要組件。
[0018]圖13A-E示出了相對(duì)簡(jiǎn)單的六節(jié)點(diǎn)實(shí)驗(yàn)DAG的JSON編碼。
[0019]圖14A-D示出了被存儲(chǔ)在目錄服務(wù)(圖12中的1226)中的元數(shù)據(jù)。
[0020]圖15A-1提供了對(duì)應(yīng)于實(shí)驗(yàn)DAG的實(shí)驗(yàn)布局的DAG的例子,其中實(shí)驗(yàn)DAG諸如上面參考圖13C-D所討論的實(shí)驗(yàn)DAG。
[0021]圖16A-1示出了科學(xué)工作流系統(tǒng)內(nèi)的實(shí)驗(yàn)設(shè)計(jì)和執(zhí)行的過(guò)程。
[0022]圖17A-B示出了實(shí)驗(yàn)DAG的樣本可視表示和實(shí)驗(yàn)DAG的對(duì)應(yīng)JSON編碼。
[0023]圖18A-G示出了在提交實(shí)驗(yàn)以供由用戶經(jīng)由前端實(shí)驗(yàn)儀表板應(yīng)用執(zhí)行之后由科學(xué)工作流系統(tǒng)后端的API服務(wù)器組件(圖16A中的1608)執(zhí)行的活動(dòng)。
[0024]圖19提供了用于在科學(xué)工作流系統(tǒng)后端的集群管理器組件上執(zhí)行以便向執(zhí)行集群節(jié)點(diǎn)分發(fā)作業(yè)以供執(zhí)行的例程“集群管理器”的控制流程圖。
[0025]圖20提供了用于例程“pinger”的控制流程圖。
[0026]圖21提供了用于在執(zhí)行集群節(jié)點(diǎn)上啟動(dòng)作業(yè)執(zhí)行的例程“執(zhí)行器”的控制流程圖。
【具體實(shí)施方式】
[0027]本文檔針對(duì)允許用戶進(jìn)行數(shù)據(jù)驅(qū)動(dòng)的實(shí)驗(yàn)的自動(dòng)化實(shí)驗(yàn)平臺(tái)。實(shí)驗(yàn)是復(fù)雜的計(jì)算任務(wù),并且由用戶通過(guò)可視IDE組裝成工作流。一般而言,在這種可視IDE和自動(dòng)化實(shí)驗(yàn)平臺(tái)底層的模型包括三個(gè)基本實(shí)體:(I)輸入數(shù)據(jù)集;(2)生成的數(shù)據(jù)集,包括中間和輸出數(shù)據(jù)集;和(3)具有配置的執(zhí)行模塊。一旦工作流被圖形構(gòu)建,自動(dòng)化實(shí)驗(yàn)平臺(tái)就執(zhí)行該工作流并產(chǎn)生輸出數(shù)據(jù)集。配置好的執(zhí)行模塊被實(shí)驗(yàn)的運(yùn)行時(shí)實(shí)例轉(zhuǎn)換成作業(yè)。這些作業(yè)被自動(dòng)化實(shí)驗(yàn)平臺(tái)執(zhí)行和監(jiān)視,并且可以在其中結(jié)合自動(dòng)化實(shí)驗(yàn)平臺(tái)的相同計(jì)算機(jī)系統(tǒng)上本地執(zhí)行,或者在遠(yuǎn)程計(jì)算機(jī)系統(tǒng)上遠(yuǎn)程執(zhí)行。換句話說(shuō),工作流的執(zhí)行可以映射到分布式計(jì)算組件。在某些實(shí)現(xiàn)中,自動(dòng)化實(shí)驗(yàn)平臺(tái)本身跨多個(gè)計(jì)算機(jī)系統(tǒng)分布。自動(dòng)化實(shí)驗(yàn)平臺(tái)可以并行地運(yùn)行多個(gè)作業(yè)和多個(gè)工作流,并且包括當(dāng)所需的數(shù)據(jù)集已經(jīng)由自動(dòng)化實(shí)驗(yàn)平臺(tái)生成并編目的時(shí)候用于避免數(shù)據(jù)集的冗余生成和作業(yè)的冗余執(zhí)行的復(fù)雜邏輯。
[0028]執(zhí)行模塊可以用非常多各種各樣不同的語(yǔ)言當(dāng)中任何一種編寫(xiě),所述語(yǔ)言包括Python、Java、hive、MySQL、scala、spark,及其它編程語(yǔ)言。自動(dòng)化實(shí)驗(yàn)平臺(tái)自動(dòng)處理用于將數(shù)據(jù)輸入到各種類型執(zhí)行模塊所需的數(shù)據(jù)變換。自動(dòng)化執(zhí)行平臺(tái)還附加地包括版本化組件,其識(shí)別和編目被實(shí)現(xiàn)為工作流的實(shí)驗(yàn)的不同版本、執(zhí)行模塊和數(shù)據(jù)集,使得實(shí)驗(yàn)的整個(gè)歷史可以被用戶訪問(wèn)以供重新使用和重新執(zhí)行,以及用于基于先前的實(shí)驗(yàn)、執(zhí)行模塊和數(shù)據(jù)集建立新的實(shí)驗(yàn)。
[0029]自動(dòng)化實(shí)驗(yàn)平臺(tái)提供允許用戶從本地機(jī)器上傳和到本地機(jī)器下載執(zhí)行模塊以及從本地機(jī)器上傳和到本地機(jī)器下載輸入、中間和輸出數(shù)據(jù)集的儀表板能力。此外,用戶可以通過(guò)名稱、通過(guò)用于與執(zhí)行模塊和用戶數(shù)據(jù)集關(guān)聯(lián)的一個(gè)或多個(gè)屬性的值以及通過(guò)描述來(lái)搜索執(zhí)行模塊和數(shù)據(jù)集?,F(xiàn)有的工作流可被克隆并且現(xiàn)有的工作流的部分可被提取和修改,以便創(chuàng)造用于新實(shí)驗(yàn)的新工作流。由自動(dòng)化實(shí)驗(yàn)平臺(tái)提供的可視工作流創(chuàng)建設(shè)施通過(guò)允許用戶快速設(shè)計(jì)和執(zhí)行復(fù)雜的數(shù)據(jù)驅(qū)動(dòng)處理任務(wù)而大大提高了用戶的工作效率。此外,因?yàn)樽詣?dòng)化實(shí)驗(yàn)平臺(tái)可以識(shí)別執(zhí)行的潛在重復(fù)和重復(fù)的數(shù)據(jù),所以相對(duì)于手工編碼或不太智能的自動(dòng)數(shù)據(jù)處理系統(tǒng)獲得了顯著的計(jì)算效率。此外,自動(dòng)化實(shí)驗(yàn)平臺(tái)允許用戶作為團(tuán)隊(duì)進(jìn)行合作,以發(fā)布、共享和協(xié)作創(chuàng)建實(shí)驗(yàn)、工作流、數(shù)據(jù)集和執(zhí)行模塊。
[0030]圖1示出了由當(dāng)前公開(kāi)的自動(dòng)化實(shí)驗(yàn)平臺(tái)的用戶創(chuàng)建的示例工作流。圖1和下面討論的圖2-3將工作流示為將通過(guò)由自動(dòng)化實(shí)驗(yàn)平臺(tái)提供的可視IDE的圖形用戶界面顯示給用戶的工作流。在圖1中,工作流100包括兩個(gè)輸入數(shù)據(jù)集102和104。第一輸入數(shù)據(jù)集102被輸入到第一執(zhí)行模塊106,在圖不的例子中,第一執(zhí)行模塊106產(chǎn)生由Monte-Car1模擬的結(jié)果集組成的中間數(shù)據(jù)集,由圓圈108表示。然后,中間數(shù)據(jù)集108被輸入到產(chǎn)生輸出數(shù)據(jù)集112的第二執(zhí)行模塊110。第二數(shù)據(jù)集104由生成第二中間數(shù)據(jù)集116的第三執(zhí)行模塊114處理,在這種情況下,第二中間數(shù)據(jù)集116是繼續(xù)非常大量的Monte-Carlo模擬的結(jié)果的大文件。第二中間數(shù)據(jù)集116與輸入數(shù)據(jù)集102—起被輸入到執(zhí)行模塊106。
[0031]如圖2中所示,在圖1中所示的實(shí)驗(yàn)運(yùn)行之后,用戶可以通過(guò)用新的輸入數(shù)據(jù)集202替換圖1中的輸入數(shù)據(jù)集102來(lái)修改實(shí)驗(yàn)。然后,用戶可以執(zhí)行新的工作流,以產(chǎn)生新的輸出數(shù)據(jù)集204。在這種情況下,因?yàn)閷?duì)第二輸入數(shù)據(jù)集104和第三執(zhí)行模塊114沒(méi)有改變,所以第二工作流的執(zhí)行不涉及第二輸入數(shù)據(jù)集104到第三執(zhí)行模塊114的重新輸入以及第三執(zhí)行模塊114的執(zhí)行。相反,之前通過(guò)第三執(zhí)行模塊的執(zhí)行所產(chǎn)生的中間數(shù)據(jù)集116可以在圖2所示的第二工作流的運(yùn)行期間從先前產(chǎn)生的中間數(shù)據(jù)集的目錄中檢索并被輸入到第二執(zhí)行模塊106。應(yīng)當(dāng)指出,三個(gè)執(zhí)行模塊106、110和114可以已經(jīng)用不同的語(yǔ)言進(jìn)行編程并且可以在不同的物理計(jì)算機(jī)系統(tǒng)上運(yùn)行。還應(yīng)當(dāng)指出,自動(dòng)化實(shí)驗(yàn)平臺(tái)負(fù)責(zé)確定輸入數(shù)據(jù)集102和104的類型并且確保,在必要時(shí),這些數(shù)據(jù)集被適當(dāng)?shù)匦薷?,以便具有它們?cè)诠ぷ髁鞯膱?zhí)行期間要輸入到其中的執(zhí)行模塊106和114所需的適當(dāng)格式和數(shù)據(jù)類型。
[0032]圖3示出了圖2中所示的第二工作流的儀表板視圖。如在圖3中可以看到的,工作流在工作流顯示面板302中被可視地顯示給用戶。此外,儀表板提供具有對(duì)應(yīng)輸入和操縱特征304-308的各種工具以及顯示與由用戶利用輸入和操縱特征執(zhí)行的各種任務(wù)和操作相關(guān)的信息的附加顯示窗口 310和312。
[0033]在以下兩個(gè)小節(jié)中,給出了在本文檔針對(duì)的自動(dòng)化實(shí)驗(yàn)平臺(tái)的所述實(shí)現(xiàn)中使用的硬件平臺(tái)和RESTful通信的概述。最后一個(gè)小節(jié)描述本文檔針對(duì)的自動(dòng)化實(shí)驗(yàn)平臺(tái)的實(shí)現(xiàn),被稱為“科學(xué)工作流系統(tǒng)”。
[0034]計(jì)算機(jī)硬件、分布式計(jì)算系統(tǒng)和虛擬化
[0035]術(shù)語(yǔ)“抽象”不是要以任何方式意在表示或暗示抽象的構(gòu)思或概念。計(jì)算抽象是最終利用物理計(jì)算機(jī)硬件、數(shù)據(jù)存儲(chǔ)設(shè)備和通信系統(tǒng)實(shí)現(xiàn)的有形的物理接口。相反,在目前的討論中,術(shù)語(yǔ)“抽象”是指封裝在一個(gè)或多個(gè)具體的、有形的、物理實(shí)現(xiàn)的計(jì)算機(jī)系統(tǒng)中的功能的邏輯層面,具有既定的接口,通過(guò)這些接口,電子編碼的數(shù)據(jù)被交換、過(guò)程執(zhí)行被啟動(dòng),并且電子服務(wù)被提供。接口可以包括在物理顯示設(shè)備上顯示的圖形和文本數(shù)據(jù)以及控制物理計(jì)算機(jī)處理器執(zhí)行各種任務(wù)和操作并通過(guò)以電子方式實(shí)現(xiàn)的應(yīng)用編程接口( “API”)和其它以電子方式實(shí)現(xiàn)的接口調(diào)用的計(jì)算機(jī)程序和例程。在那些不熟悉現(xiàn)代技術(shù)和科學(xué)的人當(dāng)中,當(dāng)被用來(lái)描述現(xiàn)代計(jì)算的某些方面時(shí),存在誤解術(shù)語(yǔ)“抽象的”和“抽象”的趨勢(shì)。例如,常常遇到以下斷言:由于計(jì)算系統(tǒng)就抽象、功能層和接口進(jìn)行描述,計(jì)算系統(tǒng)與物理機(jī)器或設(shè)備稍有不同。這種斷言是毫無(wú)根據(jù)的。只需要將計(jì)算機(jī)系統(tǒng)或計(jì)算機(jī)系統(tǒng)組與它們各自的電源斷開(kāi),以體會(huì)復(fù)雜計(jì)算機(jī)技術(shù)的物理、機(jī)器本質(zhì)。還會(huì)頻繁地遇到將計(jì)算技術(shù)表征為“純軟件”并且因此不是機(jī)器或設(shè)備的陳述。軟件本質(zhì)上是編碼符號(hào)的序列,諸如計(jì)算機(jī)程序的打印輸出或順序地存儲(chǔ)在光盤(pán)上或機(jī)電大容量存儲(chǔ)設(shè)備內(nèi)的文件中的數(shù)字編碼的計(jì)算機(jī)指令。軟件獨(dú)自什么也做不了。只有當(dāng)編碼的計(jì)算機(jī)指令被加載到計(jì)算機(jī)系統(tǒng)內(nèi)的電子存儲(chǔ)器中并在物理處理器上執(zhí)行時(shí),才提供所謂“軟件實(shí)現(xiàn)的”功能。數(shù)字編碼的計(jì)算機(jī)指令是處理器控制的機(jī)器和設(shè)備的基本和物理的控制組件,不比內(nèi)燃機(jī)中凸輪軸控制系統(tǒng)更不基本和物理。多云聚合、云計(jì)算服務(wù)、虛擬機(jī)容器和虛擬機(jī)、通信接口以及下面討論的許多其它議題是物理、光-電-機(jī)械計(jì)算機(jī)系統(tǒng)的有形的物理組件。
[0036]圖4提供了用于各種類型的計(jì)算機(jī)的一般體系架構(gòu)圖。例如,云計(jì)算設(shè)施內(nèi)的計(jì)算機(jī)可以由圖4中所示的一般體系架構(gòu)圖來(lái)描述。計(jì)算機(jī)系統(tǒng)包含一個(gè)或多個(gè)中央處理單元(“CPU”)402-405、通過(guò)CPU/存儲(chǔ)器子系統(tǒng)總線410或多個(gè)總線與CPU互連的一個(gè)或多個(gè)電子存儲(chǔ)器408、將CPU/存儲(chǔ)器子系統(tǒng)總線410與附加總線414和416互連的第一橋412,或者其它類型的高速互連介質(zhì),包括多個(gè)高速串行互連。這些總線或串行互連又將CHJ和存儲(chǔ)器與專用處理器,諸如圖形處理器418,并與一個(gè)或多個(gè)附加橋420互連,其中附加橋與高速串行鏈路或與多個(gè)控制器422-427,諸如控制器427,互連,其中控制器提供對(duì)各種不同類型的大容量存儲(chǔ)設(shè)備428、電子顯示器、輸入設(shè)備以及其它此類組件、子組件和計(jì)算資源的訪問(wèn)。應(yīng)當(dāng)指出,計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)設(shè)備包括光和電磁磁盤(pán)、電子存儲(chǔ)器和其它物理數(shù)據(jù)存儲(chǔ)設(shè)備。那些熟悉現(xiàn)代科學(xué)和技術(shù)的人可以認(rèn)識(shí)到,電磁輻射和傳播信號(hào)不存儲(chǔ)用于隨后檢索的數(shù)據(jù),并且可以片刻“存儲(chǔ)”每英里僅一個(gè)字節(jié)或更少的信息,這遠(yuǎn)少于即使編碼最簡(jiǎn)單的例程所需要的信息。
[0037]當(dāng)然,存在在包括不同類型的分層高速緩沖存儲(chǔ)器在內(nèi)的不同存儲(chǔ)器的數(shù)量、處理器的數(shù)量和處理器的與其它系統(tǒng)組件的連接性、內(nèi)部通信總線和串行鏈路的數(shù)量方面以及以許多其它方式彼此不同的許多不同類型的計(jì)算機(jī)系統(tǒng)體系架構(gòu)。但是,計(jì)算機(jī)系統(tǒng)一般通過(guò)從存儲(chǔ)器獲取指令并在一個(gè)或多個(gè)處理器中執(zhí)行指令來(lái)執(zhí)行所存儲(chǔ)的程序。計(jì)算機(jī)系統(tǒng)包括通用計(jì)算機(jī)系統(tǒng),諸如個(gè)人計(jì)算機(jī)(“PC”),各種類型的服務(wù)器和工作站,以及更高端的大型計(jì)算機(jī),但是也可以包括許多各種類型的特殊用途計(jì)算設(shè)備,包括數(shù)據(jù)存儲(chǔ)系統(tǒng)、通信路由器、網(wǎng)絡(luò)節(jié)點(diǎn)、平板計(jì)算機(jī),以及移動(dòng)電話。
[0038]圖5示出了互聯(lián)網(wǎng)連接的分布式計(jì)算機(jī)系統(tǒng)。隨著通信和聯(lián)網(wǎng)技術(shù)的能力和可訪問(wèn)性的演進(jìn),并且隨著各種類型的計(jì)算機(jī)系統(tǒng)的計(jì)算帶寬、數(shù)據(jù)存儲(chǔ)能力以及其它能力和容量穩(wěn)步快速地增加,許多現(xiàn)代計(jì)算現(xiàn)在一般涉及通過(guò)本地網(wǎng)絡(luò)、廣域網(wǎng)、無(wú)線通信和互聯(lián)網(wǎng)互連的大型分布式系統(tǒng)和計(jì)算機(jī)。圖5示出了典型的分布式系統(tǒng),其中大量的PC 502-505、具有大數(shù)據(jù)存儲(chǔ)系統(tǒng)512的高端分布式大型機(jī)系統(tǒng)510以及具有大量機(jī)架式服務(wù)器或刀片服務(wù)器的大型計(jì)算機(jī)中心514都通過(guò)一起構(gòu)成互聯(lián)網(wǎng)516的各種通信和聯(lián)網(wǎng)系統(tǒng)互連。這種分布式計(jì)算系統(tǒng)提供功能的多樣化陣列。例如,坐在家里辦公室的PC用戶可以訪問(wèn)由世界各地成數(shù)十萬(wàn)不同的Web服務(wù)器提供的數(shù)億不同的網(wǎng)站,并且可以從用于運(yùn)行復(fù)雜的計(jì)算任務(wù)的遠(yuǎn)程計(jì)算機(jī)設(shè)施訪問(wèn)高計(jì)算帶寬計(jì)算服務(wù)。
[0039]圖6示出了云計(jì)算。在最近開(kāi)發(fā)出的云計(jì)算范例中,計(jì)算周期和數(shù)據(jù)存儲(chǔ)設(shè)施由云計(jì)算提供商提供給組織和個(gè)人。此外,更大的組織可以選擇建立私有云計(jì)算設(shè)施來(lái)補(bǔ)充或代替對(duì)由公共云計(jì)算服務(wù)提供商提供的計(jì)算服務(wù)的訂閱。在圖6中,組織的系統(tǒng)管理員,利用PC602,通過(guò)本地網(wǎng)絡(luò)606和私有云接口 608訪問(wèn)組織的私有云604,并且還,通過(guò)互聯(lián)網(wǎng)610,通過(guò)公共云服務(wù)接口 614訪問(wèn)公共云612。管理員可以在私有云604或公共云612任一情況下配置虛擬計(jì)算機(jī)系統(tǒng)以及甚至整個(gè)虛擬數(shù)據(jù)中心并且在虛擬計(jì)算機(jī)系統(tǒng)和虛擬數(shù)據(jù)中心上啟動(dòng)應(yīng)用程序的執(zhí)行,以便執(zhí)行許多不同類型的計(jì)算任務(wù)當(dāng)中任何一種。作為一個(gè)例子,小組織可以在公共云中配置和運(yùn)行執(zhí)行Web服務(wù)器以便通過(guò)公共云向組織的遠(yuǎn)程客戶,諸如在遠(yuǎn)程用戶系統(tǒng)616上觀看該組織的電子商務(wù)網(wǎng)頁(yè)的用戶,提供電子商務(wù)接口的虛擬數(shù)據(jù)中心。
[0040]云計(jì)算設(shè)施意在提供計(jì)算帶寬和數(shù)據(jù)存儲(chǔ)服務(wù),非常像公用事業(yè)公司為消費(fèi)者提供電力和水。云計(jì)算為沒(méi)有資源去購(gòu)買(mǎi)、管理和維護(hù)內(nèi)部數(shù)據(jù)中心的小組織提供巨大的優(yōu)勢(shì)。這種組織可以動(dòng)態(tài)地從它們?cè)诠苍浦械奶摂M數(shù)據(jù)中心添加和刪除虛擬計(jì)算機(jī)系統(tǒng),以便跟蹤計(jì)算帶寬和數(shù)據(jù)存儲(chǔ)需求,而不是購(gòu)買(mǎi)物理數(shù)據(jù)中心內(nèi)的足夠多計(jì)算機(jī)系統(tǒng)來(lái)處理峰值計(jì)算帶寬和數(shù)據(jù)存儲(chǔ)需求。而且,小組織可以完全避免維護(hù)和管理物理計(jì)算機(jī)系統(tǒng)的開(kāi)銷,包括招聘并定期再培訓(xùn)信息技術(shù)專家并且不斷地為操作系統(tǒng)和數(shù)據(jù)庫(kù)管理系統(tǒng)升級(jí)付費(fèi)。此外,云計(jì)算接口允許虛擬計(jì)算設(shè)施的容易和簡(jiǎn)單的配置、可配置的應(yīng)用和操作系統(tǒng)的類型的靈活性,以及對(duì)甚至由單個(gè)組織使用的私有云計(jì)算設(shè)施的所有者和管理員有用的其它功能。
[0041]圖7示出了通用計(jì)算機(jī)系統(tǒng)的一般化硬件和軟件組件,其中計(jì)算機(jī)系統(tǒng)諸如具有類似于圖1所示的體系架構(gòu)的通用計(jì)算機(jī)系統(tǒng)。計(jì)算機(jī)系統(tǒng)700常常被認(rèn)為包括三個(gè)基礎(chǔ)層:(I)硬件層或級(jí)702; (2)操作系統(tǒng)層或級(jí)704;及(3)應(yīng)用程序?qū)踊蚣?jí)706。硬件層702包括一個(gè)或多個(gè)處理器708、系統(tǒng)存儲(chǔ)器710、各種不同類型的輸入-輸出(“I/O”)設(shè)備710和712,以及大容量存儲(chǔ)設(shè)備714。當(dāng)然,硬件級(jí)還包括許多其它組件,包括電源、內(nèi)部通信鏈路和總線、專用集成電路、許多不同類型的處理器控制的或微處理器控制的外圍設(shè)備和控制器,以及許多其它組件。操作系統(tǒng)704通過(guò)低級(jí)操作系統(tǒng)和硬件接口 716接口到硬件級(jí)702,其中該接口 716—般包括一組非特權(quán)計(jì)算機(jī)指令718、一組特權(quán)計(jì)算機(jī)指令720、一組非特權(quán)寄存器和存儲(chǔ)器地址722,以及一組特權(quán)寄存器和存儲(chǔ)器地址724。一般而言,操作系統(tǒng)暴露非特權(quán)指令、非特權(quán)寄存器和非特權(quán)存儲(chǔ)器地址726以及系統(tǒng)調(diào)用接口 728,作為到應(yīng)用程序732-736的操作系統(tǒng)接口 730,其中應(yīng)用程序732-736在由操作系統(tǒng)提供給應(yīng)用程序的執(zhí)行環(huán)境中執(zhí)行。操作系統(tǒng)獨(dú)自訪問(wèn)特權(quán)指令、特權(quán)寄存器和特權(quán)存儲(chǔ)器地址。通過(guò)保留對(duì)特權(quán)指令、特權(quán)寄存器和特權(quán)存儲(chǔ)器地址的訪問(wèn),操作系統(tǒng)可以確保應(yīng)用程序和其它更高級(jí)的計(jì)算實(shí)體不能干擾彼此的執(zhí)行并且不能以有害地影響系統(tǒng)運(yùn)行的方式改變計(jì)算機(jī)系統(tǒng)的整體狀態(tài)。操作系統(tǒng)包括許多內(nèi)部組件和模塊,包括調(diào)度器742、存儲(chǔ)器管理744、文件系統(tǒng)746、設(shè)備驅(qū)動(dòng)器748,以及許多其它組件和模塊。在一定程度上,現(xiàn)代操作系統(tǒng)提供在硬件級(jí)之上的眾多抽象級(jí),包括虛擬存儲(chǔ)器,其向每個(gè)應(yīng)用程序和其它計(jì)算實(shí)體提供由操作系統(tǒng)映射到各種電子存儲(chǔ)器和大容量存儲(chǔ)設(shè)備的單獨(dú)的、大的線性存儲(chǔ)器地址空間。調(diào)度器編排各種不同應(yīng)用程序和更高級(jí)的計(jì)算實(shí)體的交叉執(zhí)行,向每個(gè)應(yīng)用程序提供完全致力于該應(yīng)用程序的虛擬的、獨(dú)立的系統(tǒng)。從應(yīng)用程序的觀點(diǎn)來(lái)看,應(yīng)用程序連續(xù)執(zhí)行,而無(wú)需考慮與其它應(yīng)用程序和更高級(jí)的計(jì)算實(shí)體共享處理器資源和其它系統(tǒng)資源。設(shè)備驅(qū)動(dòng)器抽象硬件組件操作的細(xì)節(jié),從而允許應(yīng)用程序采用系統(tǒng)調(diào)用接口來(lái)向通信網(wǎng)絡(luò)、大容量存儲(chǔ)設(shè)備以及其它I/O設(shè)備和子系統(tǒng)發(fā)送和從其接收數(shù)據(jù)。文件系統(tǒng)736促進(jìn)大容量存儲(chǔ)設(shè)備和存儲(chǔ)器資源作為高級(jí)、易于訪問(wèn)的文件系統(tǒng)接口的抽象。因此,操作系統(tǒng)的發(fā)展和演進(jìn)導(dǎo)致一類用于應(yīng)用程序和其它更高級(jí)的計(jì)算實(shí)體的多方位虛擬執(zhí)行環(huán)境的產(chǎn)生。
[0042]雖然由操作系統(tǒng)提供的執(zhí)行環(huán)境已被證明是計(jì)算機(jī)系統(tǒng)內(nèi)極其成功的抽象級(jí),但操作系統(tǒng)提供的抽象級(jí)仍然與應(yīng)用程序和其它更高級(jí)的計(jì)算實(shí)體的開(kāi)發(fā)者和用戶的困難和挑戰(zhàn)關(guān)聯(lián)。一個(gè)困難來(lái)自存在許多在各種不同類型的計(jì)算機(jī)硬件中運(yùn)行的不同操作系統(tǒng)的事實(shí)。在許多情況下,流行的應(yīng)用程序和計(jì)算系統(tǒng)被開(kāi)發(fā)為僅在可用操作系統(tǒng)的子集上運(yùn)行,并且因此可以僅在操作系統(tǒng)被設(shè)計(jì)為在其上運(yùn)行的各種不同類型的計(jì)算機(jī)系統(tǒng)的子集內(nèi)執(zhí)行。通常,即使當(dāng)應(yīng)用程序或其它計(jì)算系統(tǒng)被移植到附加的操作系統(tǒng)時(shí),該應(yīng)用程序或其它計(jì)算系統(tǒng)也仍然可以在該應(yīng)用程序或其它計(jì)算系統(tǒng)最初針對(duì)的操作系統(tǒng)上更高效地運(yùn)行。另一個(gè)困難來(lái)自計(jì)算機(jī)系統(tǒng)的日益分散的本質(zhì)。雖然分布式操作系統(tǒng)是相當(dāng)多研究和開(kāi)發(fā)工作的主題,但是許多流行的操作系統(tǒng)主要被設(shè)計(jì)為在單個(gè)計(jì)算機(jī)系統(tǒng)上執(zhí)行。在許多情況下,難以為了高可用性、容錯(cuò)和負(fù)載平衡目的而實(shí)時(shí)地在分布式計(jì)算機(jī)系統(tǒng)的不同計(jì)算機(jī)系統(tǒng)之間移動(dòng)應(yīng)用程序。在包括運(yùn)行不同類型操作系統(tǒng)的不同類型硬件和設(shè)備的異構(gòu)分布式計(jì)算機(jī)系統(tǒng)中,問(wèn)題甚至更大。操作系統(tǒng)繼續(xù)演進(jìn),作為其結(jié)果,某些較舊的應(yīng)用程序和其它計(jì)算實(shí)體可能與它們針對(duì)的操作系統(tǒng)的較新版本不兼容,從而造成在大型分布式系統(tǒng)中特別難以管理的兼容性問(wèn)題。
[0043]出于所有這些原因,更高的抽象級(jí),稱為“虛擬機(jī)”,已被開(kāi)發(fā)和演進(jìn),以進(jìn)一步抽象計(jì)算機(jī)硬件,以便解決與傳統(tǒng)計(jì)算系統(tǒng)關(guān)聯(lián)的許多困難和挑戰(zhàn),包括以上討論的兼容性問(wèn)題。圖8A-B示出了兩種類型的虛擬機(jī)和虛擬機(jī)執(zhí)行環(huán)境。圖8A-B使用如圖7中所使用的相同圖示約定。圖8A示出了第一種類型的虛擬化。圖8A中的計(jì)算機(jī)系統(tǒng)800包括與圖7所示的硬件層702相同的硬件層802。但是,不是像圖7中那樣在硬件層之上直接提供操作系統(tǒng)層,圖8A中所示的虛擬化計(jì)算環(huán)境特征在于虛擬化層804,該虛擬化層804通過(guò)虛擬化層/硬件層接口 806,其相當(dāng)于圖7中的接口 716,接口到硬件。虛擬化層向多個(gè)虛擬機(jī),諸如虛擬機(jī)810,提供像硬件的接口 808,在虛擬機(jī)層812中的虛擬化層之上執(zhí)行。每個(gè)虛擬機(jī)包括與操作系統(tǒng)一起打包的一個(gè)或多個(gè)應(yīng)用程序或其它更高級(jí)的計(jì)算實(shí)體,稱為“客人操作系統(tǒng)”,諸如在虛擬機(jī)810中一起打包的應(yīng)用814和客人操作系統(tǒng)816。因此,每個(gè)虛擬機(jī)等效于圖7中所示的通用計(jì)算機(jī)系統(tǒng)中的操作系統(tǒng)層704和應(yīng)用程序?qū)?06。虛擬機(jī)中的每個(gè)客人操作系統(tǒng)接口到虛擬化層接口 808,而不是接口到實(shí)際的硬件接口 806。虛擬化層將硬件資源分區(qū)到虛擬機(jī)中的每個(gè)客人操作系統(tǒng)與其接口的抽象虛擬硬件層。虛擬機(jī)中的客人操作系統(tǒng)一般意識(shí)不到虛擬化層并且就好像它們?cè)谥苯釉L問(wèn)真正的硬件接口那樣操作。虛擬化層確保當(dāng)前在虛擬環(huán)境中執(zhí)行的每個(gè)虛擬機(jī)接收底層硬件資源的公平分配并且所有虛擬機(jī)都接收繼續(xù)執(zhí)行的足夠資源。虛擬化層接口 808可以對(duì)不同的客人操作系統(tǒng)有所不同。例如,虛擬化層一般能夠?qū)Ω鞣N不同類型的計(jì)算機(jī)硬件提供虛擬硬件接口。作為一個(gè)例子,這允許包括為特定計(jì)算機(jī)體系架構(gòu)設(shè)計(jì)的客人操作系統(tǒng)的虛擬機(jī)在不同體系架構(gòu)的硬件上運(yùn)行。虛擬機(jī)的數(shù)量不必等于物理處理器的數(shù)量或者甚至是處理器數(shù)量的倍數(shù)。
[0044]虛擬化層包括虛擬機(jī)監(jiān)視器模塊818( “VMM”),該模塊虛擬化硬件層中的物理處理器,以創(chuàng)建每個(gè)虛擬機(jī)在其上執(zhí)行的虛擬處理器。對(duì)于執(zhí)行效率,虛擬化層嘗試允許虛擬機(jī)直接執(zhí)行非特權(quán)指令并直接訪問(wèn)非特權(quán)寄存器和存儲(chǔ)器。但是,當(dāng)虛擬機(jī)內(nèi)的客人操作系統(tǒng)通過(guò)虛擬化層接口 808訪問(wèn)虛擬特權(quán)指令、虛擬特權(quán)寄存器和虛擬特權(quán)存儲(chǔ)器時(shí),該訪問(wèn)導(dǎo)致虛擬化層代碼的執(zhí)行,以模擬或仿效特權(quán)資源。虛擬化層附加地包括代表執(zhí)行虛擬機(jī)(“VM內(nèi)核”)管理存儲(chǔ)器、通信和數(shù)據(jù)存儲(chǔ)機(jī)器資源的內(nèi)核模塊820 ο例如,VM內(nèi)核在每個(gè)虛擬機(jī)上維護(hù)影子頁(yè)表,使得硬件級(jí)虛擬存儲(chǔ)器設(shè)施可被用來(lái)處理存儲(chǔ)器訪問(wèn)。VM內(nèi)核附加地包括實(shí)現(xiàn)虛擬通信和數(shù)據(jù)存儲(chǔ)設(shè)備的例程,以及直接控制底層硬件通信的操作的設(shè)備驅(qū)動(dòng)器和數(shù)據(jù)存儲(chǔ)設(shè)備。類似地,VM內(nèi)核虛擬化各種其它類型的I/O設(shè)備,包括鍵盤(pán)、光盤(pán)驅(qū)動(dòng)器,以及其它此類設(shè)備。虛擬化層基本上調(diào)度虛擬機(jī)的執(zhí)行,非常像操作系統(tǒng)調(diào)度應(yīng)用程序的執(zhí)行,使得每個(gè)虛擬機(jī)在完整和功能齊全的虛擬硬件層中執(zhí)行。
[0045]圖SB示出了第二種類型的虛擬化。在圖SB中,計(jì)算機(jī)系統(tǒng)840包括與圖7中所示的硬件層702相同的硬件層842和軟件層844。若干應(yīng)用程序846和848被示為在由操作系統(tǒng)提供的執(zhí)行環(huán)境中運(yùn)行。此外,虛擬化層850也在計(jì)算機(jī)840中提供,但是,不像參考圖8A討論的虛擬化層804,虛擬化層850層疊在操作系統(tǒng)844之上,被稱為“主機(jī)OS”,并且使用操作系統(tǒng)接口來(lái)訪問(wèn)操作系統(tǒng)提供的功能以及硬件。虛擬化層850主要包括VMM和像硬件的接口852,類似于圖8A中像硬件的接口 808。等同于圖7中的接口 716的虛擬化層/硬件層接口 852為多個(gè)虛擬機(jī)856-858提供執(zhí)行環(huán)境,每個(gè)虛擬機(jī)包括與客人操作系統(tǒng)一起打包的一個(gè)或多個(gè)應(yīng)用程序或其它更高級(jí)的計(jì)算實(shí)體。
[0046]在圖8A-B中,為了說(shuō)明的清晰,層被略微簡(jiǎn)化。例如,虛擬化層850的部分可以駐留在主機(jī)操作系統(tǒng)內(nèi)核之內(nèi),諸如結(jié)合到主機(jī)操作系統(tǒng)中以促進(jìn)由虛擬化層進(jìn)行硬件訪問(wèn)的專門(mén)的驅(qū)動(dòng)器。
[0047]應(yīng)當(dāng)指出,虛擬硬件層、虛擬化層和客人操作系統(tǒng)全都是由存儲(chǔ)在物理數(shù)據(jù)存儲(chǔ)設(shè)備,包括電子存儲(chǔ)器、大容量存儲(chǔ)設(shè)備、光盤(pán)、磁盤(pán)和其它此類設(shè)備,當(dāng)中的計(jì)算機(jī)指令實(shí)現(xiàn)的物理實(shí)體。術(shù)語(yǔ)“虛擬”不以任何方式暗示虛擬硬件層、虛擬化層和客人操作系統(tǒng)是抽象的或無(wú)形的。虛擬硬件層、虛擬化層和客人操作系統(tǒng)在物理計(jì)算機(jī)系統(tǒng)的物理處理器上執(zhí)行并且控制物理計(jì)算機(jī)系統(tǒng)的操作,包括改變物理設(shè)備的物理狀態(tài)的操作,其中物理設(shè)備包括電子存儲(chǔ)器和大容量存儲(chǔ)設(shè)備。它們就像計(jì)算機(jī)系統(tǒng)的任何其它組件一樣是物理的和有形的,諸如電源、控制器、處理器、總線和數(shù)據(jù)存儲(chǔ)設(shè)備。
[0048]RESTful API
[0049]計(jì)算機(jī)系統(tǒng)之間的電子通信一般包括從客戶端計(jì)算機(jī)發(fā)送到服務(wù)器計(jì)算機(jī)和從服務(wù)器計(jì)算機(jī)發(fā)送到客戶計(jì)算機(jī)的信息的分組,被稱為數(shù)據(jù)報(bào)。在許多情況下,計(jì)算機(jī)系統(tǒng)之間的通信通常是從使用應(yīng)用層協(xié)議進(jìn)行信息傳送的相對(duì)高級(jí)的應(yīng)用程序來(lái)查看的。但是,應(yīng)用層協(xié)議在包括傳輸層、互聯(lián)網(wǎng)層和鏈路層的附加層之上實(shí)現(xiàn)。這些層通常在計(jì)算機(jī)系統(tǒng)內(nèi)的不同級(jí)別實(shí)現(xiàn)。每個(gè)層與用于計(jì)算機(jī)系統(tǒng)的對(duì)應(yīng)層之間的數(shù)據(jù)傳送的協(xié)議關(guān)聯(lián)。這些協(xié)議層通常被稱為“協(xié)議?!?。在圖9中,公共協(xié)議棧930的表示在互連的服務(wù)器和客戶端計(jì)算機(jī)904和902下面示出。層與層號(hào)關(guān)聯(lián),諸如層號(hào)“1”932與應(yīng)用層934關(guān)聯(lián)。這些相同的層號(hào)在客戶端計(jì)算機(jī)902與服務(wù)器計(jì)算機(jī)904的互連的描述中被使用,諸如層號(hào)“1”932與水平虛線936關(guān)聯(lián),其中水平虛線936表示客戶端計(jì)算機(jī)的應(yīng)用層912通過(guò)應(yīng)用層協(xié)議與服務(wù)器計(jì)算機(jī)的應(yīng)用/服務(wù)層914的互連。虛線936表示經(jīng)由圖9中的應(yīng)用層協(xié)議的互連,因?yàn)檫@種互連是邏輯的,而不是物理的。虛線938表示客戶端和服務(wù)器計(jì)算機(jī)的操作系統(tǒng)層經(jīng)由傳輸層的邏輯互連。虛線940表示兩個(gè)計(jì)算機(jī)系統(tǒng)的操作系統(tǒng)經(jīng)由互聯(lián)網(wǎng)層協(xié)議的邏輯互連。最后,鏈路906和908和云910—起表示從客戶端計(jì)算機(jī)向服務(wù)器計(jì)算機(jī)和從服務(wù)器計(jì)算機(jī)向客戶端計(jì)算機(jī)物理地傳送數(shù)據(jù)的物理通信介質(zhì)和組件。這些物理通信組件和介質(zhì)根據(jù)鏈路層協(xié)議傳送數(shù)據(jù)。在圖9中,與示出協(xié)議棧的表930對(duì)齊的第二個(gè)表942包括可被用于每個(gè)不同的協(xié)議層的示例協(xié)議。超文本傳輸協(xié)議(“HTTP”)可被用作應(yīng)用層協(xié)議944,傳輸控制協(xié)議(“TCP”)946可被用作傳輸層協(xié)議,互聯(lián)網(wǎng)協(xié)議948( “IP”)可被用作互聯(lián)網(wǎng)層協(xié)議,并且,在通過(guò)本地以太網(wǎng)互連到互聯(lián)網(wǎng)的計(jì)算機(jī)系統(tǒng)的情況下,以太網(wǎng)/IEEE802.3U協(xié)議950可被用于從計(jì)算機(jī)系統(tǒng)向互聯(lián)網(wǎng)的復(fù)雜通信組件發(fā)送和接收信息。在表示互聯(lián)網(wǎng)的云910內(nèi)部,許多附加類型的協(xié)議可被用于在客戶端計(jì)算機(jī)和服務(wù)器計(jì)算機(jī)之間傳送數(shù)據(jù)。
[0050]考慮經(jīng)由HTTP協(xié)議從客戶機(jī)計(jì)算機(jī)到服務(wù)器計(jì)算機(jī)的消息的發(fā)送。應(yīng)用程序一般對(duì)操作系統(tǒng)進(jìn)行系統(tǒng)調(diào)用,并且在系統(tǒng)調(diào)用中包括數(shù)據(jù)要發(fā)送到其的接收方的指示以及對(duì)包含該數(shù)據(jù)的緩沖區(qū)的引用。數(shù)據(jù)和其它信息一起打包到一個(gè)或多個(gè)HTTP數(shù)據(jù)報(bào)中,諸如數(shù)據(jù)報(bào)952。數(shù)據(jù)報(bào)一般可以包括報(bào)頭954以及數(shù)據(jù)956,被編碼為存儲(chǔ)器塊內(nèi)的字節(jié)序列。報(bào)頭954—般是由多個(gè)字節(jié)編碼的字段組成的記錄。由應(yīng)用程序?qū)?yīng)用層系統(tǒng)調(diào)用的調(diào)用在圖9中由實(shí)線垂直箭頭958表示。操作系統(tǒng)采用傳輸層協(xié)議,諸如TCP,傳送一起表示應(yīng)用層消息的一個(gè)或多個(gè)應(yīng)用層數(shù)據(jù)報(bào)。一般而言,當(dāng)應(yīng)用層消息超出某個(gè)閾值字節(jié)數(shù)時(shí),該消息作為兩個(gè)或更多個(gè)傳輸層消息被發(fā)送。每個(gè)傳輸層消息960包括傳輸層消息報(bào)頭962和應(yīng)用層數(shù)據(jù)報(bào)952。除其它項(xiàng)外,傳輸層報(bào)頭包括允許一系列應(yīng)用層數(shù)據(jù)報(bào)被重新組裝成單個(gè)應(yīng)用層消息的序列號(hào)。傳輸層協(xié)議負(fù)責(zé)端到端消息傳送,獨(dú)立于底層網(wǎng)絡(luò)和其它通信子系統(tǒng),并且附加地涉及差錯(cuò)控制、分割,如以上所討論的,流控制、擁塞控制、應(yīng)用尋址,以及可靠的端到端信息傳送的其它方面。然后,傳輸層數(shù)據(jù)報(bào)經(jīng)由操作系統(tǒng)中的系統(tǒng)調(diào)用被轉(zhuǎn)發(fā)到互聯(lián)網(wǎng)層并且被嵌在互聯(lián)網(wǎng)層數(shù)據(jù)報(bào)964中,每個(gè)互聯(lián)網(wǎng)層數(shù)據(jù)報(bào)964包括互聯(lián)網(wǎng)層報(bào)頭966和傳輸層數(shù)據(jù)報(bào)。協(xié)議棧的互聯(lián)網(wǎng)層涉及跨有可能一起包括互聯(lián)網(wǎng)的許多不同的通信介質(zhì)和子系統(tǒng)發(fā)送數(shù)據(jù)報(bào)。這涉及消息通過(guò)復(fù)雜通信系統(tǒng)到預(yù)期目的地的路由?;ヂ?lián)網(wǎng)層涉及向消息的發(fā)送計(jì)算機(jī)和目的地計(jì)算機(jī)都分配的唯一地址,被稱為“IP地址”,并且通過(guò)互聯(lián)網(wǎng)將消息路由到目的地計(jì)算機(jī)?;ヂ?lián)網(wǎng)層數(shù)據(jù)報(bào)最終被操作系統(tǒng)傳送到通信硬件,諸如將互聯(lián)網(wǎng)層數(shù)據(jù)報(bào)964嵌入到鏈路層數(shù)據(jù)報(bào)970的網(wǎng)絡(luò)接口控制器(“NIC”),其中鏈路層數(shù)據(jù)報(bào)970包括鏈路層報(bào)頭972并且一般包括若干附加到互聯(lián)網(wǎng)層數(shù)據(jù)報(bào)的結(jié)尾的附加字節(jié)974。鏈路層報(bào)頭包括:沖突控制和錯(cuò)誤控制信息,以及本地網(wǎng)絡(luò)地址。鏈路層分組或數(shù)據(jù)報(bào)970是字節(jié)序列,其包括由協(xié)議棧的每一層引入的信息以及根據(jù)應(yīng)用層協(xié)議從源計(jì)算機(jī)傳送到目的地計(jì)算機(jī)的實(shí)際數(shù)據(jù)。
[0051 ]接下來(lái),描述對(duì)網(wǎng)絡(luò)服務(wù)API的RESTfuI方法,從圖10開(kāi)始。圖10示出了資源在RESTful API中的角色。在圖10中,并且在隨后的附圖中,遠(yuǎn)程客戶端1002被示為與由一個(gè)或多個(gè)服務(wù)計(jì)算機(jī)1004經(jīng)由HTTP協(xié)議1006提供的服務(wù)互連并通信。許多RESTful API基于HTTP協(xié)議。因此,在以下討論中,重點(diǎn)是在應(yīng)用層。但是,如以上參考圖10所討論的,遠(yuǎn)程客戶端1002和由一個(gè)或多個(gè)服務(wù)器計(jì)算機(jī)1004提供的服務(wù)事實(shí)上是具有應(yīng)用、操作系統(tǒng)和硬件層的物理系統(tǒng),其中應(yīng)用、操作系統(tǒng)和硬件層通過(guò)HTTP協(xié)議與各種類型的通信介質(zhì)和通信子系統(tǒng)互連,其中HTTP協(xié)議是在客戶端計(jì)算機(jī)和服務(wù)器計(jì)算機(jī)的應(yīng)用、操作系統(tǒng)和硬件層中實(shí)現(xiàn)的協(xié)議棧中的最高級(jí)層。服務(wù)可以由一個(gè)或多個(gè)服務(wù)器計(jì)算機(jī)提供,如上面在前面部分中所討論的。作為一個(gè)例子,多個(gè)服務(wù)器可以被分層組織為各級(jí)中間服務(wù)器和端點(diǎn)服務(wù)器。但是,一起提供服務(wù)的服務(wù)器的整個(gè)集合是由包括在統(tǒng)一資源標(biāo)識(shí)符(“URI”)中的域名尋址的,如下面進(jìn)一步討論的。RESTful API是基于由通過(guò)HTTP協(xié)議提供的并且關(guān)于資源的一小組動(dòng)詞,或操作,其每一個(gè)由對(duì)應(yīng)的URI唯一識(shí)別。資源是邏輯實(shí)體,關(guān)于其的信息被存儲(chǔ)在一起構(gòu)成域的一個(gè)或多個(gè)服務(wù)器上。URI是用于資源的唯一名稱。關(guān)于其的信息存儲(chǔ)在連接到互聯(lián)網(wǎng)的服務(wù)器上的資源具有允許那個(gè)信息被也連接到互聯(lián)網(wǎng)的具有適當(dāng)授權(quán)和特權(quán)的任何客戶端計(jì)算機(jī)訪問(wèn)的唯一 URI ο因此,URI是全局唯一的標(biāo)識(shí)符,并且可以被用來(lái)在世界各地指定服務(wù)器計(jì)算機(jī)上的資源。資源可以是任何邏輯實(shí)體,包括人、數(shù)字編碼的文檔、組織,以及其它此類可以通過(guò)數(shù)字編碼信息來(lái)描述和表征的實(shí)體。因此,資源是邏輯實(shí)體。描述資源并能夠由客戶端計(jì)算機(jī)從服務(wù)器計(jì)算機(jī)訪問(wèn)的數(shù)字編碼的信息被稱為對(duì)應(yīng)資源的“表示”。作為一個(gè)例子,當(dāng)資源是網(wǎng)頁(yè)時(shí),資源的表示可以是資源的超文本標(biāo)記語(yǔ)言(“HTML”)編碼。作為另一個(gè)例子,當(dāng)資源是公司的雇員時(shí),資源的表示可以是一個(gè)或多個(gè)記錄,每個(gè)記錄包含存儲(chǔ)表征雇員的信息的一個(gè)或多個(gè)字段,諸如雇員的姓名、地址、電話號(hào)碼、職稱、工作經(jīng)歷,以及其它此類信息。
[0052]在圖10中所示的例子中,web服務(wù)器1004基于HTTP協(xié)議1006和分層組織的資源集1008提供RESTful API,其允許服務(wù)的客戶端訪問(wèn)關(guān)于客戶和由Acme公司的客戶所下訂單的信息。這個(gè)服務(wù)可以由Acme公司本身或由第三方信息提供商提供。所有的客戶和訂單信息都由與URI “http: //www.acme.com/ customer Info” 1012關(guān)聯(lián)的客戶信息資源1010集體表示。如下面進(jìn)一步討論的,這單個(gè)URI和HTTP協(xié)議一起提供足夠的信息,用于讓遠(yuǎn)程客戶端計(jì)算機(jī)訪問(wèn)由服務(wù)1004存儲(chǔ)和分發(fā)的任何特定類型的客戶和訂單信息??蛻粜畔①Y源1010表示大量下屬資源。對(duì)Acme公司的每個(gè)客戶,這些下屬資源包括客戶資源,諸如客戶資源1014。所有客戶資源 1014-1018都由單個(gè)URI “http: //www.acme.com/customerInfo/customers” 1020共同命名或指定。個(gè)別客戶資源,諸如客戶資源1014,與客戶識(shí)別符號(hào)碼關(guān)聯(lián),并且每個(gè)分別由客戶資源特定的URI尋址,諸如URI “http: / /www.acme.com/customer Info/customers/361” 1022,該URI包括用于由客戶資源1014表示的客戶的客戶標(biāo)識(shí)符“361”。每個(gè)客戶可以與一個(gè)或多個(gè)訂單邏輯關(guān)聯(lián)。例如,由客戶資源1014表示的客戶與三個(gè)不同的訂單1024-1026關(guān)聯(lián),每個(gè)訂單由訂單資源表示。所有訂單都由單個(gè)URI“http: //www.acme.com/customerlnfo/orders” 1036 共同指定或命名。與由資源 1014表不的客戶關(guān)聯(lián)的所有訂單,由訂單資源1024-1026表示的訂單,可以由URI“http://www.acme.com/ customerlnfo/customers/361/orders” 1038共同指定。特定的訂單,諸如由訂單資源1024表示的訂單,可以由與那個(gè)訂單關(guān)聯(lián)的唯一 URI,諸如URI“http://www.acme.com/ customerlnfo/customer s/361/orders/1” 1040,指定,其中最后的 “I” 是指定對(duì)應(yīng)于由客戶識(shí)別符“361”識(shí)別出的特定客戶的訂單集合中特定訂單的訂單號(hào)。
[0053]從某種意義上說(shuō),這些URI與到由計(jì)算機(jī)操作系統(tǒng)提供的文件目錄中的文件的路徑名具有相似性。但是,應(yīng)當(dāng)認(rèn)識(shí)到,資源,與文件不同,是邏輯實(shí)體,而不是物理實(shí)體,諸如一起構(gòu)成計(jì)算機(jī)系統(tǒng)中的文件的所存儲(chǔ)的字節(jié)集合。當(dāng)文件通過(guò)路徑名被訪問(wèn)時(shí),作為那個(gè)文件的一部分被存儲(chǔ)在存儲(chǔ)器或大容量存儲(chǔ)設(shè)備中的字節(jié)序列的拷貝被傳送到訪問(wèn)實(shí)體。與此相反,當(dāng)資源通過(guò)URI被訪問(wèn)時(shí),服務(wù)器計(jì)算機(jī)返回資源的數(shù)字編碼的表示,而不是資源的拷貝。例如,當(dāng)資源是人時(shí),經(jīng)由指定該人的URI訪問(wèn)的服務(wù)可以返回人的各種特點(diǎn)的字母數(shù)字編碼、數(shù)字編碼的一張或多張照片,以及其它此類信息。不像通過(guò)路徑名訪問(wèn)的文件的情況,資源的表示不是資源的拷貝,而是關(guān)于該資源的某種類型的數(shù)字編碼信息。
[0054]在圖10中所示的示例RESTful API中,客戶端計(jì)算機(jī)可以使用HTTP協(xié)議的動(dòng)詞,或操作,和頂層URI 1012來(lái)導(dǎo)航資源1008的整個(gè)層次結(jié)構(gòu),以便獲得關(guān)于特定客戶和關(guān)于已經(jīng)由特定客戶所下訂單的信息。
[0055]圖1lA-D示出了由在RESTful應(yīng)用中使用的HTTP應(yīng)用層協(xié)議提供的四個(gè)基本動(dòng)詞,或操作。RESTful應(yīng)用是客戶端/服務(wù)器協(xié)議,其中客戶端向服務(wù)或服務(wù)器發(fā)出HTTP請(qǐng)求消息并且服務(wù)或服務(wù)器通過(guò)返回對(duì)應(yīng)的HTTP響應(yīng)消息作出響應(yīng)。圖1lA-D使用上面關(guān)于客戶端、服務(wù)和HTTP協(xié)議參考圖10所討論的圖示約定。為了說(shuō)明的簡(jiǎn)化和清楚,在這些圖中每一個(gè)當(dāng)中,頂部示出請(qǐng)求并且下部示出響應(yīng)。遠(yuǎn)程客戶端1102和服務(wù)1104被示為標(biāo)記的矩形,如在圖10中。指向右邊的實(shí)線箭頭1106表示HTTP請(qǐng)求消息從遠(yuǎn)程客戶端向服務(wù)的發(fā)送并且指向左邊的實(shí)線箭頭1108表示對(duì)應(yīng)于請(qǐng)求消息的響應(yīng)消息由服務(wù)向遠(yuǎn)程客戶端的發(fā)送。為了說(shuō)明的清晰和簡(jiǎn)化,服務(wù)1104被示為與幾個(gè)資源1110-1112關(guān)聯(lián)。
[0056]圖11A示出了GET請(qǐng)求和典型的響應(yīng)。GET請(qǐng)求從服務(wù)請(qǐng)求由URI識(shí)別的資源的表示。在圖1lA所示的例子中,資源1110由URI “http://www.acme.com/iteml” 1116唯一識(shí)別。初始子串“http: //www.acme.com”是識(shí)別服務(wù)的域名。因此,URI 1116可以被認(rèn)為是指定資源“i teml”位于域“www.acme.com”內(nèi)并由其管理。GET請(qǐng)求1120包括命令“GET” 1122、當(dāng)被附加到域名時(shí)生成唯一識(shí)別資源的URI的并且在特定的底層應(yīng)用層協(xié)議1126的指示中的相對(duì)資源標(biāo)識(shí)符1124。請(qǐng)求消息可以包括一個(gè)或多個(gè)報(bào)頭,或鍵/值對(duì),諸如指示請(qǐng)求所指向的域的主機(jī)報(bào)頭1128 “Host: www.acme.com”。存在可以被包括的許多不同的報(bào)頭。此外,請(qǐng)求消息還可以包括請(qǐng)求消息主體。主體可以以各種不同的自描述編碼語(yǔ)言當(dāng)中任何一種編碼,常常是JS0N、XML或HTML。在當(dāng)前的例子中,沒(méi)有請(qǐng)求消息主體。服務(wù)接收包含GET命令的請(qǐng)求消息、處理該消息,并返回對(duì)應(yīng)的響應(yīng)消息1130。響應(yīng)消息包括應(yīng)用層協(xié)議1132的指示、數(shù)字狀態(tài)1134、結(jié)構(gòu)(textural)狀態(tài)1136、各種報(bào)頭1138和1140,以及,在當(dāng)前的例子中,包括網(wǎng)頁(yè)的HTML編碼的主體1142。但是,再次,主體可以包含許多不同類型的信息當(dāng)中任何一種,諸如編碼人事文件、客戶描述或訂單描述的JSON對(duì)象。GET是HTTP協(xié)議中最根本和一般最常用的動(dòng)詞,或功能。
[0057]圖1lB示出了POST HTTP動(dòng)詞。在圖1IB中,客戶端向服務(wù)發(fā)送與URI“http://www.acme.com/iteml”關(guān)聯(lián)的POST請(qǐng)求1146。在許多RESTful API中,POST請(qǐng)求消息請(qǐng)求服務(wù)創(chuàng)建下屬于與該P(yáng)OST請(qǐng)求關(guān)聯(lián)的URI的新資源并且為新創(chuàng)建的資源提供名稱和對(duì)應(yīng)的URI。因此,如圖1IB中所示,服務(wù)創(chuàng)建下屬于由URI “http: //www.acme.com/iteml”指定的資源1110的新資源1148,并且向這個(gè)新資源分配標(biāo)識(shí)符“36”,從而為該新資源創(chuàng)建唯一 URI“http: //www.acme.com/i teml/36” 1150。然后,服務(wù)向遠(yuǎn)程客戶端發(fā)送回對(duì)應(yīng)于POST請(qǐng)求的響應(yīng)消息1152。除了應(yīng)用層協(xié)議、狀態(tài)和報(bào)頭1154,響應(yīng)消息還包括具有新創(chuàng)建的資源的URI的位置報(bào)頭1156。根據(jù)HTTP協(xié)議,POST動(dòng)詞還可以被用來(lái)通過(guò)包括具有更新信息的主體來(lái)更新現(xiàn)有的資源。但是,當(dāng)新資源的名稱由服務(wù)確定時(shí),RESTful API—般使用POST用于創(chuàng)建新資源。POST請(qǐng)求1146可以包括包含可被服務(wù)結(jié)合到用于資源的所存儲(chǔ)信息的資源的表示或部分表示的主體。
[0058]圖1lC示出了HTTP PUT動(dòng)詞。在RESTful API中,PUT HTTP動(dòng)詞一般被用于更新現(xiàn)有的資源或者當(dāng)新資源的名稱由客戶端而不是服務(wù)確定時(shí)用于創(chuàng)建新資源。在圖1ic中所示的例子中,遠(yuǎn)程客戶端關(guān)于命名新創(chuàng)建的資源1148的URI “http://www.acme.com/iteml/36”發(fā)出PUT HTTP請(qǐng)求1160IUT請(qǐng)求消息包括具有資源1162的表示或部分表示的JSON編碼的主體。響應(yīng)于接收到這個(gè)請(qǐng)求,服務(wù)更新資源1148,以包括在HJT請(qǐng)求中發(fā)送的信息1162,然后將對(duì)應(yīng)于PUT請(qǐng)求1164的響應(yīng)返回到遠(yuǎn)程客戶端。
[0059]圖1ID示出了DELETEHTTP動(dòng)詞。在圖1ID所示的例子中,遠(yuǎn)程客戶端向服務(wù)發(fā)送關(guān)于唯一指定新創(chuàng)建的資源1148的URI “http: //www.acme.com/iteml/36” 的DELETE HTTP請(qǐng)求1170。作為響應(yīng),服務(wù)刪除與URL關(guān)聯(lián)的資源并且返回響應(yīng)消息1172。
[0060]如下面進(jìn)一步討論的,并且如上面提到的,在響應(yīng)消息中,除了資源表示,服務(wù)還可以返回各種不同的鏈接,或URI。這些鏈接可以向客戶端指示以各種不同方式與由與對(duì)應(yīng)請(qǐng)求消息關(guān)聯(lián)的URI指定的資源相關(guān)的附加資源。作為一個(gè)例子,當(dāng)響應(yīng)于請(qǐng)求而返回到客戶端的信息對(duì)于單個(gè)HTTP響應(yīng)消息來(lái)說(shuō)太大時(shí),它可以被分成頁(yè),返回第一頁(yè)連同附加的鏈接,或URI,這些URI允許客戶端利用附加的GET請(qǐng)求檢索剩余的頁(yè)。作為另一個(gè)例子,響應(yīng)于對(duì)客戶信息資源(圖10中的1010)的初始GET請(qǐng)求,除了所請(qǐng)求的表示,服務(wù)還可以向客戶端提供URI 1020和1036,利用這些URI,客戶端可以開(kāi)始遍歷后續(xù)GET請(qǐng)求中的層次資源組織。
[0061]當(dāng)前文檔針對(duì)的科學(xué)工作流系統(tǒng)
[0062]圖12示出了當(dāng)前文檔針對(duì)的科學(xué)工作流系統(tǒng)的主要組件??茖W(xué)工作流系統(tǒng)包括前端1202和后端1204。前端經(jīng)由互聯(lián)網(wǎng)1206和/或各種類型的個(gè)人區(qū)域網(wǎng)、局域網(wǎng)、廣域網(wǎng)以及通信子系統(tǒng)、系統(tǒng)和介質(zhì)及其組合連接到后端。科學(xué)工作流系統(tǒng)的前端部分一般包括多個(gè)前端實(shí)驗(yàn)儀表板應(yīng)用1208-1210,每個(gè)應(yīng)用運(yùn)行在用戶計(jì)算機(jī)或其它處理器控制的用戶設(shè)備上。每個(gè)前端實(shí)驗(yàn)儀表板向人類用戶提供用戶界面,該用戶界面允許人類用戶下載關(guān)于存儲(chǔ)在科學(xué)工作流系統(tǒng)1204的后端部分中的執(zhí)行模塊、數(shù)據(jù)集和實(shí)驗(yàn)的信息,利用基于有向無(wú)環(huán)圖(“DAG” )的可視化創(chuàng)建和編輯實(shí)驗(yàn),提交實(shí)驗(yàn)以供執(zhí)行,觀看由已執(zhí)行的實(shí)驗(yàn)生成的結(jié)果,向科學(xué)工作流系統(tǒng)后端上傳數(shù)據(jù)集和執(zhí)行模塊,并且與其他用戶共享實(shí)驗(yàn)、執(zhí)行模塊和數(shù)據(jù)集。在本質(zhì)上,前端實(shí)驗(yàn)儀表板應(yīng)用提供了一種進(jìn)入科學(xué)工作流系統(tǒng)并且,通過(guò)科學(xué)工作流系統(tǒng),進(jìn)入科學(xué)工作流系統(tǒng)用戶的社區(qū)的交互式開(kāi)發(fā)環(huán)境和窗口或門(mén)戶。在圖12中,外部虛線矩形1202表示科學(xué)工作流系統(tǒng)前端,而內(nèi)部虛線矩形1220表示支持科學(xué)工作流系統(tǒng)前端的硬件平臺(tái)。在外部虛線矩形1202內(nèi)并在內(nèi)部虛線矩形1220外的陰影組件1208-1210表示在硬件平臺(tái)1220中實(shí)現(xiàn)的科學(xué)工作流系統(tǒng)的組件。類似的圖示約定用于在一個(gè)或多個(gè)云計(jì)算系統(tǒng)、集中式或分布式專用數(shù)據(jù)中心或其它一般化大規(guī)模多計(jì)算機(jī)系統(tǒng)計(jì)算環(huán)境1222上實(shí)現(xiàn)的科學(xué)工作流系統(tǒng)后端1204。這些大型計(jì)算環(huán)境一般包括多個(gè)服務(wù)器計(jì)算機(jī)、網(wǎng)絡(luò)附連的存儲(chǔ)系統(tǒng)、內(nèi)部網(wǎng)絡(luò),并且常常包括主框架或其它大型計(jì)算機(jī)系統(tǒng)??茖W(xué)工作流系統(tǒng)后端1204包括一個(gè)或多個(gè)API服務(wù)器1224、分布式目錄服務(wù)1226、集群管理服務(wù)1228,以及多個(gè)執(zhí)行集群節(jié)點(diǎn)1230-1233。這些后端組件中的每一個(gè)可以被映射到多個(gè)物理服務(wù)器和/或大型計(jì)算機(jī)系統(tǒng)。其結(jié)果是,科學(xué)工作流系統(tǒng)1204的后端部分被相對(duì)直接地縮放,以便向增加數(shù)量的用戶提供科學(xué)工作流服務(wù)。由雙箭頭1240-1244表示的前端實(shí)驗(yàn)儀表板1208-1210和API服務(wù)器1224之間的通信是基于前面討論的RESTful通信模型,就像由雙頭箭頭1250-1262表示的后端組件之間的內(nèi)部通信一樣。圖12中所示后端中除目錄服務(wù)1226之外的所有其它組件都是無(wú)狀態(tài)的并且通過(guò)無(wú)狀態(tài)RESTful協(xié)議交換信息。
[0063]API服務(wù)器1224從在用戶計(jì)算機(jī)上運(yùn)行的前端實(shí)驗(yàn)儀表板應(yīng)用接收請(qǐng)求,并向其發(fā)送響應(yīng)。API服務(wù)器通過(guò)訪問(wèn)由目錄服務(wù)1226和集群管理服務(wù)1228提供的服務(wù)來(lái)執(zhí)行請(qǐng)求。此外,API服務(wù)器向執(zhí)行集群節(jié)點(diǎn)1230-1233和集群管理服務(wù)1228提供服務(wù)。目錄服務(wù)1226提供到所存儲(chǔ)的執(zhí)行模塊、實(shí)驗(yàn)、數(shù)據(jù)集和作業(yè)的接口。在許多實(shí)現(xiàn)中,目錄服務(wù)1226本地存儲(chǔ)用于這些不同實(shí)體的元數(shù)據(jù),這允許實(shí)體自身從遠(yuǎn)程或附連的存儲(chǔ)系統(tǒng)訪問(wèn),并存儲(chǔ)在其上,其中存儲(chǔ)系統(tǒng)包括網(wǎng)絡(luò)附連的存儲(chǔ)設(shè)備、數(shù)據(jù)庫(kù)系統(tǒng)、文件系統(tǒng),以及其它此類數(shù)據(jù)存儲(chǔ)系統(tǒng)。目錄服務(wù)1226是用于存儲(chǔ)與以前執(zhí)行的、當(dāng)前正在執(zhí)行的以及未來(lái)執(zhí)行的作業(yè)關(guān)聯(lián)的態(tài)信息的儲(chǔ)存庫(kù)。目錄服務(wù)1226提供所存儲(chǔ)的數(shù)據(jù)集、實(shí)驗(yàn)、執(zhí)行模塊和作業(yè)實(shí)體的版本化,以及對(duì)其的搜索接口。
[0064]集群管理服務(wù)1228從API服務(wù)器接收需要在執(zhí)行集群節(jié)點(diǎn)上執(zhí)行以便代表用戶執(zhí)行實(shí)驗(yàn)的作業(yè)的作業(yè)標(biāo)識(shí)符。集群管理服務(wù)將作業(yè)分派到合適的執(zhí)行集群節(jié)點(diǎn)以便執(zhí)行。準(zhǔn)備好執(zhí)行的作業(yè)被轉(zhuǎn)發(fā)到特定的執(zhí)行集群節(jié)點(diǎn)以供立刻執(zhí)行,而需要等待由當(dāng)前正在執(zhí)行的作業(yè)產(chǎn)生的數(shù)據(jù)的作業(yè)或者等待執(zhí)行的作業(yè)被轉(zhuǎn)發(fā)到在執(zhí)行集群節(jié)點(diǎn)中執(zhí)行的pinger例程,該pinger例程間歇地檢查依賴性的滿足情況,以便在作業(yè)的依賴性被滿足時(shí)啟動(dòng)它們。當(dāng)作業(yè)完成執(zhí)行時(shí),輸出數(shù)據(jù)和狀態(tài)信息經(jīng)由API服務(wù)器從執(zhí)行集群節(jié)點(diǎn)返回到目錄。
[0065]如上面所討論的,實(shí)驗(yàn)經(jīng)由前端實(shí)驗(yàn)儀表板被可視地表示為包括數(shù)據(jù)源和執(zhí)行模塊節(jié)點(diǎn)的DAG。在科學(xué)工作流系統(tǒng)的一種實(shí)現(xiàn)中,實(shí)驗(yàn)DAG以JavaScript對(duì)象符號(hào)(“JS0N” )以文本方式編碼。實(shí)驗(yàn)DAG被文本編碼為JSON執(zhí)行模塊的列表。圖13A-E示出了相對(duì)簡(jiǎn)單的六節(jié)點(diǎn)實(shí)驗(yàn)DAG的JSON編碼。在圖13A中,提供了 JSON編碼的實(shí)驗(yàn)DAG的框圖狀圖示。JSON編碼的實(shí)驗(yàn)DAG由JSON編碼的執(zhí)行模塊1302和1303的列表1300組成。執(zhí)行模塊1302的JSON編碼包括執(zhí)行模塊名稱1304和版本號(hào)1306以及用于一個(gè)或多個(gè)執(zhí)行模塊實(shí)例1308和1310當(dāng)中每一個(gè)的編碼。每個(gè)執(zhí)行模塊實(shí)例包括實(shí)例名稱或標(biāo)識(shí)符1312以及鍵值對(duì)1314-1316的列表或集合,每個(gè)鍵值對(duì)包括通過(guò)冒號(hào)1322與以文本方式表不的值1320分開(kāi)的以文本方式表示的鍵1318。
[0066]執(zhí)行模塊是可以由執(zhí)行集群節(jié)點(diǎn)執(zhí)行的可執(zhí)行文件。科學(xué)工作流系統(tǒng)可以存儲(chǔ)和執(zhí)行從許多不同的編程語(yǔ)言當(dāng)中任何一種編譯的可執(zhí)行文件。執(zhí)行模塊可以是例程或多例行程序。執(zhí)行模塊實(shí)例被映射到實(shí)驗(yàn)DAG的單個(gè)節(jié)點(diǎn)。當(dāng)相同的執(zhí)行模塊在實(shí)驗(yàn)過(guò)程中被調(diào)用多次時(shí),每次調(diào)用對(duì)應(yīng)于不同的實(shí)例。鍵-值對(duì)1314-1316提供輸入到執(zhí)行模塊的數(shù)據(jù)、從執(zhí)行模塊輸出的數(shù)據(jù)、靜態(tài)參數(shù)以及用于執(zhí)行模塊的可變參數(shù)的指示。圖13B顯示了可以在執(zhí)行模塊內(nèi)實(shí)例的JSON編碼中鍵-值對(duì)的列表或集合中出現(xiàn)的不同類型的鍵-值對(duì)。在圖13B中存在兩種類型的輸入鍵-值對(duì)1330和1332。這兩種類型的輸入鍵-值對(duì)包括鍵“in”1334。第一輸入鍵-值對(duì)1330包括包含“at”符號(hào)1336、數(shù)據(jù)集的名稱1338和版本號(hào)1340的值串。這第一類型的輸入鍵-值對(duì)指定存儲(chǔ)在科學(xué)工作流系統(tǒng)后端(圖12中的1204)的目錄服務(wù)(圖12中的1226)中的命名數(shù)據(jù)集。第二輸入鍵-值對(duì)類型1332指定從執(zhí)行模塊實(shí)例輸出到包括輸入鍵-值對(duì)的執(zhí)行模塊實(shí)例的數(shù)據(jù)。第二輸入鍵-值對(duì)類型1332包括以美元符號(hào)1342開(kāi)始、后面跟著執(zhí)行模塊名稱1344、用于執(zhí)行模塊的版本號(hào)1346、用于執(zhí)行模塊的實(shí)例的實(shí)例名稱或標(biāo)識(shí)符1348以及指示執(zhí)行模塊的哪個(gè)輸出產(chǎn)生要被輸入到包括輸入鍵-值對(duì)的執(zhí)行模塊實(shí)例的數(shù)據(jù)的輸出號(hào)1350的值串。
[0067]從執(zhí)行模塊的實(shí)例輸出的所有數(shù)據(jù)都由輸出鍵-值對(duì)1352指定。用于輸出鍵-值對(duì)的鍵是“out”1354并且值是整數(shù)輸出數(shù)字1355。命令行靜態(tài)參數(shù)和變量參數(shù)由靜態(tài)鍵-值對(duì)1356和參數(shù)鍵-值對(duì)1357表示。靜態(tài)和參數(shù)鍵-值對(duì)包括串值1358和1359。
[0068]圖13C示出了由節(jié)點(diǎn)和鏈接可視表示的相對(duì)簡(jiǎn)單的實(shí)驗(yàn)DAG。隨機(jī)數(shù)發(fā)生器可執(zhí)行模塊1360的單個(gè)實(shí)例經(jīng)由到文件分離器可執(zhí)行模塊實(shí)例1362的單個(gè)輸出1361生成數(shù)據(jù)。文件分離器可執(zhí)行模塊實(shí)例產(chǎn)生三個(gè)數(shù)據(jù)輸出1363-1365。這些輸出被指向雙排序執(zhí)行模塊1366-1368的三個(gè)實(shí)例當(dāng)中每一個(gè)。雙排序執(zhí)行模塊1366-1368的三個(gè)實(shí)例各自生成輸出1369-1371,并且所有這三個(gè)輸出都被輸入到雙合并執(zhí)行模塊1372的實(shí)例,其產(chǎn)生單個(gè)輸出1373。圖13D示出了在圖13C中所示的實(shí)驗(yàn)DAG的JSON編碼。隨機(jī)數(shù)發(fā)生器執(zhí)行模塊的單個(gè)實(shí)例(圖13C中的1360)由文本1375表示。文件分離器執(zhí)行模塊的單個(gè)實(shí)例(圖13C中的1362)由文本1376表示。雙合并執(zhí)行模塊的單個(gè)實(shí)例(圖13C中的1372)由文本1377表示。雙排序執(zhí)行模塊的三個(gè)實(shí)例(圖13C中的1366-1368)由圖13D中的文本1378、1379和1380表示。考慮來(lái)自表示圖13D中文件分離器執(zhí)行模塊的圖13C的實(shí)驗(yàn)DAG的JSON編碼的文本1376。命令行靜態(tài)參數(shù)由鍵-值對(duì)1382表示。從隨機(jī)數(shù)發(fā)生器執(zhí)行模塊(圖13C中的1360)輸出的數(shù)據(jù)的輸入由輸入鍵-值對(duì)1384表示。從文件分離器執(zhí)行模塊的實(shí)例(圖13C中的1363-1365)輸出的三個(gè)數(shù)據(jù)由三個(gè)輸出鍵-值對(duì)1386-1388表示。由隨機(jī)數(shù)發(fā)生器執(zhí)行模塊(圖13C中的1360)接收的兩個(gè)參數(shù)由兩個(gè)參數(shù)鍵-值對(duì)1390和1392指定。
[0069]圖13E示出了三個(gè)不同的JSON編碼的對(duì)象。圖13E意在示出在隨后的附圖以及圖13D中使用的JSON的某些方面。第一個(gè)JSON編碼的對(duì)象1393是被封在括號(hào)1393b和1393c中的逗號(hào)分隔的鍵-值對(duì)1393a的列表。每個(gè)鍵-值對(duì)由用冒號(hào)隔開(kāi)的兩個(gè)串組成。第二個(gè)JSON編碼的對(duì)象1394也包括鍵-值對(duì)1394a的列表。但是,在這種情況下,第一個(gè)鍵-值對(duì)1394b包括是在括號(hào)1394c和1394d中編碼的鍵-值對(duì)1394d的列表的值1394c。因此,鍵-值對(duì)的值可以是串或者可以是JSON編碼的子對(duì)象。另一種類型的值是表示串1394e的數(shù)組的括號(hào)封住的串的列表。在第三個(gè)JSON編碼的對(duì)象1395中,第二個(gè)鍵-值對(duì)1395a包括在括號(hào)1395b和1395c中被封住的數(shù)組值,其中元素包括對(duì)象1395d,對(duì)象1395d包括兩個(gè)鍵-值對(duì)以及兩個(gè)鍵-值對(duì)1395e和1395f。因此,JSON是允許任意數(shù)量的分層級(jí)別的分層對(duì)象或?qū)嶓w編碼系統(tǒng)。對(duì)象由JSON編碼為鍵-值對(duì),但給定的鍵-值對(duì)的值本身可以是子對(duì)象和數(shù)組。
[0070]圖14A-D示出了存儲(chǔ)在目錄服務(wù)(圖12中的1226)中的元數(shù)據(jù)。圖14A示出了存儲(chǔ)在目錄服務(wù)中的元數(shù)據(jù)的邏輯組織。每個(gè)目錄條目1402包括索引1404、類型1405和標(biāo)識(shí)符1406。有四種不同類型的目錄條目:(1)數(shù)據(jù)源條目;(2)實(shí)驗(yàn)條目;(3)執(zhí)行模塊條目;和(4)作業(yè)條目。數(shù)據(jù)條目描述在作業(yè)執(zhí)行期間被輸入到作業(yè)的數(shù)據(jù)集。數(shù)據(jù)條目描述由用戶上傳到科學(xué)工作流系統(tǒng)的命名數(shù)據(jù)集以及表示作業(yè)的輸出的臨時(shí)數(shù)據(jù)集這二者,該輸出來(lái)自被輸入到在實(shí)驗(yàn)的上下文中執(zhí)行的其它作業(yè)。例如,在圖1的實(shí)驗(yàn)DAG中所示的數(shù)據(jù)源102和104是在實(shí)驗(yàn)執(zhí)行之前上傳到科學(xué)工作流系統(tǒng)或者在其中生成的命名數(shù)據(jù)源。與此相反,來(lái)自執(zhí)行模塊實(shí)例的輸出,諸如輸出116,作為臨時(shí)數(shù)據(jù)集由目錄存儲(chǔ),用于隨后輸入到執(zhí)行模塊實(shí)例106。實(shí)驗(yàn)是由上面參考圖13A-D討論的實(shí)驗(yàn)DAG描述的。執(zhí)行模塊部分地由JSON編碼描述,但是,除此之外,還包括對(duì)所存儲(chǔ)的包括在實(shí)驗(yàn)執(zhí)行期間作為作業(yè)被執(zhí)行的實(shí)際計(jì)算機(jī)指令或P-代碼指令的可執(zhí)行文件或?qū)ο蟮囊?。作業(yè)條目描述對(duì)應(yīng)于執(zhí)行模塊的并且包括用于來(lái)自上游、相關(guān)作業(yè)的輸入的作業(yè)狀態(tài)和標(biāo)識(shí)符的作業(yè)。
[0071]科學(xué)工作流系統(tǒng)可以對(duì)許多不同用戶和組織支持實(shí)驗(yàn)工作流和實(shí)驗(yàn)執(zhí)行。因此,如圖14A中所示,對(duì)于每個(gè)用戶或用戶組織,目錄可以包含用于那個(gè)用戶或用戶組織的數(shù)據(jù)、實(shí)驗(yàn)、執(zhí)行模塊和作業(yè)條目。在圖14A中,每個(gè)大矩形,諸如大矩形1408,表示代表特定用戶或用戶組織存儲(chǔ)的目錄條目。在每個(gè)大矩形內(nèi),有四個(gè)較小的矩形,諸如較大的矩形1408內(nèi)較小的矩形1410-1413,分別表示所存儲(chǔ)的數(shù)據(jù)、實(shí)驗(yàn)、執(zhí)行模塊和作業(yè)條目。目錄條目1404的索引字段識(shí)別用于特定用戶或用戶組織的所存儲(chǔ)元數(shù)據(jù)的特定集合。目錄條目的類型字段1405指示條目屬于這四種不同類型的所存儲(chǔ)條目當(dāng)中哪一種。所存儲(chǔ)的條目的ID字段1406是用于可被用來(lái)從用于特定用戶或組織的相同類型的條目集合中找出和檢索所存儲(chǔ)條目的所存儲(chǔ)條目的唯一標(biāo)識(shí)符。
[0072]圖14B提供了關(guān)于目錄條目的內(nèi)容的更多細(xì)節(jié)。如以上參考圖14A討論的,每個(gè)目錄條目1420包括索引1404、類型1405和ID字段1406。此外,每個(gè)條目包括源部分1422。源部分包括狀態(tài)值1423、簡(jiǎn)短描述1424、名稱1425、所有者1426、最后更新日期/時(shí)間1427、類型1428、創(chuàng)建日期1429、版本1430和元數(shù)據(jù)1431。圖14C示出了用于執(zhí)行模塊目錄條目的元數(shù)據(jù)的一部分,其描述在圖13C中所示的實(shí)驗(yàn)DAG中被示為節(jié)點(diǎn)1362的文件分離器執(zhí)行模塊。這個(gè)節(jié)點(diǎn)被編碼在圖13D中所示的實(shí)驗(yàn)的JSON編碼中的文本1376中。圖14C所示的用于這個(gè)執(zhí)行模塊的執(zhí)行模塊目錄條目的元數(shù)據(jù)的部分是用于執(zhí)行模塊的接口的JSON編碼,其對(duì)于由圖13C中所示實(shí)驗(yàn)DAG表示的實(shí)驗(yàn)描述被包括在圖13D中文件分離器節(jié)點(diǎn)1376的JSON中的鍵-值對(duì)1382-1388。該接口是數(shù)組,其包括對(duì)應(yīng)于圖13D中鍵-值對(duì)1382-1388的五個(gè)對(duì)象1440-1444。接口數(shù)組內(nèi)的JSON編碼對(duì)象1441是輸入?yún)?shù)1384的描述,其可被用來(lái)將實(shí)驗(yàn)-DAG節(jié)點(diǎn)的JSON編碼結(jié)合到表示由包括圖14C中所示接口編碼的執(zhí)行-模塊條目描述的執(zhí)行模塊的實(shí)驗(yàn)DAG中。
[0073]圖14D示出了存儲(chǔ)在作業(yè)目錄條目中的元數(shù)據(jù)的一部分。這個(gè)元數(shù)據(jù)包括資源鍵_值對(duì)1450,該鍵-值對(duì)指定作業(yè)執(zhí)行所需的盤(pán)空間、CPU帶寬和存儲(chǔ)器的量,以及用于對(duì)應(yīng)于該作業(yè)的執(zhí)行模塊的各個(gè)執(zhí)行-模塊參數(shù)的值。應(yīng)當(dāng)指出,在圖14D中所示的元數(shù)據(jù)中,對(duì)應(yīng)于來(lái)自當(dāng)前描述的作業(yè)依賴于其的作業(yè)的輸入的輸入?yún)?shù)包括作業(yè)標(biāo)識(shí)符,諸如作業(yè)標(biāo)識(shí)符1452和1454,而不是對(duì)執(zhí)行-模塊實(shí)例的引用,就像在用于圖13C中所示實(shí)驗(yàn)DAG的雙合并節(jié)點(diǎn)(圖13D中的1377)的JSON編碼中那樣。
[0074]圖15A-1提供了對(duì)應(yīng)于實(shí)驗(yàn)DAG的實(shí)驗(yàn)布局DAG的例子,其中實(shí)驗(yàn)DAG諸如上面參考13C-D所討論的實(shí)驗(yàn)DAG。圖15A-1中所示的實(shí)驗(yàn)布局DAG包括顯著的附加信息,包括描述可視顯示元素,諸如節(jié)點(diǎn)和鏈接,的位置和朝向,其中這些元素一起構(gòu)成通過(guò)前端實(shí)驗(yàn)儀表板提供給用戶的實(shí)驗(yàn)DAG的可視表示。實(shí)驗(yàn)DAG的實(shí)驗(yàn)布局DAG形式可被前端和API服務(wù)器使用,但一般不被集群-管理服務(wù)和執(zhí)行-集群節(jié)點(diǎn)使用。
[0075]圖16A-1示出了科學(xué)工作流系統(tǒng)內(nèi)的實(shí)驗(yàn)設(shè)計(jì)和執(zhí)行的過(guò)程。圖16A-1都使用相同的圖示約定,其中方框示出先前參考圖12討論的科學(xué)工作流系統(tǒng)組件。在初始的實(shí)驗(yàn)設(shè)計(jì)階段,在用戶計(jì)算機(jī)或其它處理器控制的設(shè)備上運(yùn)行的前端實(shí)驗(yàn)儀表板應(yīng)用提供允許用戶構(gòu)建實(shí)驗(yàn)設(shè)計(jì)或者實(shí)驗(yàn)DAG 1604的可視表示的用戶界面??梢暠硎臼腔谏厦鎱⒖紙D13C-D和圖15A-1所描述的DAG 1606的JSON編碼。前端實(shí)驗(yàn)儀表板應(yīng)用調(diào)用由科學(xué)工作流系統(tǒng)后端的AP1-服務(wù)器組件1608提供的各種DAG編輯器工具服務(wù)和搜索服務(wù)。API服務(wù)器組件1608又向目錄服務(wù)1610進(jìn)行調(diào)用,并且從其接收信息。在構(gòu)建實(shí)驗(yàn)設(shè)計(jì)時(shí),用戶可以搜索,并下載以前開(kāi)發(fā)的實(shí)驗(yàn)設(shè)計(jì)以及實(shí)驗(yàn)設(shè)計(jì)的組件,其元數(shù)據(jù)被存儲(chǔ)在目錄1610中。搜索可以關(guān)于上面參考圖14B討論的目錄條目?jī)?nèi)的各個(gè)字段的值來(lái)執(zhí)行。用戶也可以采用編輯工具來(lái)構(gòu)建全新的實(shí)驗(yàn)設(shè)計(jì)。實(shí)驗(yàn)設(shè)計(jì)可以被用戶通過(guò)從前端實(shí)驗(yàn)儀表板應(yīng)用調(diào)用的各種API月艮務(wù)器服務(wù)命名并存儲(chǔ)在目錄中。在稱為“克隆”的一種實(shí)驗(yàn)設(shè)計(jì)方法中,通過(guò)對(duì)存儲(chǔ)在目錄中的實(shí)驗(yàn)設(shè)計(jì)的搜索,現(xiàn)有的實(shí)驗(yàn)設(shè)計(jì)被識(shí)別出來(lái),并且通過(guò)前端實(shí)驗(yàn)儀表板應(yīng)用顯示給用戶。然后,通過(guò)改變數(shù)據(jù)源,添加、刪除或改變執(zhí)行模塊和執(zhí)行模塊之間的數(shù)據(jù)流鏈接,并通過(guò)添加或刪除執(zhí)行模塊的實(shí)例,用戶可以修改現(xiàn)有的實(shí)驗(yàn)。因?yàn)殛P(guān)于先前執(zhí)行的實(shí)驗(yàn)和作業(yè)的信息在科學(xué)工作流系統(tǒng)內(nèi)被維護(hù),所以,在當(dāng)前實(shí)驗(yàn)執(zhí)行期間,與先前執(zhí)行的實(shí)驗(yàn)中完全相同的作業(yè)接收相同輸入的修改后的實(shí)驗(yàn)設(shè)計(jì)中的那些作業(yè)不需要被再次執(zhí)行。相反,由這種作業(yè)產(chǎn)生的數(shù)據(jù)可以從目錄中獲得,用于輸入到當(dāng)前實(shí)驗(yàn)的下游作業(yè)。實(shí)際上,當(dāng)修改后的實(shí)驗(yàn)設(shè)計(jì)的整個(gè)子圖具有在當(dāng)前實(shí)驗(yàn)設(shè)計(jì)中完全相同的輸入并且完全相同地發(fā)生時(shí),那些子圖可能不需要在目前實(shí)驗(yàn)設(shè)計(jì)的執(zhí)行期間被執(zhí)行。
[0076]如圖16B中所示,一旦實(shí)驗(yàn)設(shè)計(jì)已經(jīng)被開(kāi)發(fā)出來(lái),用戶就可以采用前端實(shí)驗(yàn)儀表板特征來(lái)經(jīng)由API服務(wù)器組件1608提供的上傳服務(wù)向目錄上傳在該目錄中還不存在的數(shù)據(jù)集和執(zhí)行模塊。如圖16C中所示,一旦用戶已經(jīng)上傳了執(zhí)行還沒(méi)有在目錄中存在的實(shí)驗(yàn)所需的必要數(shù)據(jù)集和執(zhí)行模塊,用戶就輸入前端實(shí)驗(yàn)儀表板的實(shí)驗(yàn)提交特征,以便向由API服務(wù)器組件1608提供的實(shí)驗(yàn)提交服務(wù)提交實(shí)驗(yàn)設(shè)計(jì),作為對(duì)應(yīng)實(shí)驗(yàn)DAG 1612的JSON編碼以供執(zhí)行。如圖16D中所示,在接收到實(shí)驗(yàn)設(shè)計(jì)后,API服務(wù)器組件1608將該試驗(yàn)設(shè)計(jì)解析為執(zhí)行模塊實(shí)例和數(shù)據(jù)集,與目錄服務(wù)1610進(jìn)行交互以確保所有的數(shù)據(jù)集和執(zhí)行模塊都駐留在該目錄中,驗(yàn)證實(shí)驗(yàn)設(shè)計(jì),為所有執(zhí)行模塊實(shí)例計(jì)算作業(yè)簽名,并與目錄進(jìn)行交互以便為不匹配已存儲(chǔ)在該目錄中的作業(yè)條目的作業(yè)簽名的作業(yè)簽名創(chuàng)建新作業(yè)條目,為新創(chuàng)建的作業(yè)條目接收作業(yè)標(biāo)識(shí)符。為了執(zhí)行實(shí)驗(yàn),僅新創(chuàng)建的作業(yè)條目需要被執(zhí)行。
[0077]如圖16E中所示,用于為了執(zhí)行實(shí)驗(yàn)而需要被執(zhí)行的那些作業(yè)的作業(yè)標(biāo)識(shí)符從API服務(wù)器組件1608被轉(zhuǎn)發(fā)到集群管理器組件1614。對(duì)于立即執(zhí)行,當(dāng)用于對(duì)應(yīng)于接收到的作業(yè)標(biāo)識(shí)符的作業(yè)的所有輸入數(shù)據(jù)都可用時(shí),或者對(duì)于后續(xù)執(zhí)行,一旦數(shù)據(jù)依賴性被滿足,集群管理器組件就在執(zhí)行集群節(jié)點(diǎn)1616之間分發(fā)接收到的作業(yè)標(biāo)識(shí)符。如圖16F中所示,對(duì)于對(duì)應(yīng)于等待依賴性滿足的作業(yè)的那些作業(yè)標(biāo)識(shí)符,作業(yè)標(biāo)識(shí)符已被集群管理器組件轉(zhuǎn)發(fā)到其的執(zhí)行集群節(jié)點(diǎn)內(nèi)的Pinger 1618連續(xù)或間歇地輪詢API服務(wù)器組件1608,以確定,作為上游作業(yè)的執(zhí)行完成的結(jié)果,輸入數(shù)據(jù)依賴性是否已被滿足。當(dāng)依賴性被滿足時(shí),作業(yè)標(biāo)識(shí)符被提交,用于由執(zhí)行集群節(jié)點(diǎn)執(zhí)行。如圖16G中所示,當(dāng)執(zhí)行集群節(jié)點(diǎn)準(zhǔn)備啟動(dòng)作業(yè)的執(zhí)行時(shí),執(zhí)行集群節(jié)點(diǎn)經(jīng)由API服務(wù)器服務(wù)將必要的數(shù)據(jù)集和可執(zhí)行文件下載到本地存儲(chǔ)器和/或其它本地?cái)?shù)據(jù)存儲(chǔ)資源。如圖16H中所示,一旦作業(yè)結(jié)束執(zhí)行,執(zhí)行集群節(jié)點(diǎn)就通過(guò)API服務(wù)器組件1608向目錄1610發(fā)送通過(guò)執(zhí)行生成的數(shù)據(jù)集、標(biāo)準(zhǔn)錯(cuò)誤輸出和I/O輸出以及完成狀態(tài),以便存儲(chǔ)。如圖161中所示,當(dāng)API服務(wù)器組件1608確定用于實(shí)驗(yàn)的所有作業(yè)都已被執(zhí)行時(shí),API服務(wù)器組件可以向前端實(shí)驗(yàn)儀表板應(yīng)用1602返回執(zhí)行完成指示。作為替代,前端實(shí)驗(yàn)儀表板應(yīng)用可以通過(guò)API服務(wù)器組件接口或服務(wù)輪詢目錄,以便確定何時(shí)執(zhí)行完成。在執(zhí)行完成后,用戶可以訪問(wèn)并在前端實(shí)驗(yàn)儀表板上顯示來(lái)自實(shí)驗(yàn)的輸出。
[0078]接下來(lái),更詳細(xì)地描述上面參考圖16A-1討論的后端活動(dòng)。在那種討論之前,接下來(lái)總結(jié)實(shí)驗(yàn)設(shè)計(jì)和實(shí)驗(yàn)執(zhí)行的各個(gè)方面??茖W(xué)工作流系統(tǒng)的第一個(gè)重要方面是實(shí)驗(yàn)設(shè)計(jì)由概念上簡(jiǎn)單的執(zhí)行模塊和數(shù)據(jù)源組成。與可視編輯工具、搜索能力和系統(tǒng)目錄中的元數(shù)據(jù)存儲(chǔ)相結(jié)合,這允許用戶快速構(gòu)建實(shí)驗(yàn),常常是通過(guò)重復(fù)利用以前開(kāi)發(fā)的實(shí)驗(yàn)設(shè)計(jì)的大部分??茖W(xué)工作流系統(tǒng)的第二個(gè)重要特征是,因?yàn)樽鳂I(yè)和由成功執(zhí)行的作業(yè)輸出的數(shù)據(jù)在目錄中被存儲(chǔ)并維護(hù),所以,當(dāng)結(jié)合先前執(zhí)行的實(shí)驗(yàn)的部分的新實(shí)驗(yàn)設(shè)計(jì)被系統(tǒng)執(zhí)行時(shí),沒(méi)有必要利用完全相同的輸入重新執(zhí)行完全相同的作業(yè)。因?yàn)閬?lái)自那些作業(yè)的輸出被存儲(chǔ),所以,當(dāng)實(shí)驗(yàn)被執(zhí)行時(shí),那個(gè)輸出立即可用于提供給下游作業(yè)。因此,設(shè)計(jì)實(shí)驗(yàn)的過(guò)程和實(shí)驗(yàn)執(zhí)行的計(jì)算效率兩者都通過(guò)在科學(xué)工作流系統(tǒng)內(nèi)維護(hù)的綜合目錄被大大增強(qiáng)了??茖W(xué)工作流系統(tǒng)的另一個(gè)重要方面是除目錄之外的所有其它后端組件都是無(wú)狀態(tài)的,從而允許它們被直接縮放,以便支持不斷增加的用戶數(shù)量。用于執(zhí)行作業(yè)的數(shù)據(jù)和執(zhí)行模塊本地存儲(chǔ)在作業(yè)在其上執(zhí)行的執(zhí)行集群節(jié)點(diǎn)上,這顯著改善了與大型分布式系統(tǒng)中的分布式執(zhí)行關(guān)聯(lián)的通信帶寬問(wèn)題??茖W(xué)工作流系統(tǒng)將實(shí)驗(yàn)分解成對(duì)應(yīng)于執(zhí)行模塊的作業(yè)并且在執(zhí)行階段執(zhí)行作業(yè),其中初始作業(yè)只依賴于命名數(shù)據(jù)源或獨(dú)立于外部資源并且執(zhí)行的后續(xù)階段涉及其依賴性已經(jīng)被先前執(zhí)行的作業(yè)滿足的那些作業(yè)。這種執(zhí)行調(diào)度由目錄維護(hù)的作業(yè)狀態(tài)信息協(xié)調(diào)并且從實(shí)驗(yàn)的DAG描述自然產(chǎn)生。
[0079]圖17A-B示出了實(shí)驗(yàn)DAG的樣本可視表示和實(shí)驗(yàn)DAG的對(duì)應(yīng)JSON編碼。如圖17A中所示,實(shí)驗(yàn)設(shè)計(jì)包括三個(gè)數(shù)據(jù)源節(jié)點(diǎn)1702-1704和五個(gè)執(zhí)行模塊實(shí)例節(jié)點(diǎn)1705-1709。在圖17B中,圖17A中所使用的用于執(zhí)行模塊節(jié)點(diǎn)的數(shù)字標(biāo)簽被再次用來(lái)指示JSON編碼的對(duì)應(yīng)部分。
[0080]圖18A-G示出了在實(shí)驗(yàn)經(jīng)由前端實(shí)驗(yàn)儀表板應(yīng)用提交以便由用戶執(zhí)行之后由科學(xué)工作流系統(tǒng)后端的API服務(wù)器組件(圖16A中的1608)執(zhí)行的活動(dòng)。圖18A示出了在由API服務(wù)器對(duì)實(shí)驗(yàn)設(shè)計(jì)進(jìn)行驗(yàn)證期間執(zhí)行的各種不同步驟。在圖18A中,如上在圖17B中示出的實(shí)驗(yàn)DAG的JSON編碼在左側(cè)第一列1802中被再現(xiàn)。在第一步驟中,API服務(wù)器識(shí)別實(shí)驗(yàn)設(shè)計(jì)中的執(zhí)行模塊和數(shù)據(jù)集并且從目錄檢索用于這些組件的對(duì)應(yīng)目錄條目,在圖18A的右側(cè)第二列1804示為矩形。當(dāng)API服務(wù)器不能識(shí)別和檢索對(duì)應(yīng)于每個(gè)執(zhí)行模塊和數(shù)據(jù)源的目錄條目時(shí),實(shí)驗(yàn)提交被拒絕。否則,在下一步驟中,用于執(zhí)行模塊的每個(gè)實(shí)例的鍵-值對(duì)對(duì)照對(duì)應(yīng)目錄條目中的元數(shù)據(jù)接口進(jìn)行檢查,該檢查在圖18A中由雙頭箭頭,諸如雙頭箭頭1806,指示。當(dāng)接口規(guī)范未能與實(shí)驗(yàn)DAG的JSON編碼中的鍵-值對(duì)重合時(shí),實(shí)驗(yàn)提交被拒絕。最后,引用另一執(zhí)行模塊的每個(gè)輸入鍵-值對(duì),諸如輸入鍵-值對(duì)1808,對(duì)照實(shí)驗(yàn)DAG進(jìn)行檢查,以確保輸入鍵-值對(duì)引用第一級(jí)執(zhí)行模塊名稱,如由弧形箭頭,諸如弧形箭頭1810,所指示的。
[0081]圖18B提供了用于以上參考圖18A討論的驗(yàn)證步驟的控制流程圖。在步驟1812中,例程“驗(yàn)證”接收實(shí)驗(yàn)DAG。在步驟1813-1824的for循環(huán)中,檢查DAG的每個(gè)元素,其中元素是執(zhí)行模塊或引用的數(shù)據(jù)集。首先,在步驟1814中,為當(dāng)前考慮的DAG元素從目錄中獲取對(duì)應(yīng)的條目。當(dāng)目錄獲取不成功時(shí),如在步驟1815所確定的,則返回失敗。否則,當(dāng)獲取的條目是執(zhí)行模塊時(shí),如在步驟1816所確定的,則在步驟1817中,目錄條目的元數(shù)據(jù)上的接口相對(duì)于實(shí)驗(yàn)DAG中的執(zhí)行模塊編碼的輸入、輸出和參數(shù)進(jìn)行檢查。當(dāng)輸入、輸出和參數(shù)相對(duì)于接口元數(shù)據(jù)的檢查成功時(shí),如在步驟1818所確定的,然后,在步驟1819-1821的內(nèi)部for循環(huán)中,包括對(duì)其它執(zhí)行模塊的引用的所有輸入鍵-值對(duì)被檢查有效性,如以上參考圖18A所討論的。當(dāng)引用無(wú)效時(shí),返回失敗。否則,當(dāng)前考慮的元素通過(guò)驗(yàn)證。當(dāng)當(dāng)前考慮的元素是數(shù)據(jù)集時(shí),如在步驟1816所確定的,則任何數(shù)據(jù)集有效性檢查都在步驟1822中執(zhí)行。這些檢查可以包括基于數(shù)據(jù)集目錄條目信息確定數(shù)據(jù)是否可訪問(wèn)。當(dāng)數(shù)據(jù)集檢查成功時(shí),如在步驟1823所確定的,數(shù)據(jù)集條目通過(guò)驗(yàn)證。步驟1813-1824的for循環(huán)迭代通過(guò)所有的實(shí)驗(yàn)DAG的元素并且當(dāng)全部都通過(guò)驗(yàn)證時(shí)返回成功。
[0082]圖18C-D示出了實(shí)驗(yàn)DAG的排序。圖18C示出了用于執(zhí)行模塊實(shí)例執(zhí)行的次序,或階段。執(zhí)行模塊1705從數(shù)據(jù)源1702和1703只接收數(shù)據(jù)源輸入。因此,執(zhí)行模塊實(shí)例1705可以在第一階段中被立即執(zhí)行,如由帶圓圈的階段號(hào)1825所指示的。與此相反,執(zhí)行模塊1706和1707都依賴于來(lái)自執(zhí)行模塊實(shí)例1705的輸出。因此,它們必須都等待執(zhí)行模塊實(shí)例1705的執(zhí)行完成。因此,它們被分配給執(zhí)行的第二階段,如由帶圓圈的階段號(hào)1826和1827所指示的。執(zhí)行模塊實(shí)例1708依賴于執(zhí)行模塊實(shí)例1706的之前執(zhí)行,并且因此被分配給第三執(zhí)行階段1828。最后,執(zhí)行模塊實(shí)例1709必須等待執(zhí)行模塊實(shí)例1708的執(zhí)行完成,并且因此被分配給第四執(zhí)行階段1829。這些階段分配表示實(shí)驗(yàn)DAG的執(zhí)行次序。當(dāng)然,當(dāng)執(zhí)行模塊實(shí)例可以在執(zhí)行集群節(jié)點(diǎn)上被啟動(dòng)的點(diǎn)只依賴于所有的數(shù)據(jù)依賴性都被滿足,而不是依賴于執(zhí)行模塊實(shí)例被認(rèn)為駐留在其中的階段。
[0083]圖18D提供了用于為實(shí)驗(yàn)DAG確定執(zhí)行次序的例程“排序DAG”的控制流程圖。在步驟1830中,例程“排序DAG”接收實(shí)驗(yàn)DAG、將局部變量numLevels設(shè)置為0,并且將兩個(gè)局部集合變量80111^6?^0(168和01:116洲0(168設(shè)置為空集。然后,在步驟1831-1837的¥11;[16循環(huán)中,階段被迭代地確定,直到存儲(chǔ)在本地變量集SourceNodes和otherNodes中的所有節(jié)點(diǎn)等于在實(shí)驗(yàn)D A G中的全部節(jié)點(diǎn)。在步驟18 3 2中,例程找出實(shí)驗(yàn)D A G中僅依賴于數(shù)據(jù)源和集合sourceNodes和otherNodes中的節(jié)點(diǎn)的所有節(jié)點(diǎn)。在步驟1833中,例程確定在步驟1832中是否找到任何節(jié)點(diǎn)。如果沒(méi)有,則例程返回假,因?yàn)閷?shí)驗(yàn)DAG必須具有循環(huán)或?qū)⒎乐箞?zhí)行排序的其它異常。否則,當(dāng)存儲(chǔ)在局部變量numLevels中的值是O時(shí),如在步驟1834所確定的,找出的節(jié)點(diǎn)在步驟1835中被添加到局部集合變量sourceNodes,并且變量numLevels被設(shè)置為
I。否則,找出的節(jié)點(diǎn)在步驟1836中被添加到集合otherNodes,并且變量numLevels遞增I。
[0084]圖18E提供了用于例程“創(chuàng)建作業(yè)簽名”的控制流程圖。作業(yè)簽名是用于對(duì)應(yīng)于執(zhí)行模塊實(shí)例的作業(yè)的獨(dú)特指紋的類型。在步驟1840中,例程接收?qǐng)?zhí)行模塊實(shí)例的JSON編碼。在步驟1841中,例程將局部變量job_sig設(shè)置為空串。然后,在步驟1842-1847的for循環(huán)中,例程將每個(gè)鍵-值對(duì)串附加到存儲(chǔ)在局部變量job_s i g中的作業(yè)簽名。當(dāng)當(dāng)前考慮的鍵-值對(duì)是引用另一個(gè)執(zhí)行模塊的輸入鍵-值對(duì)時(shí),如在步驟1843所確定的,$編碼的引用被用于其它執(zhí)行模塊的作業(yè)簽名代替并且d-引用的輸入鍵-值對(duì)在步驟1844-1845中被添加到作業(yè)簽名。否則,鍵-值對(duì)在步驟1846中被添加到作業(yè)簽名。因此,作業(yè)簽名是在執(zhí)行模塊實(shí)例中的所有鍵-值對(duì)的級(jí)聯(lián),其中對(duì)其它執(zhí)行模塊的引用被用于那些執(zhí)行模塊的作業(yè)簽名代替。
[0085]圖18F是用于創(chuàng)建由API服務(wù)器轉(zhuǎn)發(fā)到科學(xué)工作流系統(tǒng)后端的集群管理組件以啟動(dòng)實(shí)驗(yàn)的執(zhí)行的作業(yè)標(biāo)識(shí)符的列表的例程“準(zhǔn)備作業(yè)”的控制流程圖。在步驟1850中,例程“準(zhǔn)備作業(yè)”將局部變量list設(shè)置為空或空列表。然后,在步驟1851-1855的for循環(huán)中,考慮存儲(chǔ)在源節(jié)點(diǎn)和例程“排序DAG”的先前執(zhí)行中的其它節(jié)點(diǎn)集合中的每個(gè)執(zhí)行模塊實(shí)例。在步驟1852中,為執(zhí)行模塊實(shí)例計(jì)算作業(yè)簽名。在步驟1853中,例程“準(zhǔn)備作業(yè)”確定這個(gè)作業(yè)簽名是否已經(jīng)與目錄中的作業(yè)條目關(guān)聯(lián)。如果還沒(méi)有,則在步驟1854中新的作業(yè)條目被創(chuàng)建并存儲(chǔ)在目錄中,該條目的狀態(tài)為CREATED。然后,在步驟1856-1863的for循環(huán)中,考慮當(dāng)作業(yè)在目錄中被找到或者在目錄中被創(chuàng)建和存儲(chǔ)時(shí)獲得每個(gè)作業(yè)簽名和對(duì)應(yīng)于該作業(yè)簽名的作業(yè)標(biāo)識(shí)符。當(dāng)對(duì)應(yīng)的執(zhí)行模塊實(shí)例中在sourceNodes集合中并且對(duì)應(yīng)于作業(yè)標(biāo)識(shí)符的作業(yè)條目的狀態(tài)是CREATED時(shí),如在步驟1857所確定的,在步驟1858中,在目錄中的作業(yè)條目中狀態(tài)被改變?yōu)镽EADY并且在步驟1859中作業(yè)標(biāo)識(shí)符被添加到作業(yè)標(biāo)識(shí)符的列表。否貝1J,當(dāng)對(duì)應(yīng)于作業(yè)簽名的執(zhí)行模塊實(shí)例在集合otherNodes中被找出并且用于目錄中的作業(yè)簽名的作業(yè)條目的狀態(tài)被創(chuàng)建時(shí),如在步驟1860所確定的,用于作業(yè)條目的狀態(tài)在目錄中被改變?yōu)镾UBMITTED并且在步驟1862中作業(yè)標(biāo)識(shí)符被添加到列表中。因此,由例程“準(zhǔn)備作業(yè)”產(chǎn)生的列表包含對(duì)應(yīng)于需要在實(shí)驗(yàn)執(zhí)行期間被執(zhí)行的執(zhí)行模塊實(shí)例的作業(yè)標(biāo)識(shí)符的列表。在許多情況下,該列表包含比實(shí)驗(yàn)DAG中的執(zhí)行模塊實(shí)例更少的作業(yè)標(biāo)識(shí)符。這是因?yàn)?,如上面所討論的,具有匹配目錄中先前?zhí)行的作業(yè)的作業(yè)簽名的作業(yè)簽名的那些作業(yè)不需要被執(zhí)行,因?yàn)樗鼈兊臄?shù)據(jù)輸出在目錄中可用。
[0086]圖18G提供了用于表示提交的實(shí)驗(yàn)設(shè)計(jì)的API服務(wù)器處理的例程“處理DAG”的控制流程圖。在步驟1870中,例程“處理DAG”接收實(shí)驗(yàn)DAG。在步驟1872中,例程“處理DAG”調(diào)用例程“驗(yàn)證”,以驗(yàn)證接收到的實(shí)驗(yàn)DAG。如果驗(yàn)證失敗,如在步驟1874所確定的,則實(shí)驗(yàn)提交失敗。否則,在步驟1876中,實(shí)驗(yàn)DAG通過(guò)對(duì)例程“排序DAG”的調(diào)用來(lái)排序。當(dāng)排序失敗時(shí),如在步驟1878所確定的,實(shí)驗(yàn)提交失敗。否則,在步驟1880中,為了執(zhí)行實(shí)驗(yàn)而需要被執(zhí)行的作業(yè)的列表通過(guò)對(duì)例程“準(zhǔn)備作業(yè)”的調(diào)用來(lái)準(zhǔn)備。在步驟1882中,作業(yè)標(biāo)識(shí)符的列表被轉(zhuǎn)發(fā)到集群管理器以供執(zhí)行。在步驟1884中,例程“處理DAG”等待對(duì)應(yīng)于列表中的作業(yè)標(biāo)識(shí)符的所有作業(yè)的成功完成或者執(zhí)行超時(shí)的通知。當(dāng)所有作業(yè)都已經(jīng)成功完成時(shí),如在步驟1886所確定的,實(shí)驗(yàn)提交成功。否則,實(shí)驗(yàn)提交不成功。
[0087]圖19提供了用于在科學(xué)工作流系統(tǒng)后端的集群管理器組件上執(zhí)行以便向執(zhí)行集群節(jié)點(diǎn)分發(fā)作業(yè)以供執(zhí)行的例程“集群管理”的控制流程圖。在步驟1902中,集群管理器從API服務(wù)器接收作業(yè)標(biāo)識(shí)符的列表。在步驟1903-1912的for循環(huán)中,例程“集群管理器”向執(zhí)行集群節(jié)點(diǎn)分派由作業(yè)標(biāo)識(shí)符表示的作業(yè)以供執(zhí)行。在步驟1904中,例程“集群管理器”通過(guò)API服務(wù)器訪問(wèn)對(duì)應(yīng)于目錄中的作業(yè)標(biāo)識(shí)符的作業(yè)條目。當(dāng)作業(yè)條目的狀態(tài)是READY時(shí),如在步驟1905中所確定的,例程“集群管理器”在步驟1906中為作業(yè)確定適當(dāng)?shù)膱?zhí)行集群節(jié)點(diǎn),并在步驟1907中向執(zhí)行節(jié)點(diǎn)執(zhí)行器發(fā)送作業(yè)標(biāo)識(shí)符以供立即執(zhí)行。在步驟1906中為了執(zhí)行作業(yè)而確定適當(dāng)執(zhí)行集群節(jié)點(diǎn)涉及跨執(zhí)行集群節(jié)點(diǎn)平衡執(zhí)行負(fù)載以及匹配作業(yè)執(zhí)行所需的資源與在執(zhí)行集群節(jié)點(diǎn)上可用的資源的策略。在某些實(shí)現(xiàn)中,當(dāng)任何執(zhí)行集群節(jié)點(diǎn)上存在執(zhí)行作業(yè)的不足資源時(shí),作業(yè)可被排隊(duì)供后續(xù)執(zhí)行并且科學(xué)工作流系統(tǒng)可以經(jīng)受縮放操作,以增加云計(jì)算設(shè)施內(nèi)可用于科學(xué)工作流系統(tǒng)的計(jì)算資源。當(dāng)作業(yè)條目的狀態(tài)不是READY時(shí),如在步驟1905中所確定的,然后,當(dāng)狀態(tài)是SUBMITTED時(shí),如在步驟1908中所確定的,例程“集群管理器”在步驟1909中確定用于作業(yè)的執(zhí)行的適當(dāng)執(zhí)行集群節(jié)點(diǎn),然后在步驟1910中將作業(yè)標(biāo)識(shí)符轉(zhuǎn)發(fā)到所確定的執(zhí)行集群節(jié)點(diǎn)中執(zhí)行的pinger。如果pinger尚未在執(zhí)行集群節(jié)點(diǎn)上執(zhí)行,貝IJ例程“集群管理器”可以訪問(wèn)執(zhí)行集群節(jié)點(diǎn)接□,以啟動(dòng)Pinger作業(yè),以便接收作業(yè)標(biāo)識(shí)符。如上面所提到的,pinger繼續(xù)輪詢目錄,以便在啟動(dòng)由作業(yè)標(biāo)識(shí)符識(shí)別的作業(yè)的執(zhí)行之前確定何時(shí)所有的依賴性都已被滿足。當(dāng)作業(yè)條目的狀態(tài)既不是RE ADY也不是SUBMITTED時(shí),獲得錯(cuò)誤條件,這在步驟1911中被處理。在某些實(shí)現(xiàn)中,作業(yè)條目可以具有除RE ADY或SUBMITTED之外的其它狀態(tài),有可能在另一實(shí)驗(yàn)的上下文中,該狀態(tài)指示作業(yè)已經(jīng)被排隊(duì)等待執(zhí)行。在這種情況下,包括該作業(yè)的實(shí)驗(yàn)的執(zhí)行可以繼續(xù)。
[0088]圖20提供了用于例程“pinger”的控制流程圖。如上面所討論的,pinger在執(zhí)行集群節(jié)點(diǎn)內(nèi)運(yùn)行,以便繼續(xù)檢查與從集群管理器接收到的作業(yè)標(biāo)識(shí)符關(guān)聯(lián)的作業(yè)的依賴性的滿足,以便啟動(dòng)作業(yè)的執(zhí)行。如上面所討論的,實(shí)驗(yàn)DAG被排序到執(zhí)行階段,其中特定執(zhí)行階段中的每個(gè)作業(yè)只有當(dāng)之前執(zhí)行階段中該作業(yè)依賴于其的作業(yè)已經(jīng)完成執(zhí)行并產(chǎn)生輸入到之前考慮的作業(yè)的輸出數(shù)據(jù)的時(shí)候才可執(zhí)行。在步驟2002中,pinger等待下一個(gè)事件。當(dāng)事件是新作業(yè)標(biāo)識(shí)符的接收時(shí),如在步驟2003中所確定的,作業(yè)標(biāo)識(shí)符被放在正由pinger監(jiān)視的作業(yè)標(biāo)識(shí)符的列表上。當(dāng)下一個(gè)事件是輪詢定時(shí)器期滿事件時(shí),如在步驟2005中所確定的,在步驟2006-2009的for循環(huán)中,pinger對(duì)被pinger監(jiān)視的作業(yè)標(biāo)識(shí)符列表上的每個(gè)作業(yè)標(biāo)識(shí)符檢查依賴性的滿足。當(dāng)對(duì)于特定的作業(yè)標(biāo)識(shí)符所有的依賴性都已經(jīng)滿足時(shí),如在步驟2008中所確定的,該作業(yè)標(biāo)識(shí)符被轉(zhuǎn)發(fā)到執(zhí)行集群節(jié)點(diǎn)內(nèi)的執(zhí)行器,以供執(zhí)行從被監(jiān)視的作業(yè)標(biāo)識(shí)符列表中除去的作業(yè)標(biāo)識(shí)符。當(dāng)列表上的所有作業(yè)標(biāo)識(shí)符都已被檢查依賴性滿足時(shí),在步驟2011中輪詢定時(shí)器復(fù)位。可能發(fā)生的其它事件在步驟2012中由一般事件處理器處理。當(dāng)存在排隊(duì)要考慮的另一事件時(shí),如在步驟2013中所確定的,控制流返回到步驟2003。否則,控制流返回到步驟2002,在那里pinger等待下一個(gè)發(fā)生的事件。
[0089]圖21提供用于在執(zhí)行集群節(jié)點(diǎn)上啟動(dòng)作業(yè)的執(zhí)行的例程“執(zhí)行器”的控制流程圖。在步驟2102中,例程“執(zhí)行器”從科學(xué)工作流系統(tǒng)后端的集群管理器組件接收作業(yè)標(biāo)識(shí)符。在步驟2103中,例程“執(zhí)行器”經(jīng)由API服務(wù)器獲得用于作業(yè)的目錄條目。在步驟2104中,例程“執(zhí)行器”確保所有輸入數(shù)據(jù)的本地拷貝和用于作業(yè)的可執(zhí)行文件都已本地存儲(chǔ)在執(zhí)行集群節(jié)點(diǎn)內(nèi),以確保在執(zhí)行集群節(jié)點(diǎn)上的本地執(zhí)行。在步驟2105中,用于作業(yè)的目錄條目的作業(yè)狀態(tài)被更新為RUNNING。在步驟2106中,執(zhí)行器啟動(dòng)作業(yè)的執(zhí)行。在某些實(shí)現(xiàn)中,新的執(zhí)行器被啟動(dòng),以接收由集群管理器轉(zhuǎn)發(fā)到執(zhí)行集群節(jié)點(diǎn)的每個(gè)新作業(yè)標(biāo)識(shí)符。在其它實(shí)現(xiàn)中,執(zhí)行集群節(jié)點(diǎn)是用于啟動(dòng)對(duì)應(yīng)于被持續(xù)轉(zhuǎn)發(fā)到執(zhí)行器的作業(yè)標(biāo)識(shí)符的作業(yè)的連續(xù)運(yùn)行的執(zhí)行器。執(zhí)行器確保來(lái)自執(zhí)行的作業(yè)的所有輸出都在文件或其它輸出數(shù)據(jù)存儲(chǔ)實(shí)體中被捕獲。然后,在步驟2108中,執(zhí)行器等待作業(yè)結(jié)束執(zhí)行。一旦作業(yè)結(jié)束執(zhí)行,執(zhí)行器就將輸出文件轉(zhuǎn)發(fā)到目錄。當(dāng)作業(yè)已成功完成執(zhí)行時(shí),如在步驟2110中所確定的,用于作業(yè)的目錄條目在步驟2112中被更新為具有狀態(tài)FINISHED。否則,用于目錄的工作條目在步驟2111中被更新為具有狀態(tài)FAILED。
[0090]雖然本發(fā)明已經(jīng)關(guān)于特定的實(shí)施例進(jìn)行了描述,但并不意味著本發(fā)明局限于這些實(shí)施例。在本發(fā)明的精神之內(nèi)的修改對(duì)本領(lǐng)域技術(shù)人員將是顯而易見(jiàn)的。例如,許多不同實(shí)現(xiàn)當(dāng)中任何一種可以通過(guò)改變?cè)S多不同設(shè)計(jì)和實(shí)現(xiàn)參數(shù)當(dāng)中任何一個(gè)來(lái)獲得,包括用于前端和后端的硬件平臺(tái)的選擇,編程語(yǔ)言、操作系統(tǒng)、虛擬化層、云計(jì)算設(shè)施和其它數(shù)據(jù)處理設(shè)施、數(shù)據(jù)結(jié)構(gòu)、控制結(jié)構(gòu)、模塊化組織以及許多附加的設(shè)計(jì)和實(shí)現(xiàn)參數(shù)的選擇。
[0091]可以認(rèn)識(shí)到,提供前面對(duì)所公開(kāi)的實(shí)施例的描述是為了使本領(lǐng)域任何技術(shù)人員能夠制作或使用本公開(kāi)內(nèi)容。對(duì)這些實(shí)施例的各種修改將是本領(lǐng)域技術(shù)人員容易認(rèn)識(shí)到的,并且,在不背離本公開(kāi)內(nèi)容的精神或范圍的情況下,在本文中定義的一般原理可以應(yīng)用到其它實(shí)施例。因此,本公開(kāi)內(nèi)容并非意在局限于本文中所示的實(shí)施例,而是要符合與本文所公開(kāi)的原理和新穎特征一致的最廣范圍。
【主權(quán)項(xiàng)】
1.一種自動(dòng)化實(shí)驗(yàn)平臺(tái),包括: 一個(gè)或多個(gè)處理器; 一個(gè)或多個(gè)存儲(chǔ)器; 一個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備;及 存儲(chǔ)在所述存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)設(shè)備中的一個(gè)或多個(gè)當(dāng)中的計(jì)算機(jī)指令,當(dāng)在所述一個(gè)或多個(gè)處理器中的一個(gè)或多個(gè)上被執(zhí)行時(shí),控制自動(dòng)化實(shí)驗(yàn)平臺(tái) 提供可視集成開(kāi)發(fā)環(huán)境,通過(guò)該可視集成開(kāi)發(fā)環(huán)境,包括在圖形中被鏈接到一起的輸入數(shù)據(jù)集、執(zhí)行模塊和所生成的集合的工作流被創(chuàng)建和顯示;及執(zhí)行工作流以產(chǎn)生輸出數(shù)據(jù)集。
【文檔編號(hào)】G06F15/16GK105830049SQ201480068776
【公開(kāi)日】2016年8月3日
【申請(qǐng)日】2014年12月17日
【發(fā)明人】G·加普塔, A·??死? J·莫里斯, R·佩恩, M·桑達(dá)吾, D·泰百
【申請(qǐng)人】阿提喬有限責(zé)任公司