TWI634774B - 用於分散式系統中線上處理之網路獨立程式設計模型 - Google Patents

用於分散式系統中線上處理之網路獨立程式設計模型 Download PDF

Info

Publication number
TWI634774B
TWI634774B TW102141329A TW102141329A TWI634774B TW I634774 B TWI634774 B TW I634774B TW 102141329 A TW102141329 A TW 102141329A TW 102141329 A TW102141329 A TW 102141329A TW I634774 B TWI634774 B TW I634774B
Authority
TW
Taiwan
Prior art keywords
processing
node
plan
service
nodes
Prior art date
Application number
TW102141329A
Other languages
English (en)
Other versions
TW201433131A (zh
Inventor
麥可 羅傑 瑪締
尼可拉斯 安卓 吉德
馬可斯 法圖拉
查爾斯 阿肯
Original Assignee
谷歌有限責任公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 谷歌有限責任公司 filed Critical 谷歌有限責任公司
Publication of TW201433131A publication Critical patent/TW201433131A/zh
Application granted granted Critical
Publication of TWI634774B publication Critical patent/TWI634774B/zh

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Abstract

本發明揭示包含一分散式系統之系統及方法,該分散式系統使用一宣告式語言來分離應用邏輯與用於通信之網路技術。舉例而言,在具有複數個處理節點之一系統中,每一處理節點可包含:至少一個處理器;一網路層,其用於與其他處理節點通信;及一記憶體,其儲存在由該至少一個處理器執行時致使該處理節點執行操作之指令。該等操作可包含:使用該網路層接收一處理計劃;及分析該處理計劃以判定待執行之一服務及針對該服務所預期之若干個輸入。該等操作亦可包含執行該所判定服務。該處理計劃定義包括該複數個處理節點之一子組之一處理樹,該處理樹具有自該樹之根至一最終層級之單向通信。

Description

用於分散式系統中線上處理之網路獨立程式設計模型 相關申請案交叉參考
本申請案主張優先於2012年11月13日提出申請且標題為「A NETWORK-INDEPENDENT PROGRAMMING MODEL FOR ONLINE PROCESSING IN DISTRIBUTED SYSTEMS」之美國臨時專利申請案序列號61/725,702,該美國臨時專利申請案之揭示內容以全文引用的方式併入本文中。
本發明係關於一種網路獨立程式設計模型,且更特定而言係關於一種用於分散式系統中線上處理之網路獨立程式設計模型。
分散式處理通常涉及在各種處理節點當中劃分任務。舉例而言,不同處理節點可儲存可用於查詢及處理之不同資料,且一請求可導致在各種節點處執行之處理,其中來自該等節點之結果經合併及/或在其他節點處選擇以形成呈現給該使用者之一結果。作為另一實例,在處理節點當中劃分計算可減少某些計算之延時,舉例而言藉由結束在若干個處理節點上之一大輸入之處理,或使多個處理節點執行相同任務且使用第一節點之結果來完成。分散式系統通常包含呈軟體程式或模組之形式之指令,其控制如何分散及處理一特定處理問題。舉例而言,諸多系統使用遠端程序呼叫(RPC)來在處理節點之間發送 處理請求。然而,此等系統依賴於一特定網路通信協定及由於存在於該應用邏輯內之通信碼所致的一特定流。此整合導致升級及可攜性之困難。此外,此等系統缺乏處置分散式系統中之慢速或未投入運轉之節點之靈活性。
某些實施方案包含一分散式處理系統,該分散式處理系統使用一宣告式語言來分離應用邏輯與用於在該系統內通信之網路技術。一宣告式語言係一種獨立於一處理程序如何進行而規定該處理程序進行什麼之語言。舉例而言,某些實施方案包含一處理計劃,該處理計劃包含若干個步驟或操作,其中每一操作指示與該操作相關聯之處理節點、在該操作中執行之服務或方法及該服務中所使用之輸入。每一處理節點可包含一處理計劃執行器,該處理計劃執行器接收處理計劃且執行與該處理節點相關聯之處理計劃之步驟或操作。該處理節點可將處理計劃及服務之結果或輸出(若存在)發送至接下來的一或多個處理節點。該處理節點可藉由定位使用該服務之輸出作為輸入之操作來識別接下來的一或多個節點。處理節點可等待至所有輸入到達以執行針對一特定操作之服務。在某些實施方案中,處理節點可在輸入到達時對該等輸入執行一部分服務。在某些實施方案中,處理節點可針對輸入等待一預定時間量,且即使並非所有輸入皆已到達仍繼續處理。由於處理計劃並不規定每一節點應如何與其他節點通信,因此應用邏輯可係網路獨立及可攜的。網路技術之一改變可透過處理計劃執行器之一改變而實現,該處理計劃執行器可包含用於在節點之間通信之一網路層。此增加可實現一網路升級之速度,同時減少在升級期間引入之錯誤數目。
本發明之一項態樣可以包含在一處理節點處接收一處理計劃之一方法體現,該處理計劃包含一系列操作。每一操作可包含針對該操 作之一服務及用於執行該服務之一或多個處理節點之一指示。至少一個操作亦可包含前一操作之一指示,以使得至少一個操作使用該前一操作之一輸出作為輸入。該方法亦可包含:在處理節點處執行在一特定操作中指示之服務;基於處理計劃來判定下一操作,該下一操作具有該特定操作之一指示;及將處理計劃自該處理節點發送至另一處理節點,該另一處理節點係在該下一操作中識別。
該方法可包含以下特徵中之一或多者。舉例而言,該系列操作可係一操作陣列,且前一操作之指示可係進入該陣列中之一索引,及/或該處理計劃中之一或多個處理節點之指示可係一命名服務。作為另一實例,可以反向拓撲次序儲存該處理計劃之操作,且該方法可包含在將處理計劃發送至另一處理節點之前剪除在來自處理計劃之下一操作之後發生的操作。
該方法亦可包含:作為執行該服務之部分,判定該特定操作之預期量之輸入,等待該預期量之輸入到達,及對該預期量之輸入執行服務。在某些實施方案中,該處理計劃包含一部分服務,且該方法可進一步包含:在執行該服務之前,在一輸入到達處理節點時對該輸入執行部分服務。在某些實施方案中,處理計劃指定該等處理節點係複製式的。在此等實施方案中,執行服務亦可包含在完成服務之後,取消服務在該特定操作中所識別之其他處理節點處之執行。在某些實施方案中,處理節點可將處理計劃發送至另一處理節點,而不期望來自該另一處理節點之作為該另一處理節點執行在下一操作中指示之服務的結果之一回覆。
在另一態樣中,提供一種包含儲存複數個處理計劃之一記憶體之系統,每一處理計劃包含一系列操作。每一操作可包含一服務及用於執行該服務之複數個處理節點中之至少一者之一指示。該系列操作中之至少一者亦可包含表示該系列操作中之另一操作之一輸出之一或 多個輸入之一指示。該系統亦可包含該複數個節點中之一第一節點,其中該第一節點包含至少一個處理器及一記憶體,該記憶體儲存在由該至少一個處理器執行時致使該第一節點執行操作之指令。該等操作可包含:自記憶體選擇一特定處理計劃,及將該特定處理計劃分散至該複數個處理節點之第二節點,該等第二節點係在該特定處理計劃之至少一個第一操作中識別,該第一操作不具有一先前操作之指示。該系統亦可包含該複數個節點,每一處理節點包含至少一個處理器及一記憶體,該記憶體儲存在由該至少一個處理器執行時致使該處理節點執行以下各項之指令:接收該複數個處理計劃中之一處理計劃,解譯所接收之處理計劃,及執行在該所接收處理計劃之第一操作中所指示之服務。
該系統可包含以下特徵中之一或多者。舉例而言,該複數個節點中之每一者可包含用於在處理節點之間傳達處理計劃之一網路層,及/或該第一節點可經組態以將該處理計劃發送至該等第二節點,而不接收來自該等第二節點之一應答。在某些實施方案中,作為解譯所接收處理計劃之部分,該複數個處理節點中之每一者亦可經組態以判定預期數目個輸入,每一輸入係來自一先前操作之一輸出,判定是否已接收該預期數目個輸入,及在判定已接收該預期數目個輸入時執行所指示之服務。在此一實施方案中,作為解譯所接收處理計劃之部分,該複數個節點中之每一者可進一步經組態以判定在接收該預期數目個輸入之前是否已歷時一預定時間量,且在判定已歷時該預定時間量時執行藉助所接收輸入來指示之服務。在某些實施方案中,在所接收處理計劃中之該系列操作中之該等操作中之至少一者包含一部分服務時,作為解譯所接收處理計劃之部分,該複數個節點中之每一者可進一步經組態以使用所預期輸入中之每一者來執行該部分服務以形成一輸出,及使用該部分服務之輸出作為對該所接收處理計劃中所指示 之服務之輸入。
在某些實施方案中,該等指令可致使第二處理節點自第一節點接收特定處理計劃,及執行在該第一操作中指示之服務以產生一特定輸出。在此等實施方案中,該等指令可進一步致使第二處理節點識別至少一個隨後操作,該至少一個隨後操作識別該第一操作,且將該特定處理計劃及該特定輸出發送至在該至少一個隨後操作中識別之第三處理節點。在某些實施方案中,該等指令可進一步致使該等第二處理節點自處理計劃移除至少一個操作以產生一經修改處理計劃,及將該經修改處理計劃與該輸出一起發送至該等第三處理節點。在某些實施方案中,該等第二節點可經組態以同時地開始服務之執行,及/或作為執行該第一操作中所指示之服務之部分,第二處理節點中之至少一者可起始另一處理計劃。在某些實施方案中,作為起始該另一處理計劃之部分,第二處理節點中之至少一者將額外步驟附加至該特定處理計劃,且視情況地,作為起始該另一處理計劃之部分,該等第二處理節點中之該至少一者修改該處理計劃中之隨後計劃之一或多個輸入之指示。
在另一態樣中,一分散式處理系統包括複數個處理節點,其中每一處理節點包含至少一個處理器,及用於與該複數個處理節點中之其他處理節點通信之一網路層。每一處理節點亦可包含一記憶體,該記憶體儲存在由該至少一個處理器執行時致使該處理節點執行以下各項之指令:使用該網路層接收一處理計劃,分析該處理計劃以判定待執行之一服務及針對該服務所預期之若干個輸入,及執行該服務。在此等實施方案中,該處理計劃可定義包括該複數個處理節點之一子組之一處理樹,該處理樹具有自該樹之根至一最終層級之單向通信,且下一節點可執行由該處理計劃指示之一服務。在某些實施方案中,作為執行該服務之部分,該下一節點可起始另一處理計劃之執行,該另 一處理計劃將一輸出提供至該至少一個處理節點之子系,該子系由處理樹判定。
在某些實施方案中,該分散式處理系統亦包含一根節點,且該根節點包含:至少一個處理器;一網路層,其用於與該複數個處理節點通信;及一記憶體,其儲存指令。該等指令在由該至少一個處理器執行時可致使該根節點:選擇處理計劃,且使用網路層將該處理計劃發送至下一節點,該下一節點係該處理樹中之根節點之一子系。在某些實施方案中,作為分析該處理計劃之部分,該處理節點包含致使該處理節點判定待執行之一部分服務之指令,在預期輸入到達時對該等輸入執行該部分服務,及使用該部分服務之輸出作為該服務之輸入。在某些實施方案中,作為執行該服務之部分,該記憶體進一步包含致使該處理節點判定在接收到該預期數目個輸入中之一第一輸入之前是否已歷時一預定時間量,及執行該服務而不接收該第一輸入。
在另一態樣中,其上記錄及體現有指令之一有形電腦可讀儲存媒體在由一電腦系統之一或多個處理器執行時致使該電腦系統執行先前所闡述之方法中之任一者。
本文中所闡述之標的物之實施方案中之一或多者可經實施以便實現下列優勢中之一或多者。作為一項實例,應用邏輯可與網路通信解耦合,從而允許處理計劃為可攜的及易於升級的。該解耦合達成節點之間的單向通信,因此一節點並不經受如同雙向通信(諸如遠端程序呼叫)一般來自所呼叫節點之一回應之一等待。該等處理計劃亦可係動態的,定製成特定應用,且允許在一階層式分散系統中之交替流動。舉例而言,一分散式處理系統可針對一請求在請求時選擇一處理計劃,使得該系統在選擇一處理計劃之前計及系統參數(諸如負載)及未投入運轉之節點。該系統亦可在選擇一處理計劃之前考量請求之類型。藉由執行用於處置丟失但預期之輸入之一嵌套式處理計劃,該處 理計劃本身可允許用於慢速或不可用的處理節點。某些實施方案可具有最佳化,諸如在傳播處理計劃時減小其大小,及在接收輸入時執行部分方法。此外,由於處理計劃包含針對其發生下一處理但並非如何與接下來的一(或多個)處理節點通信之指令,因此可使用不同網路通信協定在系統之間無改變地轉移該等處理計劃,且可在不重新編譯或其他改變之情況下使用經升級之通信協定。
在隨附圖式及下文說明中陳述一或多個實施方案之細節。根據說明書及圖式,以及根據申請專利範圍,將顯而易見其他特徵。
100‧‧‧系統/分散式處理系統/分散式系統
120‧‧‧根節點
123‧‧‧處理器
124‧‧‧記憶體/電腦記憶體
125‧‧‧中央處理計劃器/處理計劃執行器
126‧‧‧使用者介面
128‧‧‧中央處理計劃器
130‧‧‧處理計劃/處理計劃程式庫
140‧‧‧服務
150‧‧‧處理節點
153‧‧‧處理器
154‧‧‧記憶體/電腦記憶體
155‧‧‧處理計劃執行器
160‧‧‧網路
170‧‧‧用戶端
200‧‧‧處理計劃/計劃/查詢計劃
200'‧‧‧查詢計劃
205‧‧‧步驟/操作或步驟
210‧‧‧服務或方法
215‧‧‧指示
220‧‧‧先前步驟指示/指示
225‧‧‧指示
250‧‧‧處理樹
300‧‧‧過程
400‧‧‧過程
500‧‧‧處理計劃/計劃/查詢計劃
500'‧‧‧計劃/處理計劃/輸出及處理計劃
550‧‧‧處理樹
600‧‧‧計劃/處理計劃/嵌套式計劃
620‧‧‧輸入
650‧‧‧處理樹
652‧‧‧原始節點A
800‧‧‧處理計劃
800b‧‧‧經剪除計劃
800c‧‧‧經剪除計劃
800d‧‧‧處理計劃
800e‧‧‧處理計劃
850‧‧‧處理樹
1200‧‧‧計算裝置/裝置/泛用電腦裝置
1202‧‧‧處理器/組件
1204‧‧‧記憶體/組件
1206‧‧‧儲存裝置/組件
1208‧‧‧控制器/介面/組件
1210‧‧‧擴充埠/組件
1214‧‧‧擴充埠
1216‧‧‧顯示器
1222‧‧‧桌上型電腦
1230‧‧‧標準伺服器
1236‧‧‧智慧電話
1240‧‧‧外部介面/組件
1244‧‧‧通信介面/組件
1246‧‧‧收發器/組件
1248‧‧‧接收器模組/組件
1300‧‧‧系統/泛用電腦裝置/計算裝置/分散式計算系統/電腦裝置
1352a‧‧‧處理器
1352n‧‧‧處理器
1354‧‧‧記憶體
1356‧‧‧儲存器
1358‧‧‧機架交換器
1358a‧‧‧機架
1358n‧‧‧機架
1362a‧‧‧處理器
1362n‧‧‧處理器
1364‧‧‧記憶體
1366‧‧‧儲存器
1378‧‧‧交換器
1380‧‧‧計算裝置
1380a‧‧‧計算裝置/裝置
1380b‧‧‧裝置
1380c‧‧‧裝置
1380d‧‧‧裝置
圖1圖解說明根據所揭示之標的物之一實例系統。
圖2圖解說明根據所揭示之實施方案針對一分散式處理環境之一處理計劃及對應於該處理計劃之一處理樹之一實例。
圖3圖解說明根據所揭示實施方案用於執行一處理計劃之一流程圖之一實例。
圖4圖解說明根據所揭示實施方案在分散式處理環境中在一節點處執行一服務之一實例之一流程圖。
圖5圖解說明一處理計劃及針對具有部分服務之一處理計劃之一對應處理樹。
圖6圖解說明具有一嵌套式計劃之圖5之處理計劃及一對應處理樹。
圖7圖解說明根據所揭示實施方案取消複製式節點以達成低延時之一處理計劃及一對應處理流。
圖8圖解說明另一處理計劃及對應處理流。
圖9至圖11圖解說明在處理計劃流動通過處理節點時根據圖8之處理計劃之步驟的剪除。
圖12展示可用於實施所闡述技術之一電腦裝置之一實例。
圖13展示可用以實施所闡述技術之一分散式電腦裝置之一實例。
在各圖式中,相同之元件符號指示相同之元件。
圖1係根據一實例實施方案之一分散式處理系統100之一方塊圖。系統100可用於使用本文中所闡述之技術來實施一分散式處理系統。圖1中之系統100之繪示闡述為處理來自一用戶端之請求之一分散式處理系統。可使用所闡述技術之其他組態及應用。舉例而言,該請求可源自另一伺服器,源自一批次工作,或源自與分散式處理系統100通信之一使用者終端機。
分散式處理系統100可包含根節點120及與根節點120通信之複數個處理節點150。根節點120及處理節點150可係採取若干個不同裝置之形式之計算裝置,舉例而言一標準伺服器、一群組此等伺服器或一機架伺服器系統。另外,根節點120及處理節點150可在一個人電腦中實施,舉例而言一膝上型電腦。根節點120及處理節點150可係電腦裝置1300之實例,如圖13中所繪示。
根節點120可包含一或多個處理器123,該一或多個處理器經組態以執行一或多個機器可執行指令或軟體片段、韌體片段或其一組合。根節點120可包含一作業系統(未展示),及經組態以暫時地、永久地、半永久地或其一組合地儲存一或多個資料片段之一或多個電腦記憶體124(舉例而言,一主記憶體)。該記憶體可包含以可由處理器123讀取及/或執行之一格式來儲存資訊之任何類型之儲存裝置。記憶體124可包含揮發性記憶體、非揮發性記憶體或其一組合,且儲存在由處理器123執行時執行某些操作之模組。在其他實施方案中,該等模組可儲存於一外部儲存裝置(未展示)中且載入至記憶體124中。該等模組可包含處理計劃執行器125、使用者介面126及中央處理計劃器 128。使用者介面126可使得根節點120能夠接收請求以供處理。舉例而言,請求可係由用戶端170、由另一伺服器系統、由一批次工作或由分散式系統100之一使用者提交。使用者介面126亦可允許分散式系統100將結果或一顯示提供給請求者。中央處理計劃器128可使得根節點120能夠分析該請求及(舉例而言)自處理計劃程式庫130選擇適合於該請求之一處理計劃。處理計劃執行器125可允許根節點120分析選定處理計劃,且然後將該選定計劃發送至處理節點150中之一或多者。儘管在圖1中展示為一單獨節點,但根節點120可係處理節點150中之一者。換言之,處理節點150中之任一者可被視為經組態以接收及分析來自一使用者之請求之一根節點120,以選擇一適當處理計劃來伺服該請求,及將該選定處理計劃傳遞至一或多個處理節點150以供執行。
系統100亦可包含若干個處理節點150。處理節點150可係一單個計算裝置或具有一或多個計算裝置之一分散式系統,該等計算裝置各自具有其自身的處理器及記憶體。構成處理節點150之計算裝置之數目可根據系統需要而變化。處理節點150中之每一者可包含一或多個處理器153,該一或多個處理器經組態以執行一或多個機器可執行指令或軟體片段、韌體片段或其一組合。每一處理節點150亦可包含一作業系統(未展示),及經組態以暫時地、永久地、半永久地或其一組合地儲存一或多個資料片段之一或多個電腦記憶體154(例如一主記憶體)。記憶體154可包含以可由處理器153讀取及/或執行之一格式來儲存資訊之任何類型之儲存裝置,包含揮發性記憶體、非揮發性記憶體或其一組合。一處理節點150亦可包含一或多個服務140。服務140可係可由處理節點150執行之方法或功能。舉例而言,服務140(1)可讀取來自一資料庫之記錄,服務140(2)可將記錄寫入至一日誌,服務140(3)可產生隨機數字等。每一處理節點150亦可包含一處理計劃執 行器155。處理計劃執行器155可包含允許處理節點150與分散式處理系統100中之其他節點通信之一網路層。處理計劃執行器155亦可在必要時自其他節點接收處理計劃,判定執行該處理計劃之哪一步驟,判定調用服務140中之哪一者,判定來自該服務中所使用之先前步驟之輸入的數目,在適當時間調用該服務,及將該處理計劃及服務之輸出發送至分散式處理系統100中之其他節點。因此,儘管處理計劃130係網路獨立的,但處理計劃執行器155可藉助一特定網路通信協定來工作。
根節點120可與用戶端170通信,且根節點120及處理節點150可經由網路160中之一或多者而彼此通信。舉例而言,網路160可係網際網路,或網路160可係一有線或無線區域網路(LAN)、廣域網路(WAN)等,使用(舉例而言)閘道裝置、橋接器、交換器及/或諸如此類來實施。經由網路160,根節點120可與用戶端170通信及將資料傳輸至/自用戶端170,且根節點120及處理節點150可彼此通信及在彼此之間傳輸資料。
圖2圖解說明根據所揭示實施方案用於一分散式處理環境之一處理計劃200及對應於處理計劃200之一處理樹250之一實例。處理計劃200包含一系列操作或步驟205。每一步驟可包含一服務或方法210,及執行該服務之處理節點之一指示215。服務表示應用或商務邏輯,且可包含一特定節點可執行之任何功能或方法。在圖2之實例中,服務包含:GetRand(),其產生一隨機數字;Average(),其計算一組數字之平均值;Median(),其計算一組數字之中位數;及Max(),其計算一組數字之最高數字且針對顯示該最大數字之一顯示裝置產生輸出。
執行該步驟中所識別之服務之節點之指示215可係針對實體節點之一位址或其他識別符,或該指示可包含一名稱服務。一名稱服務將 一文數字串映射至實體節點,類似於映射至一特定網路位址之一URL。該名稱服務允許處理計劃為泛型的,以使得可僅藉助對映射之一改變而將該計劃轉移至另一系統。在某些實施方案中,可透過每一節點處之處理計劃執行器來儲存或存取映射。在某些實施方案中,可將數個處理節點映射至一單個名稱,且在處理計劃之一特定步驟中使用該單個名稱可導致在數個處理節點中之每一者處執行該特定步驟。
處理計劃可定義一處理樹,其中每一步驟表示該處理樹之一層級。不包含先前步驟之一指示之步驟可視為該樹之第一層級。舉例而言,處理計劃200定義圖2中所圖解說明之處理樹250。該處理計劃可以一單向方式自處理樹之根傳播至該樹之最終層級。舉例而言,若已在該樹之其他層級中在其他節點處獲得及處理資訊之後一處理計劃要求將資訊收集在根節點處,則處理計劃可將根節點識別為該樹之最終層級中之一節點。否則,根節點可不具有自該樹中之其他節點往回接收資訊之一機會。
處理計劃200之某些步驟205可包含提供在該步驟中所使用之輸入之一或多個先前步驟之一指示220。在某些實施方案中,步驟205可儲存為一陣列,且指示220可係進入該陣列中之一索引。在某些實施方案中,步驟205中之每一者可與一識別符相關聯,且指示220可係相關聯識別符中之一者。所指示之先前步驟可提供將用作一特定步驟之輸入之輸出。舉例而言,在圖2中,步驟1使用步驟0之輸出作為輸入,且步驟3使用步驟1及2之輸出作為輸入。由於計劃200之步驟0包含三個處理節點,因此計劃200之步驟1之節點(例如,節點D)可在進展之前預期三個輸入。處理樹250以視覺方式繪示此情形,如同節點D繪示有三個輸入。
可自一開始節點或根節點調用不具有先前步驟之一指示220之一步驟(諸如圖2中之步驟0)。儘管圖2中之僅一個步驟缺乏前一步驟指 示220,但該處理計劃中之兩個或兩個以上步驟可缺乏指示220。在某些實施方案中,根節點可同時地調用缺乏前一步驟指示220之步驟中之每一者。儘管處理計劃200闡述用以實施該計劃之一流或處理樹,但處理計劃200並未指示該等節點如何彼此通信。舉例而言,在當前的分散式處理系統中,若在節點A處之服務需要調用節點D上之一服務,則節點A處之服務包含用以遠端調用該服務之碼,諸如遠端程序呼叫。不同於此等習用方法,由處理計劃200使用之服務無需包含遠端程序呼叫或任何其他網路通信碼。如上文所闡述,該分散式處理環境中之節點之間的通信可由每一節點處之一處理計劃執行器促進,諸如圖1之處理計劃執行器155。該處理計劃執行器可包含判定節點如何通信之一網路通信層。因此,儘管處理計劃200指示節點A應將輸出發送至節點D及E,但其不應提供關於此如何完成之導引。這種配置允許分散式處理系統100分離應用邏輯與網路通信協定。
圖2之查詢計劃200示範一查詢計劃,其中藉由指示將輸入提供至一步驟之步驟來為處理樹之邊緣編碼。在某些實施方案中,諸如圖2之查詢計劃200',可將邊緣作為輸出而非輸入來編碼。舉例而言,步驟0可包含節點A、B及C之輸出轉至步驟1及2或至節點D及E之一指示225。因此,在某些實施方案中,查詢計劃執行器可使用指示225來判定將查詢計劃發送至何處。在此等實施方案中,一查詢計劃執行器仍可藉由判定發送輸出至當前步驟之步驟數目及在彼等步驟中識別之節點之數目來判定預期輸入之數目。
圖3圖解說明根據所揭示實施例用於執行一處理計劃之一過程300之一流程圖之一實例。圖3中展示之過程300可至少部分地如圖1中所展示由根節點120及處理節點150執行。過程300可以根節點選擇一處理計劃開始(305)。在某些實施方案中,該根節點可包含一模組,諸如圖1之中央處理計劃器125,其挑選適合於該請求之一處理計劃。 例如,該根節點可檢驗該請求之屬性,及匹配該等屬性與一適當的處理計劃。基於該請求之屬性來選擇一處理計劃可使得根節點基於系統之負載及/或狀態或所請求之資料類型來修整針對一特定顧客之處理。舉例而言,一特定顧客可具有一服務位準協議,其與來自其他顧客之請求相比,為一特定顧客提供對請求之一較快回應時間。相應地,在根節點接收與該特定顧客相關聯之一請求時,根節點可選擇提供優於其他計劃之改良延時之一處理計劃。或者,該根節點可存取至指示特定節點正忙或以其他方式不可用之資訊。相應地,該根節點可選擇最小化或消除彼等節點之使用之一處理計劃。作為另一實例,根節點可判定該請求涉及一特定種類之資料並基於此來挑選一計劃。舉例而言,該請求可係以分類為基礎,以使得根節點可判定該請求是針對一文件類型、一音頻類型還是一影像類型,並針對文件挑選一個處理計劃、針對音頻挑選另一者及針對影像挑選再一者。或者,該根節點可判定該請求關於使得快取處理更合意的特性,且因此選擇包含具有經快取結果之處理節點之一處理計劃。上文呈現一根節點可如何選擇一處理計劃之若干實例,且實施方案可使用其他屬性來選擇一適當的處理計劃。受益於此揭示內容,其他實例將顯而易見。
在選擇一處理計劃之後,根節點可將處理計劃發送至在處理計劃之第一步驟或前幾個步驟中識別之處理節點(310)。該前幾個步驟可係不具有先前步驟之指示的步驟,諸如圖2中之計劃200之步驟0。由於前幾個步驟並不包含待等候之來自先前步驟之輸入,因此在前幾個步驟中指示之節點可立即開始處理,且根節點可將處理計劃發送至在此等步驟中指示之節點。在某些實施方案中,根節點可將處理計劃同時發送至前幾個步驟中所指示之節點,以使得每一節點可開始其處理。藉由使用圖2之實例,根節點可將處理計劃及(視情況)來自請求之資訊發送至節點A、B及C中之每一者,此乃因此等節點係在處理計 劃200之步驟0中指示。
該根節點可包含一處理計劃執行器,其控制訊息及其他資訊至分散式系統中之其他節點之發送及接收來自該等其他節點之訊息。該處理計劃執行器可包含一網路層,該網路層具有允許根節點將處理計劃及其他資訊發送至處理節點之協定及功能。舉例而言,處理計劃執行器可使用使用者資料報協定(UDP)、傳輸控制協定(TCP)、串流控制傳輸協定(SCTP)、高速輸送協定(XTP)等以將處理計劃發送至處理節點。若一系統管理者想要升級系統以使用一不同的網路協定,舉例而言從UDP改變至SCTP,則系統管理者可升級根節點及處理節點上之處理計劃執行器以使用新版本,但將無需對處理計劃作出改變或重新編譯該等處理計劃。
在接收一處理計劃之後,每一處理節點可隨之執行在該處理計劃中針對該節點識別之服務或方法(315)。藉由使用圖2作為一實例,節點A、B及C可開始隨機數字產生。在某些實施方案中,除了將處理計劃發送至處理節點外,根節點亦可將原始處理請求之全部或部分或者一額外參數(諸如一種)提供給節點A、B及C供用於執行該服務。執行該服務可包含多個任務,如下文關於圖4所闡釋。
一旦一處理節點已完成其服務之執行,則處理節點可使用該處理計劃來識別該處理計劃中之接下來的一或多個步驟(320)。該等接下來的步驟可係該計劃中使用剛剛執行之服務之輸出作為輸入之步驟。舉例而言,該處理計劃可包含作為一特定步驟之輸入之步驟識別符。因此,一處理節點可查找包含其剛剛完成之步驟之識別符之步驟。若不存在任何步驟使用該服務之輸出作為輸入,則處理計劃在涉及到處理節點時即完成(235,是)。其他處理節點若被處理樹要求則可繼續執行服務。舉例而言,若圖2之處理計劃200並不包含步驟3,則作為步驟1之部分之節點D可完成其服務,同時作為步驟2之部分之 節點E仍執行其服務。若該處理節點的確識別接下來的幾個步驟,則其可將處理計劃及輸出發送至該接下來的幾個步驟中所識別之處理節點(330)。舉例而言,在圖2中,步驟1及2使用步驟0之輸出作為輸入。因此,當節點A完成其服務之處理時,其可判定接下來的步驟為步驟1及2。相應地,節點A可將一訊息發送至節點D及E。該訊息可含有該處理計劃及來自A之輸出(例如,一隨機數字)。類似地,當節點F已完成其服務(在步驟3中)時,節點F可判定無任何步驟將步驟3識別為提供輸入,且因此該計劃已完成。因此,作為完成該服務之一結果,節點F可不發送處理計劃或任何訊息。
圖4圖解說明根據所揭示實施方案用於在分散式處理環境中之一節點處執行一服務之一過程400之一流程圖之一實例。一處理節點可執行過程400作為圖3之步驟315之部分。過程400可係針對一特定步驟執行,該處理計劃之該特定步驟係該處理節點已被識別出且被請求執行之步驟。作為執行該服務之部分,該處理節點可判定是否需要輸入(405)。舉例而言,該處理節點之一處理節點執行器可查找該處理計劃之特定步驟中識別先前步驟之一輸入敍述。在圖2之實例中,步驟0不識別任何輸入。因此,執行步驟0之服務之節點A、B及C將判定無需任何輸入(405,否)。相應地,節點A、B及C可無延時地執行該特定步驟之服務(440)。亦於圖3之實例中,步驟2已將步驟0識別為提供輸入。因此,節點E可判定需要輸入(405,是)。
若針對該特定步驟指示輸入(405,是),則節點將接收該輸入(410)。在某些實施方案中,可將該輸入與來自該處理樹中之一先前處理節點之處理計劃一起發送。在某些實施方案中,可獨立於處理計劃來發送該輸入,且可在晚於該處理計劃之一時間處發送該輸入。當該處理節點接收該輸入時,處理計劃執行器可判定該特定步驟是否包含一部分服務(415)。一部分服務係可在輸入到達時在於主服務中使 用該輸入之前對該輸入執行之一服務或方法。作為一實例,在圖5中所圖解說明之處理計劃中,步驟3包含在由log()服務使用該輸入之前自該輸入提取資訊之一部分服務。當該特定步驟包含一部分服務時(415,是),處理節點可對該輸入執行該部分服務(420)。
該處理節點可判定是否已接收所有預期輸入(425)。舉例而言,在圖5中,節點D自步驟0、1及2接收輸入。因此,D期望接收三個輸入。在某些實施方案中,查詢計劃500可形成有兩個步驟,其中步驟0識別節點A、B及C,類似於圖2之查詢計劃200之步驟0及1。在此一查詢計劃中,由於步驟0包含三個處理節點,因此節點D仍期望接收三個輸入,節點A、B及C中之每一者一個。若處理節點尚未接收到預期輸入(425,否),則處理節點可視情況判定是否已歷時一預定時間量(430)。舉例而言,此可發生於一節點離線、忙或出於某一其他原因而慢時。為判定是否已歷時一預定時間量,處理節點可使用一計時器,舉例而言,當在步驟410中接收一第一輸入時開始。若該計時器尚未期滿,舉例而言若尚未到達該預定時間(430,否),則處理節點可繼續等待輸入(410)。儘管圖4中未繪示,但該處理節點可週期性地檢查計時器,或時間之期滿可致使處理節點執行步驟430,因此處理節點可偵測預定時間之結束。若該處理節點在一預定時間後仍未接收到預期輸入(430,是),則處理節點可藉助其已接收之輸入來開始針對特定步驟之服務(435)。在允許以少於期望數目個輸入來進行之實施方案中,可寫入該服務以允許用於丟失的輸入。舉例而言,該服務可包含輸出被污染之一指示,可將一錯誤寫入至一日誌,或以其他方式通知一使用者一或多個輸入丟失,或該服務可調用如下文更詳細闡釋之另一處理計劃(例如,一嵌套式計劃)。若該處理節點並不執行步驟430且並未接收所有預期輸入(425,否),則處理節點可繼續等待預期輸入到達,且在一輸入到達時繼續進行步驟410。
若處理節點已接收預期輸入(425,是),則該處理節點可執行在該特定步驟中識別之服務(440)。在某些實施方案中,處理計劃執行器可在執行服務之前對輸入執行類型檢查。若類型並不匹配,則處理計劃執行器可產生一警示或一日誌訊息,可忽略該輸入及藉助部分輸入來執行該服務(類似於步驟435),可使用一空值(NULL)指標作為丟失的輸入,或可為丟失的輸入使用一預設值或一組值。在處理節點已藉助所有預期輸入(440)或不藉助至少一個輸入(435)完成服務之執行之後,處理節點可判定該特定步驟是否包含複製式節點(445)。一分散式系統可在低延時具有回應於請求之優先權時使用複製式節點。舉例而言,三個分散式處理節點可含有相同資料,因此對三個節點中之每一者執行之一服務將提供相同答案。重視低延時之一請求可將同一請求發送至三個不同節點,且僅使用第一節點之輸出而完成。圖7圖解說明具有複製式節點之一處理計劃及一對應處理流程之一實例。如圖7中所圖解說明,將步驟0之節點A、B及C識別為複製式的。節點A、B及C中之每一者在大約相同時間開始readEvents()服務,但節點C首先完成。因此,節點C將處理計劃發送至節點D,且將一訊息發送至節點A及B,致使節點A及B取消readEvents()服務。因此,節點A及B並不將結果或處理計劃發送至節點D。因此,返回至圖4,若該服務完成且特定步驟具有複製式節點(445,是),則處理節點可將取消該一或多個複製式節點上之服務之執行的一訊息發送至彼等節點。若該特定步驟並不包含複製式節點(445,否)或在已發送該等取消訊息之後,則過程400完成。儘管在圖3及圖4中以一特定次序繪示,但過程300及400之步驟無需以所展示之次序執行。
如先前提及,一處理節點可調用一嵌套式處理計劃。舉例而言,當一處理節點並不具有其完成該服務所需要之資訊時,可使用一嵌套式處理計劃。舉例而言,圖5之處理計劃500請求節點A、B及C中 之每一者讀取來自一快取之記錄,且將該等記錄作為輸入發送至節點D。節點D可自輸入提取資訊,該等資訊為節點A、B及C之輸出,且根據該三個輸入形成一日誌記錄。然而,若節點A不能在該快取中定位到事件,則其可調用一嵌套式處理計劃以自磁碟檢索該等事件並將其放置於快取中。該嵌套式計劃可將邊緣自處理樹550中之A替換至D。
圖6圖解說明具有由節點A起始之一嵌套式計劃600之圖5之處理計劃500,及一對應處理樹650。在圖6之實例中,在652處之節點A可判定其不能完成其服務。舉例而言,作為readCache()服務之部分,節點A可判定快取為空的。相應地,節點A可調用一嵌套式處理計劃(諸如處理計劃600)以自磁碟擷取記錄。節點A可藉由將處理計劃600附加至計劃500從而形成處理計劃500'來調用嵌套式計劃。在此實例中,節點A變成處理計劃600之根節點,且將計劃500'發送至節點E。節點E可在不等待輸入之情況下執行readDisk()服務,此乃因未指示任何輸入。該readDisk()服務可自磁碟擷取記錄。節點E可將輸出及處理計劃500'發送至節點A。節點A可執行一updateCache()服務以將該等記錄放置於快取中,以使得載入該等記錄供用於進一步處理需要。由於任何步驟皆不使用來自步驟5之輸入,處理計劃500'之此部分完成。
節點E亦將其輸出及處理計劃500'發送至節點D。在形成處理計劃500'時,節點A把將輸入發送至節點D之責任委派給節點E。為反映此委派,在處理計劃500'中將針對步驟3之輸入620自「0,1,2」改變至「4,1,2」。改變節點D之輸入實現藉助嵌套式計劃將邊緣自原始節點A(652)替換至節點D。因此,藉由使用一嵌套式處理計劃,節點D繼續接收三個期望輸入,且處理計劃500繼續在節點D處而不知曉該嵌套式計劃。
在圖6之實例中,節點D接收查詢計劃之兩個版本。節點D接收來 自節點B及C之計劃500,及來自節點A之計劃500'。然而,兩個計劃的一致之處為,在每一計劃中D皆期望三個輸入。因此,計劃之差異對節點D而言並不重要。此乃因節點D並不關心已經執行之計劃之步驟,舉例而言在處理樹650中位於其上方之步驟。因此,如圖6中所示範,只要該嵌套式計劃替換處理樹中之一個邊緣且與原始計劃一致,便可將諸如計劃600之嵌套式計劃附加至查詢計劃而不破壞樹之剩餘部分。
儘管迄今為止係闡述在節點之間發送整個處理計劃,但在某些實施方案中,每一處理節點可將計劃之一部分發送至接下來的一或多個節點。舉例而言,根節點可以反向拓撲次序將處理計劃之步驟分類,以使得第一步驟(例如,無輸入之步驟)出現在列表最後處且最終節點首先出現。圖8圖解說明以反向拓撲次序分類之一處理計劃800以及對應處理樹850之一實例。如所圖解說明,節點F表示該計劃中之一終端節點,且因此首先出現在分類列表中。將輸入提供至節點F之節點D及E接下來的出現於該分類列表中,且節點A、B及C出現在最後。對於以反向拓撲次序之處理計劃800而言,根節點可將計劃在發送至接下來的節點(在此實例中,節點A、B及C)之前剪除該計劃。
舉例而言,在將處理計劃發送至一特定節點之前,根節點可自處理計劃之端部處剪除出現在該特定節點之後的任何步驟。由於該處理計劃為前瞻性的,因此在以反向拓撲次序分類時該特定節點不再需要出現在該特定節點之後的步驟以完成處理計劃之執行。在圖8之實例中,在步驟0之後不出現任何步驟,其中步驟0含有節點A,因此根節點可將整個處理計劃800發送至節點A。但根節點可在將處理計劃發送至節點B之前自該處理計劃剪除步驟0,此乃因在反向拓撲列表中步驟0發生在步驟1之後。圖9圖解說明根節點可發送至節點B之經剪除計劃800b。類似地,該根節點可將經剪除計劃800c發送至節點 C,該經剪除計劃已移除步驟1及0。節點C無需知曉節點A及B以執行其任務及判定將其輸出發送至何處。
在完成節點C處之服務之後,舉例而言,節點C可進一步剪除該處理計劃,發送所需步驟以完成。舉例而言,節點C可將處理計劃800d發送至節點D且將800e發送至節點E,如圖10中所圖解說明。在圖10之實例中,節點E接收三個輸入,及因此三個處理計劃。節點E可忽略其接收之處理計劃之第二及第三複本。為完成該實例,當節點E完成其服務之處理時,其可剪除該處理計劃,以使得僅將該處理計劃之一個步驟發送至節點F,如圖11中所圖解說明。如所圖解說明,每次轉發該處理計劃時,計劃本身變得更小,在傳輸期間使用更少記憶體。儘管此記憶體節省對小計劃而言似乎微不足道,但對於大型複雜處理計劃或具有諸多(例如,數以百計或數以千計)節點之分散式系統而言該等節省可係顯著的。
當然,在某些實施方案中,可以升序拓撲次序分類該處理計劃。在此等實施方案中,每一節點處之處理計劃執行器可自處理計劃之頂部而非端部剪除。在任一方法中,分散式系統皆可減少用於輸送處理計劃之位元組。而且,如圖8至圖11圖解說明,一處理計劃可為每一步驟指定一個節點。因此,儘管圖8之處理樹850與圖2之處理樹250看起來相同,但處理計劃200及800不同之處為每一步驟中指定的節點之數目。然而,剪除可針對任一類型之處理計劃而發生。
圖12展示一泛用電腦裝置1200之一實例,該泛用電腦裝置可係圖1之系統100及/或用戶端170,其可與本文中所闡述之技術一起使用。計算裝置1200意欲呈現各種實例性形式之計算裝置,諸如膝上型電腦、桌上型電腦、工作站、個人數位助理、蜂巢式電話、智慧電話、平板電腦、伺服器其其他計算裝置,包含隨身裝置。此處展示之組件、其連接及關係以及其功能僅意欲為實例,且不意欲限制此文件 中闡述及/或主張之本發明之實施方案。
計算裝置1200包含經由一介面1208連接之一處理器1202、記憶體1204、一儲存裝置1206及擴充埠1210。在某些實施方案中,計算裝置1200可包含經由介面1208連接之收發器1246、通信介面1244及一GPS(全球定位系統)接收器模組1248以及其他組件。裝置1200可透過通信介面1244以無線方式通信,該通信介面可在必要時包含數位信號處理電路。組件1202、1204、1206、1208、1210、1240、1244、1246及1248中之每一者可安裝於一共同母板上或以其他適當方式安裝。
處理器1202可處理用於在計算裝置1200內執行之指令,包含儲存於記憶體1204中或儲存裝置1206上以針對一外部輸入/輸出裝置上之一GUI(諸如顯示器1216)顯示圖形資訊之指令。顯示器1216可係一監視器或一平板觸控顯示器。在某些實施方案中,可適當地使用多個處理器及/或多個匯流排以及多個記憶體及多種類型之記憶體。而且,可連接多個計算裝置1200,其中每一裝置提供必要操作之部分(例如,作為一伺服器組合、一群組刀片伺服器或一多處理器系統)。
記憶體1204儲存計算裝置1200內之資訊。在一項實施方案中,記憶體1204係一或多個揮發性記憶體單元。在另一實施方案中,記憶體1204係一(或多個)非揮發性記憶體單元。記憶體1204亦可係另一形式之電腦可讀媒體,諸如一磁碟或光碟。在某些實施方案中,記憶體1204可包含透過一擴充介面提供之擴充記憶體。
儲存裝置1206能夠為計算裝置1200提供大量儲存。在一項實施方案中,儲存裝置1206可係或含有一電腦可讀媒體,諸如一軟磁碟裝置、一硬磁碟裝置、一光碟裝置或一磁帶裝置、一快閃記憶體或其他類似固態記憶體裝置或一裝置陣列,包含在一儲存區域網路中之裝置或其他組態。一電腦程式產品可有形地體現於此一電腦可讀媒體中。該電腦程式產品亦可含有在執行時執行諸如上文所闡述之方法的一或 多個方法之指令。電腦可讀或機器可讀媒體係一儲存裝置,諸如記憶體1204、儲存裝置1206或處理器1202上之記憶體。
介面1208可係一高速控制器,其管理計算裝置1200之頻寬密集型操作,或可係一低速控制器,其管理較低頻寬密集型操作,或此等控制器之一組合。一外部介面1240可經提供以便達成裝置1200與其他裝置之近域通信。在某些實施方案中,控制器1208可耦合至儲存裝置1206及擴充埠1214。可包含各種通信埠(例如,USB、藍芽、乙太網路、無線乙太網路)之擴充埠可(例如)透過一網路配接器耦合至一或多個輸入/輸出裝置,諸如一鍵盤、一指標裝置、一掃描器或一網路裝置(諸如一交換器或路由器)。
如圖中所展示,可以若干種不同形式來實施計算裝置1200。舉例而言,可將其實施為一標準伺服器1230或在此等伺服器之一群組中多次實施。其亦可實施為一機架伺服器系統。另外,其可實施於一個人電腦中,諸如一桌上型電腦1222或智慧電話1236。一完整系統可由彼此通信之多個計算裝置1200組成。其他組態亦為可能的。
圖13展示一泛用電腦裝置1300之一實例,該泛用電腦裝置可係圖1之系統100,其可與本文中所闡述之技術一起使用。計算裝置1300意欲表示各種實例性形式之大型資料處理裝置,諸如伺服器、刀片伺服器、資料中心、主機及其他大型計算裝置。計算裝置1300可係具有多個處理器之一分散式系統,可能包含網路附接儲存節點,其藉由一或多個通信網路而互連。此處展示之組件、其連接及關係以及其功能僅意欲為實例,且不意欲限制此文件中闡述及/或主張之本發明之實施方案。
分散式計算系統1300可包含任何數目個計算裝置1380。計算裝置1380可包含一伺服器或機架伺服器、主機等,其經由一區域或廣域網路、專用光學連路、數據機、橋接器、路由器、交換器、有線或無 線網路等通信。
在某些實施方案中,每一計算裝置可包含多個機架。舉例而言,計算裝置1380a包含多個機架1358a至1358n。每一機架可包含一或多個處理器,諸如處理器1352a至1352n及1362a至1362n。該等處理器可包含資料處理器、網路附接儲存裝置及其他電腦受控裝置。在某些實施方案中,一個處理器可操作為一主機處理器且控制排程及資料分配任務。處理器可透過一或多個機架交換器1358互連,且一或多個機架可透過交換器1378連接。交換器1378可處置多個連接之計算裝置1300之間的通信。
每一機架可包含諸如記憶體1354及記憶體1364之記憶體,及諸如1356及1366之儲存器。儲存器1356及1366可提供大容量儲存且可包含揮發性或非揮發性儲存,諸如網路附加磁碟、軟磁碟、硬磁碟、光碟、磁帶、快閃記憶體或其他類似的固態記憶體裝置,或一裝置陣列,包含一儲存區域網路中之裝置或其他組態。儲存器1356或1366可在多個處理器、多個機架或多個計算裝置之間共用,且可包含儲存可由該等處理器中之一或多者執行之指令的一電腦可讀媒體。記憶體1354及1364可包含(例如)一或多個揮發性記憶體單元、一或多個非揮發性記憶體單元及/或其他形式之電腦可讀媒體,諸如一磁碟或光碟、快閃記憶體、快取、隨機存取記憶體(RAM)、唯讀記憶體(ROM)及其組合。諸如記憶體1354之記憶體亦可在處理器1352a至1352n之間共用。諸如一索引之資料結構可跨越儲存器1356及記憶體1354儲存。計算裝置1300可包含未展示之其他組件,諸如控制器、匯流排、輸入/輸出裝置、通信模組等。
一完整系統(諸如系統100)可由彼此通信之多個計算裝置1300組成。舉例而言,裝置1380a可與裝置1380b、1380c及1380d通信,且此等可統稱為系統100。作為另一實例,圖1之系統100可包含一或多個 計算裝置1300作為根節點120,及一或多個計算裝置1300作為處理節點150。此外,某些計算裝置可位於在地理上彼此接近處,且其他計算裝置可位於在地理上遠離處。系統1300之佈局僅係一實例,且該系統可採取其他佈局或組態。
各種實施方案可包含在一或多個電腦程式中之實施方案,其可在包含至少一個可程式化處理器之一可程式化系統上執行及/或解譯,該至少一個可程式化處理器可出於特殊目的或一般目的而經耦合以自一儲存系統、至少一個輸入裝置及至少一個輸出裝置接收資料及指令,且將資料及指令傳輸至其。
此等電腦程式(亦稱為程式、軟體、軟體應用或程式碼)包含用於一可程式化處理器之機器指令,且可以一高階程序及/或物件導向之程式設計語言及/或以組合/機器語言來實施。如本文中所使用,術語「機器可讀媒體」、「電腦可讀媒體」係指用於將機器指令及/或資料提供至一可程式處理器之任何非暫時性電腦程式產品、設備及/或裝置(例如,磁碟、光碟、記憶體(包含讀取存取記憶體)、可程式邏輯裝置(PLD))。
本文中所闡述之系統及技術可實施於一計算系統中,該計算系統包含一後端組件(例如,作為一資料伺服器)或包含一中間軟體組件(例如,一應用伺服器),或其包含一前端組件(例如,具有一圖形使用者介面或一Web瀏覽器之一用戶端電腦,一使用者可透過該圖形使用者介面或Web瀏覽器與本文中所闡述之系統及技術之一實施方案互動),或此後端、中間軟體或前端組件之任何組合。系統之組件可藉由任何形式或媒體之數位資料通信(例如,一通信網路)而互連。通信網路之實例包含一區域網路(「LAN」)、一廣域網路(「WAN」)及網際網路。
該計算系統可包含用戶端及伺服器。一用戶端與伺服器通常彼 此遠離且通常透過一通信網路互動。用戶端與伺服器之關係係藉助運行於各別電腦上且彼此之間具有一用戶端-伺服器關係之電腦程式而產生。
本文已描述若干實施方案。然而,可在不背離本發明之精神及範疇之情況下做出各種修改。另外,圖中所繪示之邏輯流程並不需要所展示之特定次序或順序次序以達成合意的結果。另外,可提供其他步驟,或可自所闡述之流程消除若干步驟,且可將其他組件添加至所闡述系統或自其移除。相應地,其他實施方案亦在下列申請專利範圍之範疇內。

Claims (27)

  1. 一種分散式處理系統,其包括:一記憶體,其儲存複數個處理計劃,每一處理計劃包含一系列操作,每一操作包含:一服務,及用於執行該服務之複數個處理節點中之至少一者之一第一指示,其中該系列操作中之至少一個操作亦包含表示該系列操作中之另一操作之一輸出之一或多個輸入之一第二指示;該複數個節點中之一第一節點,其中該第一節點包含至少一個處理器及一記憶體,該記憶體儲存在由該至少一個處理器執行時致使該第一節點執行以下各項之指令:自該記憶體選擇一特定處理計劃,及將該特定處理計劃分散至該複數個處理節點中之第二節點,該等第二節點係在該特定處理計劃之至少一個第一操作中識別,該第一操作不具有一先前操作之指示;及該複數個處理節點,每一處理節點包含至少一個處理器及一記憶體,該記憶體儲存在由該至少一個處理器執行時致使該處理節點執行以下各項之指令:接收該複數個處理計劃中之一處理計劃;解譯該所接收處理計劃,及執行在該所接收處理計劃之該第一操作中所指示之該服務。
  2. 如請求項1之系統,該複數個節點中之每一者包含用於在該等處理節點之間傳達該等處理計劃之一網路層。
  3. 如請求項1之系統,其中作為解譯該所接收處理計劃之部分,該複數個處理節點中之每一者經組態以:判定預期數目個輸入,每一輸入係來自一先前操作之一輸出;判定是否已接收到該預期數目個輸入;及在判定已接收到該預期數目個輸入時執行所指示之該服務。
  4. 如請求項3之系統,其中作為解譯該所接收處理計劃之部分,該複數個節點中之每一者進一步經組態以:判定在接收到該預期數目個輸入之前是否已歷時一預定時間量;及在判定已歷時該預定時間量時,執行該等所接收輸入所指示之該服務。
  5. 如請求項3之系統,其中該所接收處理計劃中之該系列操作中之該等操作中之至少一者包含一部分服務,且作為解譯該所接收處理計劃之部分,該複數個節點中之每一者進一步經組態以:使用該等預期輸入中之每一者來執行該部分服務以形成一輸出;及使用該部分服務之該輸出作為對該所接收處理計劃中所指示之該服務之輸入。
  6. 如請求項1之系統,其中該等指令在由該至少一個處理器執行時致使該等第二處理節點執行以下操作:自該第一節點接收該特定處理計劃;執行在該第一操作中所指示之該服務以產生一特定輸出;識別至少一個稍後操作,該至少一個稍後操作識別該第一操作;及將該特定處理計劃及該特定輸出發送至在該至少一個稍後操 作中識別之第三處理節點。
  7. 如請求項6之系統,其中該等指令在由該至少一個處理器執行時致使該等第二處理節點執行以下操作:自該處理計劃移除至少一個操作以產生一經修改處理計劃;及將該經修改處理計劃與該輸出一起發送至該等第三處理節點。
  8. 如請求項6之系統,其中該等第二節點經組態以同時開始該服務之執行。
  9. 如請求項6之系統,其中作為執行在該第一操作中所指示之該服務之部分,該等第二處理節點中之至少一者起始另一處理計劃。
  10. 如請求項9之系統,其中作為起始該另一處理計劃之部分,該等第二處理節點中之該至少一者將額外步驟附加至該特定處理計劃。
  11. 如請求項10之系統,其中作為起始該另一處理計劃之部分,該等第二處理節點中之該至少一者修改該處理計劃中之該稍後操作之該一或多個輸入之該第二指示。
  12. 如請求項1之系統,其中該第一節點經組態以將該處理計劃發送至該等第二節點而不自該等第二節點接收一應答。
  13. 一種電腦實施之方法,其包括:在一處理節點處接收一處理計劃,該處理計劃包含一系列操作,每一操作包含:針對該操作之一服務,及用於執行該服務之一或多個處理節點之一第一指示,其中至少一個操作亦包含前一操作之一第二指示,以使得 該至少一個操作使用該前一操作之一輸出作為輸入;在該處理節點處執行在一特定操作中所指示之該服務;基於該處理計劃來判定下一操作,該下一操作具有該特定操作之一第三指示;及將該處理計劃自該處理節點發送至另一處理節點,該另一處理節點係在該下一操作中識別。
  14. 如請求項13之方法,其中該系列操作係一操作陣列,且該前一操作之該第二指示係進入該陣列中之一索引。
  15. 如請求項13之方法,其中作為執行該服務之部分,該方法進一步包括:判定針對該特定操作之預期量之輸入;等待該預期量之輸入到達;及對該預期量之輸入執行該服務。
  16. 如請求項15之方法,其中該處理計劃包含一部分服務,且該方法進一步包括在執行該服務之前,在一輸入到達該處理節點時對該輸入執行該部分服務。
  17. 如請求項13之方法,其中該處理計劃指定該等處理節點係複製式的且執行該服務進一步包括:在完成該服務之後,取消該服務在該特定操作中所識別之其他處理節點處之該執行。
  18. 如請求項13之方法,其中以反向拓撲次序儲存該處理計劃之該等操作。
  19. 如請求項18之方法,其中該方法進一步包括:在將該處理計劃發送至該另一處理節點之前,自該處理計劃剪除在該下一操作之後發生之操作。
  20. 如請求項13之方法,其中該處理節點將該處理計劃發送至該另 一處理節點,而不期望來自該另一處理節點之作為該另一處理節點執行在該下一操作中所指示之該服務之結果的一回覆。
  21. 如請求項13之方法,其中該處理計劃中之該一或多個處理節點之該第一指示係一命名服務。
  22. 如請求項13之方法,其中該處理計劃之至少一個操作中之該一或多個處理節點之該第一指示表示複數個處理節點。
  23. 一種分散式處理系統,其包括:複數個處理節點,每一處理節點包含:至少一個處理器,一網路層,其用於與該複數個處理節點中之其他處理節點通信;一記憶體,其儲存在由該至少一個處理器執行時致使該處理節點執行以下各項之指令:使用該網路層來接收一處理計劃,分析該處理計劃以判定待執行之一服務及針對該服務所預期之若干個輸入,及執行該服務;其中該處理計劃定義包括該複數個處理節點之一子組之一處理樹,該處理樹具有自該樹之根至一最終層級之單向通信。
  24. 如請求項23之系統,其中該分散式處理系統包含一根節點,該根節點包含:至少一個處理器,一網路層,其用於與該複數個處理節點通信;及一記憶體,其儲存在由該至少一個處理器執行時致使該根節點執行以下各項之指令:選擇該處理計劃, 使用該網路層將該處理計劃發送至下一節點,該下一節點係該處理樹中之該根節點之一子系,其中該下一節點執行由該處理計劃所指示之一服務。
  25. 如請求項23之系統,其中作為執行該服務之部分,至少一個處理節點之該記憶體進一步包含在由該至少一個處理器執行時致使該至少一個處理節點起始另一處理計劃之執行,該另一處理計劃將一輸出提供至該至少一個處理節點之子系,該等子系由該處理樹判定。
  26. 如請求項23之系統,其中作為分析該處理計劃之部分,該記憶體進一步包含在由該至少一個處理器執行時致使該處理節點執行以下各項之指令:判定待執行之一部分服務;在該等預期輸入到達時對其執行該部分服務;及使用該部分服務之輸出作為該服務之輸入。
  27. 如請求項23之系統,其中作為執行該服務之部分,該記憶體進一步包含在由該至少一個處理器執行時致使該處理節點執行以下各項之指令:判定在接收到該預期數目個輸入中之一第一輸入之前是否已歷時一預定時間量;及執行該服務而不接收該第一輸入。
TW102141329A 2012-11-13 2013-11-13 用於分散式系統中線上處理之網路獨立程式設計模型 TWI634774B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201261725702P 2012-11-13 2012-11-13
US61/725,702 2012-11-13
US13/767,286 2013-02-14
US13/767,286 US9185156B2 (en) 2012-11-13 2013-02-14 Network-independent programming model for online processing in distributed systems

Publications (2)

Publication Number Publication Date
TW201433131A TW201433131A (zh) 2014-08-16
TWI634774B true TWI634774B (zh) 2018-09-01

Family

ID=50682765

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102141329A TWI634774B (zh) 2012-11-13 2013-11-13 用於分散式系統中線上處理之網路獨立程式設計模型

Country Status (4)

Country Link
US (4) US9185156B2 (zh)
EP (1) EP2920691B1 (zh)
TW (1) TWI634774B (zh)
WO (1) WO2014078020A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9185156B2 (en) 2012-11-13 2015-11-10 Google Inc. Network-independent programming model for online processing in distributed systems
US9753980B1 (en) * 2013-02-25 2017-09-05 EMC IP Holding Company LLC M X N dispatching in large scale distributed system
US20170048731A1 (en) * 2014-09-26 2017-02-16 Hewlett Packard Enterprise Development Lp Computing nodes
US10382251B2 (en) * 2016-07-29 2019-08-13 Sap Se Transaction execution in multi-tier computing environments
BE1024532B1 (nl) * 2016-09-02 2018-04-03 The Glue Nv Systeem en apparaat voor het verwerken van grote hoeveelheden gegevens
JP7013326B2 (ja) * 2018-05-29 2022-01-31 株式会社日立製作所 情報処理システム、情報処理装置、および情報処理システムの制御方法
CN113391962B (zh) * 2020-03-11 2023-08-15 百度在线网络技术(北京)有限公司 离线数据测试方法、离线数据测试装置和电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1997983A (zh) * 2004-05-21 2007-07-11 Bea系统公司 面向服务的架构
US20070189509A1 (en) * 2006-02-13 2007-08-16 Foody Daniel M Data path identification and analysis for distributed applications
US20110016293A1 (en) * 2009-07-15 2011-01-20 Comm. a l' ener. atom. et aux energies alter. Device and method for the distributed execution of digital data processing operations

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001075679A1 (en) * 2000-04-04 2001-10-11 Metamatrix, Inc. A system and method for accessing data in disparate information sources
US7418470B2 (en) 2000-06-26 2008-08-26 Massively Parallel Technologies, Inc. Parallel processing systems and method
US7010521B2 (en) * 2002-05-13 2006-03-07 Netezza Corporation Optimized database appliance
US7685095B2 (en) * 2003-12-16 2010-03-23 Oracle International Corporation Executing a parallel single cursor model
US7496683B2 (en) 2006-07-27 2009-02-24 International Business Machines Corporation Maximization of sustained throughput of distributed continuous queries
US20090043745A1 (en) * 2007-08-07 2009-02-12 Eric L Barsness Query Execution and Optimization with Autonomic Error Recovery from Network Failures in a Parallel Computer System with Multiple Networks
US9417938B2 (en) * 2009-03-17 2016-08-16 Microsoft Technology Licensing, Llc Remote procedure call chains
CN102440062A (zh) 2010-08-13 2012-05-02 华为技术有限公司 联合会话内的媒体流控制方法及设备
WO2012041388A1 (en) * 2010-10-01 2012-04-05 Telefonaktiebolaget Lm Ericsson (Publ) Generation of a query plan for accessing a database
US9075661B2 (en) 2010-10-20 2015-07-07 Microsoft Technology Licensing, Llc Placing objects on hosts using hard and soft constraints
US8762964B2 (en) 2010-12-17 2014-06-24 Cisco Technology, Inc. Optimizing symbol manipulation language-based executable applications for distributed execution
US20120159424A1 (en) 2010-12-21 2012-06-21 Microsoft Corporation Distributed application manifest
US8538954B2 (en) 2011-01-25 2013-09-17 Hewlett-Packard Development Company, L.P. Aggregate function partitions for distributed processing
US8843633B2 (en) 2011-03-23 2014-09-23 Bmc Software, Inc. Cloud-based resource identification and allocation
US20130013585A1 (en) * 2011-07-08 2013-01-10 Goetz Graefe Hash join and hash aggregation integration system
WO2014062637A2 (en) * 2012-10-15 2014-04-24 Hadapt, Inc. Systems and methods for fault tolerant, adaptive execution of arbitrary queries at low latency
US9185156B2 (en) 2012-11-13 2015-11-10 Google Inc. Network-independent programming model for online processing in distributed systems

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1997983A (zh) * 2004-05-21 2007-07-11 Bea系统公司 面向服务的架构
US20070189509A1 (en) * 2006-02-13 2007-08-16 Foody Daniel M Data path identification and analysis for distributed applications
US20110016293A1 (en) * 2009-07-15 2011-01-20 Comm. a l' ener. atom. et aux energies alter. Device and method for the distributed execution of digital data processing operations

Also Published As

Publication number Publication date
US20170070583A1 (en) 2017-03-09
US20180091607A1 (en) 2018-03-29
EP2920691B1 (en) 2018-10-10
US9843641B2 (en) 2017-12-12
US20140136590A1 (en) 2014-05-15
US9185156B2 (en) 2015-11-10
US9531842B2 (en) 2016-12-27
TW201433131A (zh) 2014-08-16
WO2014078020A1 (en) 2014-05-22
US20160014236A1 (en) 2016-01-14
US10038753B2 (en) 2018-07-31
EP2920691A1 (en) 2015-09-23

Similar Documents

Publication Publication Date Title
TWI634774B (zh) 用於分散式系統中線上處理之網路獨立程式設計模型
US11568404B2 (en) Data monetization and exchange platform
US11144566B2 (en) Distributed balanced optimization for an Extract, Transform, and Load (ETL) job
JP6732798B2 (ja) コンピュートクラスタ内のリソースインスタンスグループの自動スケーリング
US9104572B1 (en) Automated root cause analysis
US9575812B2 (en) Classification based automated instance management
US20180060133A1 (en) Event-driven resource pool management
US8448171B2 (en) Communications between virtual machines that have been migrated
EP3446440B1 (en) Multi-stage network discovery
US10154091B1 (en) Deploying infrastructure units according to resource hosting constraints
US20210405924A1 (en) Proactive Storage Operation Management
US11635994B2 (en) System and method for optimizing and load balancing of applications using distributed computer clusters
US20210397447A1 (en) Automated compliance and testing framework for software development
US20190384634A1 (en) Cloud and datacenter migration wave planning using analytics and flow modeling
JP6305645B2 (ja) ホスト型分析のための動的n次元キューブ
Marosi et al. An adaptive cloud-based IoT back-end architecture and its applications
KR101730508B1 (ko) 스파크 스트리밍 기반 클라우드 서버에서 선별적 i/o 요청 처리 방법 및 장치
RU2721235C2 (ru) Способ и система для маршрутизации и выполнения транзакций
US9413684B2 (en) Provisioning legacy systems network architecture resource communications through a group of servers in a data center
US20220237694A1 (en) Price Superhighway
RU2718215C2 (ru) Система обработки данных и способ обнаружения затора в системе обработки данных
US11522799B1 (en) Dynamically managed data traffic workflows
US20180181914A1 (en) Algorithm monetization and exchange platform
US20120259956A1 (en) System and method for implementing a dynamic change in server operating condition in a secured server network
US20230266997A1 (en) Distributed scheduling in container orchestration engines