專利名稱:一種計算機(jī)處理單元、計算機(jī)網(wǎng)關(guān)、交互式系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計算機(jī)處理單元、計算機(jī)網(wǎng)關(guān)、交互式系統(tǒng),涉及計算機(jī)、網(wǎng)絡(luò)、流媒體等多個技術(shù)領(lǐng)域。
背景技術(shù):
云計算指IT基礎(chǔ)設(shè)施的交付和使用模式,指通過網(wǎng)絡(luò)以按需、易擴(kuò)展的方式獲得所需資源;廣義云計算指服務(wù)的交付和使用模式,指通過網(wǎng)絡(luò)以按需、易擴(kuò)展的方式獲得所需服務(wù)。這種服務(wù)可以是IT和軟件、互聯(lián)網(wǎng)相關(guān),也可是其他服務(wù)。云計算(CloudComputing)是網(wǎng)格計算(Grid Computing )、分布式計算(DistributedComputing)、并行計算(Parallel Computing)、效用計算(Utility Computing)、網(wǎng)絡(luò)存儲(Network StorageTechnologies)、虛擬化(Virtualization)、負(fù)載均衡(Load Balance)等傳統(tǒng)計算機(jī)和網(wǎng)絡(luò) 技術(shù)發(fā)展融合的產(chǎn)物。在云計算系統(tǒng)中執(zhí)行交互式程序的ー個問題在于,交互式程序可能被設(shè)計為僅被用戶在其所運(yùn)行的計算機(jī)上通過本地交互設(shè)備來進(jìn)行交互。亦即用戶的交互行動依賴于本地計算機(jī)上的交互設(shè)備(如鍵盤,鼠標(biāo),顯示器等)。這意味著在特定的時刻,云系統(tǒng)中ー個計算節(jié)點(diǎn)最多只能為單個用戶提供服務(wù)。對大規(guī)模的云計算系統(tǒng)而言,其總建設(shè)成本和單計算節(jié)點(diǎn)的成本密切相關(guān)。通常地,如附圖I所示,硬件設(shè)備的性能/價格比在一定范圍內(nèi)隨著性能的提高而増加,同時,較高的性能也有助于計算節(jié)點(diǎn)能承受程序更嚴(yán)格的性能要求。然而高性能同時也意味著成本的提高,并存在兩個問題1.對于交互式行為的應(yīng)用程序的計算節(jié)點(diǎn)而言,通常程序?qū)?jié)點(diǎn)的計算能力的使用在時間上是不平均的。例如在一個三維建模的應(yīng)用中,用戶輸入數(shù)據(jù)的過程(低計算資源占用)可能占到使用時間的大部分而渲染過程(高計算資源占用)只占短時間,因此多數(shù)時間內(nèi)計算資源被閑置;2.交互式應(yīng)用程序的計算資源使用實際達(dá)不到硬件性能的上限,這在交互式PC游戲中尤其明顯。由于PC游戲往往設(shè)計成在達(dá)到一定的用戶體驗要求時只需消耗一定限度的計算資源,并且往往為了適應(yīng)較多不同型號硬件設(shè)備而限制資源的消耗。因此在現(xiàn)有的云計算服務(wù)體系中,交互式PC游戲的用戶體驗被限制在一定的水平上,因此也就限制的硬件資源的消耗,最終的結(jié)果是,購置更多計算資源所付出的硬件設(shè)備成本被浪費(fèi)。除此之外,單個計算節(jié)點(diǎn)還具有額外的固定成本,例如總線設(shè)備(主板),存儲設(shè)備,電源和外売,以及為了放置計算節(jié)點(diǎn)的空間成本等。可以看到,當(dāng)云計算系統(tǒng)每個用戶的服務(wù)成本和計算節(jié)點(diǎn)的成本相關(guān)時,通過減少單計算節(jié)點(diǎn)的硬件成本的方法能降低的用戶服務(wù)成本是非常有限的。顯然地,有效地下降單用戶成本的方案是使單個計算節(jié)點(diǎn)可以同時為多個用戶服務(wù)。但如前所述,交互式應(yīng)用程序需要獨(dú)占計算節(jié)點(diǎn)上的交互設(shè)備來運(yùn)行。虛擬化(Virtualization)技術(shù)提供了ー個可能的實現(xiàn)方式。然而,虛擬化的問題是,使用這ー技術(shù)將帶來額外的硬件資源的開銷,特別是圖形處理器(GPU)的性能往往會遭到顯著的損失,并存在硬件支持上的缺陷。對于以提供windows應(yīng)用程序為主的云計算服務(wù)系統(tǒng)而言,虛擬化技術(shù)將增加計算節(jié)點(diǎn)上運(yùn)行的windows操作系統(tǒng)數(shù)量進(jìn)而提高授權(quán)費(fèi)用;虛擬化技木本身和windows操作系統(tǒng)的結(jié)合也并不非常成熟。
發(fā)明內(nèi)容
為了解決上述技術(shù)問題,本發(fā)明提供一種計算機(jī)處理單元,介于應(yīng)用程序與系統(tǒng)API或者網(wǎng)絡(luò)之間,其特征在于該處理単元包括ー個函數(shù)地址監(jiān)測模塊,用于檢測內(nèi)存中應(yīng)用程序的函數(shù)地址,以及ー個函數(shù)地址重定向模塊,用于改變應(yīng)用程序的內(nèi)存中存儲的函數(shù)地址,對函數(shù)地址進(jìn)行重定向;以及多個接ロ,用干與實現(xiàn)與計算機(jī)硬件以及API之間的通信。所述處理単元和視頻/音頻壓縮模塊和網(wǎng)絡(luò)模塊相連接,將應(yīng)用程序的界面和渲染數(shù)據(jù)轉(zhuǎn)換成視頻/音頻流,經(jīng)網(wǎng)絡(luò)模塊傳送到互聯(lián)網(wǎng)上的其它終端。 所述重定向模塊通過修改API調(diào)用的參數(shù),進(jìn)而將應(yīng)用程序?qū)δ硞€硬件設(shè)備的訪問轉(zhuǎn)交給ー導(dǎo)出模塊連接的特定的硬件進(jìn)行,從而得到應(yīng)用程序從硬件設(shè)備中輸出的信
o所述處理単元進(jìn)ー步包含多個進(jìn)程,所述進(jìn)程和客戶端連接,由客戶端請求執(zhí)行特定的請求,所述請求是應(yīng)用程序或者發(fā)送或者接收的數(shù)據(jù);所述處理單元將上述請求載入內(nèi)存,在上述請求實際執(zhí)行之前,將重定向模塊加載進(jìn)應(yīng)用程序的進(jìn)程空間,并在應(yīng)用程序進(jìn)程的內(nèi)存空間中修改應(yīng)用程序已載入的執(zhí)行代碼。所述函數(shù)地址重定向模塊為一硬件,其改變函數(shù)的操作系統(tǒng)應(yīng)用程序接ロ API的功能調(diào)用入口位置;當(dāng)應(yīng)用程序執(zhí)行之后,程序調(diào)用操作系統(tǒng)API時,重定向模塊將被修改的函數(shù)地址跳轉(zhuǎn)到重定向模塊所存儲的函數(shù)地址。所述處理單元應(yīng)用于安全網(wǎng)關(guān)的服務(wù)節(jié)點(diǎn)上。本發(fā)明還提供一個基于云計算的遠(yuǎn)程交互式系統(tǒng),其包括終端設(shè)備,web前端、安全網(wǎng)關(guān),其特征在干
所述安全網(wǎng)關(guān)包括ー個或多個服務(wù)節(jié)點(diǎn);
所述服務(wù)節(jié)點(diǎn)進(jìn)一歩包括一處理單元,介于應(yīng)用程序與系統(tǒng)API或者網(wǎng)絡(luò)之間,其特征在于包括ー個函數(shù)地址監(jiān)測模塊,用于檢測內(nèi)存中應(yīng)用程序的函數(shù)地址,以及ー個函數(shù)地址重定向模塊,用于改變應(yīng)用程序的內(nèi)存中存儲的函數(shù)地址,對函數(shù)地址進(jìn)行重定向;以及多個接ロ,用干與實現(xiàn)與計算機(jī)硬件以及API之間的通信;
所述終端設(shè)備首先訪問所述前端,通過驗證后取得連接安全網(wǎng)關(guān)內(nèi)某一服務(wù)節(jié)點(diǎn)的權(quán)限;終端設(shè)備隨后使用這ー權(quán)限和云計算系統(tǒng)內(nèi)特定的服務(wù)節(jié)點(diǎn)連接;在所述安全網(wǎng)關(guān)中,所有應(yīng)用程序的界面和音頻輸出被轉(zhuǎn)換為視頻和音頻流,以及ー個與其相關(guān)的附加信息流,并通過互聯(lián)網(wǎng)傳遞給所述終端設(shè)備。
圖I是大規(guī)模云計算系統(tǒng)的硬件設(shè)備的性能/價格比例示意 圖2是基于云計算節(jié)點(diǎn)的遠(yuǎn)程交互式系統(tǒng)的架構(gòu);圖3是基于云計算節(jié)點(diǎn)的遠(yuǎn)程交互式系統(tǒng)的模塊 圖4是基于云計算節(jié)點(diǎn)的遠(yuǎn)程交互式系統(tǒng)的層次 圖5是微環(huán)境的一種實施方式的示意 圖6是微環(huán)境下重定向示意 圖7是本發(fā)明中鼠標(biāo)信息交互示意 圖8是本發(fā)明中對畫面進(jìn)行流水線處理的示意圖;
圖9是云計算節(jié)點(diǎn)的遠(yuǎn)程交互式系統(tǒng)訪問網(wǎng)絡(luò)文件的示意 圖10是交互信息在不同用戶之間分發(fā)的示意 圖11是本發(fā)明關(guān)于視頻編解碼的示意 圖12是本發(fā)明“展示墻”的示意 圖13是本發(fā)明對有限的矩形范圍內(nèi)接收的鼠標(biāo)操作的處理方式的示意 圖14是使用云計算遠(yuǎn)程交互程序服務(wù)的用戶所執(zhí)行的工作流程 圖15是分布式的計算服務(wù)節(jié)點(diǎn)陣列的部署圖。
具體實施例方式圖2和圖3列出了一個基于云計算節(jié)點(diǎn)的遠(yuǎn)程交互式系統(tǒng)的架構(gòu)。其包括終端設(shè)備,web前端、安全網(wǎng)關(guān)。所述終端設(shè)備可以是PC,移動終端或者電視機(jī)頂盒等任何計算能力足夠勝任解碼標(biāo)清或高清H. 264視頻流的設(shè)備。所述安全網(wǎng)關(guān)包括ー個或多個服務(wù)節(jié)點(diǎn),終端設(shè)備首先訪問云計算的系統(tǒng)的前端,通過驗證后取得連接安全網(wǎng)關(guān)內(nèi)某一服務(wù)節(jié)點(diǎn)的權(quán)限;設(shè)備隨后使用這ー權(quán)限和云計算系統(tǒng)內(nèi)特定的服務(wù)節(jié)點(diǎn)連接。通過ー個特定的由硬件、軟件,或其結(jié)合來實現(xiàn)的平臺或環(huán)境(下面簡稱“微環(huán)境”)來實現(xiàn)上述功能,以windows操作系統(tǒng)為例,可以為其它的windows應(yīng)用程序虛擬其對用戶交互系統(tǒng)的使用,從而使單個運(yùn)行windows操作系統(tǒng)的計算節(jié)點(diǎn)可以同時服務(wù)于多個用戶。相對于其他方案,微環(huán)境有下列優(yōu)勢
微環(huán)境使得多個用戶同時利用計算節(jié)點(diǎn)的資源(包括單個操作系統(tǒng)本身的軟件資源在內(nèi))成為可能。被執(zhí)行的應(yīng)用程序以幾乎原生的方式訪問硬件資源(特別是圖形處理器資源)。微環(huán)境并不改變所執(zhí)行的應(yīng)用程序的ニ進(jìn)制代碼。本發(fā)明中,在服務(wù)節(jié)點(diǎn)內(nèi),ー個微環(huán)境為用戶啟動指定的應(yīng)用服務(wù),所述服務(wù)可以包括應(yīng)用程序在內(nèi)的所有服務(wù),應(yīng)用程序的界面和音頻輸出通過微環(huán)境轉(zhuǎn)換為視頻和音頻流,以及ー個(可選的)數(shù)據(jù)量很小的附加信息流通過互聯(lián)網(wǎng)傳遞給終端。用戶在使用終端設(shè)備上接收到上述視頻和音頻流以及(可選的)附加信息流后,通過設(shè)備的交互硬件(鍵盤,鼠標(biāo),遙控器,游戲控制器等)發(fā)送控制數(shù)據(jù)到計算服務(wù)節(jié)點(diǎn)的微環(huán)境,微環(huán)境將此控制數(shù)據(jù)作為所運(yùn)行的應(yīng)用程序接收的用戶交互數(shù)據(jù)。從而完成了ー個交互的過程。微環(huán)境的實現(xiàn)在操作系統(tǒng)層次,介于應(yīng)用程序與系統(tǒng)API或者網(wǎng)絡(luò)之間,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,雖然這里使用了 “微環(huán)境”這ー術(shù)語,但是應(yīng)當(dāng)將其擴(kuò)展地理解為能夠由硬件、軟件來實現(xiàn)的ー個功能結(jié)構(gòu)體,或者一個處理単元??紤]ー個任意的應(yīng)用程序,為了和計算機(jī)上的硬件交互設(shè)備進(jìn)行交互,應(yīng)用程序必須通過操作系統(tǒng)提供的接ロ訪問硬件驅(qū)動,進(jìn)而控制硬件。(如圖4左方)微環(huán)境包括ー個函數(shù)地址監(jiān)測模塊,用于檢測內(nèi)存中應(yīng)用程序的函數(shù)地址變量,以及ー個函數(shù)地址重定向模塊,用于改變應(yīng)用程序的內(nèi)存中存儲的函數(shù)地址變量,以及ー個地址保存模塊,用于保存重新被定向的函數(shù)地址;以及包含多個接ロ,用干與實現(xiàn)與計算機(jī)硬件以及windows應(yīng)用程序接ロ之間的通信,例如程序界面,畫面渲染,音頻輸出和控制信息(鍵盤,鼠標(biāo)等信息)的輸入。通過改變應(yīng)用程序的內(nèi)存中存儲的函數(shù)地址變量,使應(yīng)用程序?qū)Σ僮飨到y(tǒng)接ロ的訪問重定向到微環(huán)境提供的接ロ而不再和實際的PC系統(tǒng)的硬件層或硬件驅(qū)動接觸(如圖4右方)。對于應(yīng)用程序而言,微環(huán)境提供了和操作系統(tǒng)相同的接口和響應(yīng)行為。因此在微環(huán)境中執(zhí)行并不會影響其正常的工作流程。而微環(huán)境則獲得了應(yīng)用程序和用戶的交互數(shù)據(jù),包括程序界面,畫面渲染,音頻輸出和控制信息(鍵盤,鼠標(biāo)等信息)的輸入。微環(huán)境可以在云計算系統(tǒng)所實現(xiàn),并和視頻/音頻壓縮模塊和網(wǎng)絡(luò)模塊相連接,從而將應(yīng)用程序的界面和渲染數(shù)據(jù)轉(zhuǎn)換成視頻/音頻流,經(jīng)網(wǎng)絡(luò)模塊傳送到互聯(lián)網(wǎng)上的其它終端(云計算服務(wù)的用戶)。同樣,終端的用戶交互信息通過互聯(lián)網(wǎng)到達(dá)微環(huán)境后,代替了原來由 計算節(jié)點(diǎn)上的交互設(shè)備所發(fā)送的用戶交互信息傳達(dá)給應(yīng)用程序,最終實現(xiàn)通過互聯(lián)網(wǎng)在遠(yuǎn)程計算機(jī)(云計算服務(wù)節(jié)點(diǎn))上執(zhí)行交互式應(yīng)用程序的目的。圖5顯示了微環(huán)境的另ー種通用的實施方式。以windows操作系統(tǒng)為例,微環(huán)境的實現(xiàn)機(jī)制結(jié)合windows系統(tǒng)特有的動態(tài)鏈接庫(DLL)工作模式和獨(dú)立的進(jìn)程空間機(jī)制。在操作系統(tǒng)中,微環(huán)境可進(jìn)ー步包含多個進(jìn)程,所述進(jìn)程和客戶端連接,由客戶端請求執(zhí)行特定的請求,所述請求可以是應(yīng)用程序或者發(fā)送或者接收的數(shù)據(jù)。微環(huán)境隨后將上述請求載入內(nèi)存,在上述請求實際執(zhí)行之前,微環(huán)境利用動態(tài)鏈接庫的工作方式將重定向模塊(以DLL的形式)加載進(jìn)應(yīng)用程序的進(jìn)程空間,并在應(yīng)用程序進(jìn)程的內(nèi)存空間中修改應(yīng)用程序已載入的執(zhí)行代碼。或者為了節(jié)省PC機(jī)硬件的資源,微環(huán)境直接利用自身的重定向硬件模塊修改上述請求中所包含的函數(shù)地址變量,以改變函數(shù)的操作系統(tǒng)應(yīng)用程序接ロ API的功能調(diào)用入口位置。當(dāng)應(yīng)用程序執(zhí)行之后,程序調(diào)用操作系統(tǒng)API時,重定向模塊將被修改的函數(shù)地址跳轉(zhuǎn)到重定向模塊所存儲的函數(shù)地址。重定向模塊和在其它進(jìn)程中運(yùn)行的微環(huán)境主體通過特定的通訊隧道連接,將程序執(zhí)行時的交互式內(nèi)容輸出到微環(huán)境進(jìn)程中,經(jīng)過處理后最終通過網(wǎng)絡(luò)發(fā)送到客戶端。圖6顯示了應(yīng)用程序進(jìn)程的內(nèi)存空間中系統(tǒng)API經(jīng)過修改后被調(diào)用時的典型工作流程通過修改內(nèi)存數(shù)據(jù),API入口函數(shù)最開頭的機(jī)器指令被修改為一條跳轉(zhuǎn)指令,跳轉(zhuǎn)到微環(huán)境加載的重定向模塊所提供的接ロ函數(shù)入口。從而使應(yīng)用程序?qū)ο到y(tǒng)API的使用首先被重定向到微環(huán)境重定向模塊中。微環(huán)境的接ロ函數(shù)接收了應(yīng)用程序調(diào)用系統(tǒng)API時的所有參數(shù),此后可以使用下述方式之一獲取應(yīng)用程序的交互信息
I)應(yīng)用程序調(diào)用系統(tǒng)API時傳入的參數(shù)就包含了所需的交互信息,例如對鼠標(biāo)指針的定位,文件訪問的路徑參數(shù)等。2)微環(huán)境使用獲得的參數(shù),代替應(yīng)用程序調(diào)用其原本所需調(diào)用的系統(tǒng)API。如圖5所示,微環(huán)境中可以首先執(zhí)行原API中被修改部分的內(nèi)存的指令,再從原API中內(nèi)存被修改部分之后開始執(zhí)行直到API函數(shù)結(jié)束,即完成ー個API的調(diào)用過程,并從API調(diào)用后返回的結(jié)果數(shù)據(jù)中取得應(yīng)用程序的交互信息,例如被渲染的程序界面畫面等。這些信息微環(huán)境接ロ函數(shù)結(jié)束,交還給應(yīng)用程序前,可以首先被輸出到微環(huán)境的導(dǎo)出模塊。3)應(yīng)用程序?qū)ο到y(tǒng)API的使用往往和硬件設(shè)備有夫,特定的硬件(或硬件驅(qū)動)可以由微環(huán)境實現(xiàn)并直接和導(dǎo)出模塊連接。通過修改API調(diào)用的參數(shù),微環(huán)境可以將應(yīng)用程序?qū)δ硞€硬件設(shè)備的訪問轉(zhuǎn)交給此和導(dǎo)出模塊連接的特定的硬件(或驅(qū)動)進(jìn)行,從而得到應(yīng)用程序從硬件設(shè)備中輸出的信息。例如音頻信息的導(dǎo)出。微環(huán)境將應(yīng)用程序?qū)τ布L問重定向的功能還具有更多的作用,將在后面闡述。微環(huán)境的導(dǎo)入模塊工作流程和導(dǎo)出模塊類似微環(huán)境接ロ函數(shù)從導(dǎo)入模塊中得到需要的信息,通過應(yīng)用程序調(diào)用API時傳入的參數(shù)或返回值等傳遞給應(yīng)用程序。進(jìn)ー步參見附圖3,在微環(huán)境中,交互所包含的所有信息被分別處理,并最終通過不同的信息流,傳送到客戶端程序,在該實施方式中,微環(huán)境包括但不限于以下模塊聲音導(dǎo)出模塊、界面導(dǎo)出模塊、其他信息導(dǎo)出模塊、以及輸入導(dǎo)入模塊。以PC游戲為例,游戲的畫面被界面導(dǎo)出模塊轉(zhuǎn)換為視頻流輸出,背景音樂和效果音聲音導(dǎo)出模塊轉(zhuǎn)換為音頻流輸出。此外為了實現(xiàn)用戶交互的功能,ー些額外的信息例如應(yīng)用程序中光標(biāo)的位置和樣式等也被信息導(dǎo)出模塊從ー個獨(dú)立的信息流通道輸出。在用戶客戶端接收到的交互信息則被傳送到輸入導(dǎo)入模塊,并轉(zhuǎn)換為應(yīng)用程序?qū)嶋H獲得的鼠標(biāo)和鍵盤消息等內(nèi)容。 更進(jìn)一歩,微環(huán)境重定向模塊包含一系列操作系統(tǒng)調(diào)用的接ロ,包括但不限于以下類型
圖形顯示接ロ,包括Windows⑶I和DirectX。在最近幾年中,絕大部分的PC游戲利用DirectX接ロ渲染其執(zhí)行過程中全部的畫面。音頻播放接ロ,例如DirectSound或者即windows媒體設(shè)備接ロ(MultimediaDevice API)。輸入/輸出接ロ,包括Direct Input和鍵盤/鼠標(biāo)消息接ロ。存儲和應(yīng)用程序上下文接ロ,包括文件訪問API,注冊表訪問API,環(huán)境變量和內(nèi)核對象等。微環(huán)境重定向的這些接ロ使多個相同的應(yīng)用程序在同一操作系統(tǒng)下執(zhí)行時可以避免資源使用的沖突問題。微環(huán)境還可以記錄單元,用于記錄和保留這些上下文信息,從而為應(yīng)用程序下一次從當(dāng)前上下文信息執(zhí)行作準(zhǔn)備。由于微環(huán)境可以代替應(yīng)用程序進(jìn)行系統(tǒng)API的調(diào)用。因此當(dāng)應(yīng)用程序需要使用硬件資源時,微環(huán)境并不需要模擬所有的硬件響應(yīng)。在實際的系統(tǒng)中,微環(huán)境中各導(dǎo)出模塊對應(yīng)用程序的請求在進(jìn)行必要的處理后,通常都會將應(yīng)用程序?qū)τ布Y源(通過實際的系統(tǒng)函數(shù)接ロ)的訪問定向回原有的位置來。實際上應(yīng)用程序在微環(huán)境內(nèi)和原來的工作方式相比,只多出兩步跳轉(zhuǎn)指令和微環(huán)境中所需的額外的操作,這和虛擬化技術(shù)相比具有少得多的開銷,可以認(rèn)為非常接近于原生的工作方式。雖然Windows操作系統(tǒng)已經(jīng)可以支持多組硬件資源同時工作,例如多核心的CPU和多GPU。但操作系統(tǒng)對資源的自動調(diào)度仍局限于CPU上,而并不會自動調(diào)度和分配其它硬件(特別是GPU)的計算能力。例如即使計算節(jié)點(diǎn)上部署多個GPU,一般的應(yīng)用程序往往只使用操作系統(tǒng)中被指定為“主GPU”的設(shè)備進(jìn)行3D畫面的渲染。即使應(yīng)用程序可以訪問到全部GPU設(shè)備的信息并且能通過用戶的指令選擇某個GPU設(shè)備,當(dāng)計算節(jié)點(diǎn)上運(yùn)行多個應(yīng)用程序吋,對每個用戶而言,選擇適當(dāng)?shù)腉PU設(shè)備也是不可能的。利用微環(huán)境界面導(dǎo)出模塊對DirectX接ロ的重定向,微環(huán)境可以在多個計算節(jié)點(diǎn)(或服務(wù)節(jié)點(diǎn))的多個GPU設(shè)備間為某個特定的應(yīng)用程序分配合適的GPU資源。即選擇當(dāng)前具有足夠的空閑計算能力的GPU設(shè)備,并對這些GPU設(shè)備賦予不同的資源占用來完成ー特定計算。為此,微環(huán)境中進(jìn)ー步包含ー記錄模塊,用于記錄當(dāng)前在其中執(zhí)行的所有應(yīng)用程序?qū)PU資源的使用情況,進(jìn)ー步,其還包含ー監(jiān)視模塊,用于監(jiān)視GPU的工作狀態(tài),以便為下一個執(zhí)行的應(yīng)用程序分配適合的GPU設(shè)備,也就是說,每ー計算節(jié)點(diǎn)(或服務(wù)節(jié)點(diǎn))的GPU都可能被分配參與與該計算節(jié)點(diǎn)無關(guān)的計算,所述監(jiān)視模塊的一個實施方式是基于讀取標(biāo)準(zhǔn)的系統(tǒng)接口和驅(qū)動接ロ的實時參數(shù)來監(jiān)視其工作狀態(tài)。聲音導(dǎo)出模塊對應(yīng)用程序音頻的重定向輸出實現(xiàn)于硬件驅(qū)動層面。微環(huán)境在介入前已以硬件驅(qū)動的形式實現(xiàn)多個(虛擬的)音頻渲染和播放設(shè)備。應(yīng)用程序?qū)σ纛l播放接ロ的調(diào)用由虛擬設(shè)備實現(xiàn)后壓縮為音頻流通過互聯(lián)網(wǎng)輸出到遠(yuǎn)程用戶的計算機(jī)。在正常情況下,多個應(yīng)用程序同時運(yùn)行時,每個程序的音頻輸出將被混合并同時輸出于系統(tǒng)的音頻設(shè)備。另ー方面,微環(huán)境可以為其中每個執(zhí)行的應(yīng)用程序分配這些虛擬音頻設(shè)備的其中之一,使不同應(yīng)用程序的音頻輸出得以成為獨(dú)立的音頻流并通過不同微環(huán)境的音頻通道進(jìn)行傳送。在畫面和音頻內(nèi)容之外,應(yīng)用程序為了和用戶正確地交互所需的其它信息也由其它信息導(dǎo)出模塊所收集并通過輔助通道傳送到客戶端。例如,當(dāng)前應(yīng)用程序中鼠標(biāo)指針的 實際位置需要傳送到客戶端,以便在客戶端屏幕上準(zhǔn)確地顯示其的位置和其它信息。鼠標(biāo)指針是交互式的windows程序中最為常見的元素。從圖7可以看到,在和遠(yuǎn)程的應(yīng)用程序交互時,任何對鼠標(biāo)指針的交互操作都需要通過網(wǎng)絡(luò)傳輸?shù)玫?,響?yīng)后才能顯示回用戶客戶端。這意味著用戶在客戶端移動鼠標(biāo)指針時,將觀察到一個和網(wǎng)絡(luò)延時(TTL)相當(dāng)?shù)难舆t。我們觀察到,用戶對移動鼠標(biāo)指針的延遲是非常敏感的;但相對地,在點(diǎn)擊屏幕上特定元素時,用戶的對延遲的容忍度則大得多。因此,微環(huán)境中并不直接將光標(biāo)的信息合并到程序界面內(nèi)作為視頻信息流來傳輸。而是通過輔助信息流傳送鼠標(biāo)指針的信息并在客戶端直接繪制出來。當(dāng)用戶移動鼠標(biāo)指針時,客戶端本地將首先響應(yīng)鼠標(biāo)移動的事件并重畫鼠標(biāo)指針,并同時將此事件通過控制信息傳送到遠(yuǎn)程執(zhí)行的應(yīng)用程序。這一次策略消除了移動鼠標(biāo)指針時可覺察的延遲。網(wǎng)絡(luò)延時導(dǎo)致的延遲僅發(fā)生在鼠標(biāo)指針的移動導(dǎo)致程序界面發(fā)生特定的響應(yīng)的過程中。而如前述,這一延遲能為多數(shù)用戶所容忍。指定特定的遠(yuǎn)程應(yīng)用程序可能要求較高的屏幕分辨率而客戶端屏幕可能無法滿足此要求,這在移動終端等設(shè)備上尤為常見。在此情況下,和界面導(dǎo)出模塊耦合的縮放模塊會將應(yīng)用程序的輸出界面縮小到客戶端屏幕可接受的范圍并輸出為視頻流。在界面被縮小之后,界面上原有的部分元素,特別是文字內(nèi)容等,可能會由于縮小而失去其可讀性。此時,ー個額外的應(yīng)用程序?qū)⒃谖h(huán)境內(nèi)啟動,這ー程序訪問界面導(dǎo)出器的接ロ,將程序界面上特定位置(通常以是鼠標(biāo)指針?biāo)赶虻奈恢脼橹行牡囊粋€小的方形區(qū)域)的畫面(保持其原有的大小)單獨(dú)劃出,利用視頻編碼器將其轉(zhuǎn)換為一個較小的視頻流,通過輔助信息流傳輸?shù)娇蛻舳?如圖7),即不在正常的視頻流部分編碼;正常的視頻流可以用于編碼整個圖像。這ー視頻流在客戶端解碼后,重現(xiàn)模塊將其以和遠(yuǎn)程應(yīng)用程序上相同的分辨率顯示,并疊加于客戶端屏幕所顯示的(已被縮小了的)程序界面畫面上。用戶可以通過鼠標(biāo)指針的移動等操作,從此疊加的放大畫面上閱讀到縮小后無法識別的畫面元素。客戶端重現(xiàn)模塊將單獨(dú)劃出的部分用原分辨率顯示,而將所述呈現(xiàn)畫面縮放至與該客戶端所使用的顯示設(shè)備相適應(yīng)的分辨率進(jìn)行顯示,所述單獨(dú)劃出的部分至于最上層顯示。微環(huán)境的視頻和音頻導(dǎo)出模塊和低延遲的編碼模塊相耦合。編碼模塊所需的運(yùn)算可以利用計算服務(wù)節(jié)點(diǎn)上的CPU或GPU來完成,或使用專門的編碼硬件進(jìn)行處理。應(yīng)用程序界面的圖形信息按一定的時間間隔構(gòu)成輸出視頻流的每ー幀。在某ー時刻,應(yīng)用程序界面圖形轉(zhuǎn)換為視頻流中對應(yīng)幀的編碼時間不大于10毫秒;在用戶的終端設(shè)備上,這ー視頻幀被視頻解碼器解碼并呈現(xiàn)在終端屏幕的時間也不大于10毫秒。在正常情況下,我們期望從服務(wù)系統(tǒng)到用戶終端的網(wǎng)絡(luò)傳輸延時(TTL)在40-50毫秒左右。另ー方面,視頻流的每秒幀率被限制在25-30之間,因此用戶在和遠(yuǎn)程應(yīng)用程序的交互行為所觀察到的延遲最多在100毫秒左右。這對于一般的應(yīng)用程序交互乃至于PC游戲都是ー個可接受的范圍。圖8顯示了視頻編碼模塊,解碼模塊和傳輸模塊為了減少編碼ー解碼延遲所采取的流水線策略(圖中最下面的策略)。程序的畫面實際被分割為多個部分,每個部分都被分別編碼成一個單獨(dú)的視頻流傳輸?shù)娇蛻舳耍山獯a模塊解碼后,再由重現(xiàn)模塊將分割的畫面拼合并顯示出來,其中所述單獨(dú)劃分的畫面以更高的帶寬傳輸。GPU將不斷改變的程序界面進(jìn)行壓縮編碼轉(zhuǎn)換為視頻流,并在遠(yuǎn)程客戶端解碼的過程。編碼ー解碼過程是準(zhǔn)實時的,其延遲和數(shù)據(jù)在網(wǎng)絡(luò)中傳送導(dǎo)致的延遲相比是小量。為了降低編碼和解碼的延遲,應(yīng)用程序界面在編碼過程中實際被分割成多個部分,每部分獨(dú)立地進(jìn)行編碼ー傳輸ー解碼,各部分的處理步驟以流水線方式并發(fā)執(zhí)行。 和將整個畫面編碼為單ー的視頻流相比(圖8上方的策略),雖然在壓縮率上有所損失,但可以有效地利用計算節(jié)點(diǎn)的并行能力,減少編碼延遲(圖8中間的策略)。然而,客戶端的解碼模塊由于客戶端計算能力的限制,往往并不具備并行解碼能力,因此并不能顯著減少解碼延遲。同時也可以看到,在前面這兩種策略中,設(shè)備的計算能力在傳輸過程中是被閑置的。而在流水線策略中,編碼和解碼的過程和傳輸?shù)倪^程在不同畫面塊之間交錯地進(jìn)行,在其中ー個畫面塊傳輸時,設(shè)備的計算能力得以被編碼模塊和解碼模塊用來對其它畫面塊進(jìn)行處理,實際上將編碼一傳輸ー解碼三個步驟部分地并行起來,從而減少了總的交互延遲。微環(huán)境的視頻編碼模塊和對應(yīng)的客戶端設(shè)備上的視頻解碼模塊使用H. 264或類似標(biāo)準(zhǔn)。在視頻編碼中必須包含兩種類型的畫面幀。其中之一(I幀)在解碼時不依賴于任何其它畫面幀,另ー種(P幀)的解碼則依賴于之前被接收到的某些幀的信息。單個的I幀需要比P幀大的字節(jié)數(shù),I幀在視頻流中的分布是不確定的,每兩個I幀之出現(xiàn)之間的時間間隔在1-10秒之間。在兩個I幀之間的視頻流由字節(jié)數(shù)較小的P幀所組成。在特定的時刻內(nèi)為云計算系統(tǒng)的節(jié)點(diǎn)提供執(zhí)行種類繁多的應(yīng)用程序的可能是相當(dāng)困難的。最突出的問題之ー在于保存每個應(yīng)用程序的ニ進(jìn)制執(zhí)行代碼可能都需要大量的存儲比特元。特別是對PC游戲來說,當(dāng)代的PC游戲的ニ進(jìn)制執(zhí)行代碼往往超過4G字節(jié)(I張標(biāo)準(zhǔn)DVD可以承載的字節(jié)數(shù))。如果將程序的ニ進(jìn)制代碼分別保存于每個計算節(jié)點(diǎn)的本地存儲器(硬盤)上,則需要為每個計算節(jié)點(diǎn)提供數(shù)TB字節(jié)的存儲能力。這給的存儲系統(tǒng)的成本和維護(hù)都帶來相當(dāng)多的困難。一個節(jié)約計算節(jié)點(diǎn)的存儲空間的方案是將程序的ニ進(jìn)制代碼保存在単一的存儲設(shè)備上,即如圖3所示的程序存儲陣列,而各節(jié)點(diǎn)在執(zhí)行程序時通過高速的網(wǎng)絡(luò)連接訪問此設(shè)備上的代碼數(shù)據(jù)。能這ー并發(fā)訪問只能在基于網(wǎng)絡(luò)文件系統(tǒng)(例如SAMBA)層面上而不能在網(wǎng)絡(luò)磁盤系統(tǒng)(例如iSCSI)上實現(xiàn)。然而對很多只為在高速的本地存儲器上運(yùn)行而設(shè)計的應(yīng)用程序(例如幾乎所有的PC游戲)而言,程序在執(zhí)行到和用戶交互前需要預(yù)先從存儲系統(tǒng)中讀入大量的數(shù)據(jù)到內(nèi)存中。從理論上說,當(dāng)計算節(jié)點(diǎn)和存儲節(jié)點(diǎn)之間能以千兆(Gigabit)網(wǎng)絡(luò)的理想速度傳送數(shù)據(jù)時,數(shù)據(jù)的讀取速率riOOMB/s)已經(jīng)能和常規(guī)的本地存儲器(硬盤,約70MB/S)相匹配。數(shù)據(jù)的讀取導(dǎo)致的等待時間如果和在本地存儲器上相當(dāng)(甚至略長)吋,這一等待已經(jīng)被用戶熟悉和接受,將不會降低用戶體驗。然而,這些數(shù)據(jù)常常以小文件的形式存放,而windows下常用的基于SAMBA協(xié)議的網(wǎng)絡(luò)文件系統(tǒng)并不適合于大量小文件的并發(fā)讀取任務(wù),結(jié)果導(dǎo)致實際的有效數(shù)據(jù)讀取速度往往小于lOMB/s,程序執(zhí)行前和執(zhí)行中的數(shù)據(jù)讀取等待時間是在本地存儲器上的數(shù)倍乃至十?dāng)?shù)倍,嚴(yán)重降低了用戶體驗。通過微環(huán)境,我們優(yōu)化了 SAMBA協(xié)議下的網(wǎng)絡(luò)文件系統(tǒng)在應(yīng)用程序訪問時的數(shù)據(jù)讀取效率,而不需要另外開發(fā)更為困難并且穩(wěn)定性存疑的其它網(wǎng)絡(luò)文件系統(tǒng)。在圖3的系統(tǒng)中,云計算系統(tǒng)內(nèi)所有服務(wù)節(jié)點(diǎn)和単一的存儲陣列連接。如圖9所示,在正常情況下,應(yīng)用程序直接通過SAMBA協(xié)議訪問存儲陣列上的網(wǎng)絡(luò)文件位置(虛線箭頭)。而在微環(huán)境中,應(yīng)用程序的訪問實際被重定向到位于本地存儲設(shè)備的緩存中。緩存內(nèi)容由微環(huán)境進(jìn)行管理。在計算節(jié)點(diǎn)首次運(yùn)行應(yīng)用程序時,微環(huán)境通過另ー個基于rSync方案的協(xié)議(我們稱為 rSync_i)讀取存儲陣列上的網(wǎng)絡(luò)文件。在讀取時,多個并發(fā)的文件訪問請求被按照目錄位置合并為單一的TCP請求進(jìn)行訪問,使文件實際的讀取速度得以接近網(wǎng)絡(luò)環(huán)境所允許的極值。多個計算節(jié)點(diǎn)將共同訪問同一個存儲節(jié)點(diǎn)上的應(yīng)用程序數(shù)據(jù),并將每個用戶在執(zhí)行應(yīng)用程序時所產(chǎn)生的額外數(shù)據(jù)存儲到単一的存儲節(jié)點(diǎn)上。數(shù)據(jù)的導(dǎo)入導(dǎo)出和傳輸是通過微環(huán)境實現(xiàn)的。微環(huán)境使用了特定的策略來加速應(yīng)用程序執(zhí)行時從存儲節(jié)點(diǎn)上讀取數(shù)據(jù)的速率。系統(tǒng)將多個計算節(jié)點(diǎn)構(gòu)成ー個節(jié)點(diǎn)陣列,多個節(jié)點(diǎn)陣列共享ー個存儲節(jié)點(diǎn)(陣列)讀取所執(zhí)行的應(yīng)用程序數(shù)據(jù)和記錄用戶生成的數(shù)據(jù)。用戶可以通過網(wǎng)絡(luò)延時和帶寬等數(shù)據(jù)選擇多個計算節(jié)點(diǎn)陣列中的ー個。多個存儲節(jié)點(diǎn)構(gòu)成了可以相互同步的分布式存儲系統(tǒng)。用戶客戶端接受可識別的任意用戶交互操作并通過控制信息發(fā)送到微環(huán)境中。然而,微環(huán)境的輸入過濾模塊將判別所有的用戶操作并只允許特定的操作能發(fā)送到被執(zhí)行的應(yīng)用程序當(dāng)中。這ー判斷是基于當(dāng)前應(yīng)用程序界面的狀況而動態(tài)改變的。當(dāng)當(dāng)前光標(biāo)在被判斷為“危險”的界面(例如可以訪問和執(zhí)行計算節(jié)點(diǎn)本地存儲路徑的文件的窗ロ)時,輸入過濾模塊將能阻止遠(yuǎn)程用戶執(zhí)行可能對計算節(jié)點(diǎn)和整個服務(wù)系統(tǒng)有危險的操作。從界面和聲音導(dǎo)出模塊輸出的視/音頻流和輔助信息流的數(shù)據(jù)被保存在如圖4所示的微環(huán)境輸出緩存模塊中。因此,所執(zhí)行的應(yīng)用程序的界面等信息不僅可以被請求執(zhí)行的用戶的終端所看到,也可以通過輸出緩存模塊和傳輸模塊輸出到一個或多個以旁觀者身份參與的用戶的終端上。作為旁觀者的用戶連接同一個計算節(jié)點(diǎn)的微環(huán)境,但無法發(fā)送控制信息流到相應(yīng)的微環(huán)境中。旁觀者用戶除了觀看和程序交互的用戶的行動之外,還可以通過其它通道發(fā)送特定的交互信息到云計算系統(tǒng)。如圖10所示,ー個特定的程序會在此微環(huán)境內(nèi)啟動,接收并匯總其它觀看用戶的交流信息。界面導(dǎo)出模塊將這些交流信息和應(yīng)用程序的界面合并為ー個視頻流,從而將這些交互信息被重新分發(fā)到當(dāng)前所有連接此微環(huán)境的用戶(包括交互用戶和旁觀者用戶),并可以顯示在所有用戶的終端上。例如,在一個進(jìn)行PC游戲的用戶所在的微環(huán)境上,旁觀者可以以文字形式實時地輸入評論,這些評論將可以發(fā)送到所有的其它旁觀者和游戲用戶。觀看者的用戶和執(zhí)行交互的用戶所訪問的視頻流是同步的(除了用戶之間由于不同的網(wǎng)絡(luò)延遲導(dǎo)致的影響)。然而,用戶終端的視頻解碼模塊一般并不能從ー個有參考的幀(B幀)開始解碼和正確顯示視頻流。在輸出緩存模塊中會保存已經(jīng)向交互用戶輸出的一段時間內(nèi)的全部視頻幀數(shù)據(jù),其中必然包含至少ー個無參考的I幀。如圖11所示,當(dāng)ー個觀看者用戶在最初連接微環(huán)境時,輸出緩存模塊將保存的離當(dāng)前向交互用戶的輸出幀最近的I幀發(fā)送給觀 看者用戶,直到有下ー個I幀出現(xiàn)時,此幀將看觀看者用戶和交互用戶同時輸出。由于兩個I幀出現(xiàn)的時間間隔可能長達(dá)10秒,這ー策略顯著減少了觀看者用戶的終端從連接成功到出現(xiàn)視頻時的延遲。ー個被稱為“展示墻”的特殊應(yīng)用程序可以運(yùn)行在ー個獨(dú)立的微環(huán)境中,如圖12所示。展示墻訪問計算系統(tǒng)內(nèi)的服務(wù)管理器取得其它微環(huán)境內(nèi)正在運(yùn)行的應(yīng)用程序,并作為觀看者用戶連接到這些微環(huán)境中。展示墻程序解碼獲取到的所有視頻流,并將這些視頻流以預(yù)覽圖的大小重新組織到一個單ー的界面內(nèi)。這ー界面被編碼為新的視頻流發(fā)送到用戶終端屏幕。用戶可以選擇展示墻內(nèi)的某個預(yù)覽視頻流,并作為一個觀看者用戶與預(yù)覽視頻流對應(yīng)的微環(huán)境內(nèi)的其他用戶進(jìn)行交流。微環(huán)境的視頻和音頻流在發(fā)送到網(wǎng)絡(luò)前可以通過協(xié)議重整模塊將兩者合并為特定格式的多媒體內(nèi)容流(如圖4所示)。這樣的多媒體內(nèi)容流可以被進(jìn)一步通過互聯(lián)網(wǎng)抵達(dá)具有特殊實現(xiàn)的客戶端終端程序。例如,從重整模塊生成的多媒體內(nèi)容流可以被以RTMP(Real Time Messaging Protocol)協(xié)議的方式承載并被廣泛使用的Adobe ShockwaveFlash平臺所呈現(xiàn)。從而用戶允許在不運(yùn)行專門客戶端程序的基礎(chǔ)上使用云服務(wù)系統(tǒng)。例如,這使得任何用戶只需要擁有ー個可運(yùn)行現(xiàn)代的Web瀏覽器的終端(所有的PC,上網(wǎng)本,WebOS系統(tǒng)以及大多數(shù)的移動終端等)即可作為ー個觀看者用戶接入。使用Adobe Shockwave Flash平臺可以接收微環(huán)境發(fā)出的輔助信息流,并將用戶在flash平臺上的操作作為控制信息流發(fā)送到輸入導(dǎo)入模塊,從而實現(xiàn)ー個完整的用戶終端而不僅僅是觀看者。然而,基于Flash平臺的安全限制,執(zhí)行遠(yuǎn)程應(yīng)用程序時所需的某些交互行為不能被直接實現(xiàn)。例如部分鍵盤功能。ー個典型的情況是,在某些應(yīng)用程序例如第一人稱視角的PC游戲中,允許鼠標(biāo)向ー個特定方向作無限的移動(對應(yīng)于視角的不斷轉(zhuǎn)動)。但由Flash實現(xiàn)的客戶終端只能在ー個有限的矩形范圍內(nèi)接收的鼠標(biāo)操作,當(dāng)鼠標(biāo)向ー個方向移動導(dǎo)致指針移動到矩形的邊緣時,后續(xù)的移動將無法再被檢測到。圖13顯示了對此問題的ー個解決方案接收鼠標(biāo)指針移動信息的矩形區(qū)域被分割為兩部分,在正常區(qū)域內(nèi),鼠標(biāo)移動的信息被正常地發(fā)送到遠(yuǎn)程的應(yīng)用程序。當(dāng)鼠標(biāo)指針移動到矩形邊緣范圍的緩沖邊緣區(qū)域內(nèi)時,在接受到下一次鼠標(biāo)移動指令之前,最后一次移動的信息會以一定間隔被反復(fù)發(fā)送到遠(yuǎn)程應(yīng)用程序,從而允許用戶使用鼠標(biāo)發(fā)送向特定方向持續(xù)移動的信息。在緩沖邊緣區(qū)域時,特定的圖案將顯示在鼠標(biāo)指針焦點(diǎn)位置附近,以提示用戶ー個特殊的移動行為正在發(fā)生。在圖3所示的服務(wù)系統(tǒng)中,服務(wù)管理器負(fù)責(zé)控制云系統(tǒng)中所有服務(wù)節(jié)點(diǎn)上全部微環(huán)境內(nèi)執(zhí)行的應(yīng)用程序的狀況,并將其和用戶數(shù)據(jù)庫關(guān)聯(lián)起來。使用云計算遠(yuǎn)程交互程序服務(wù)的用戶所執(zhí)行的ー個典型的工作流程如圖14所示。用戶的終端程序首先訪問系統(tǒng)的前端(通常以Web的形式)獲取通過安全網(wǎng)關(guān)和連接某一微環(huán)境的權(quán)限(I);前端和服務(wù)管理器交互以在安全網(wǎng)關(guān)上為用戶終端打開ー個出口,井根據(jù)用戶數(shù)據(jù)庫的信息設(shè)置對應(yīng)的微環(huán)境。當(dāng)用戶終端連接此微環(huán)境時,用戶能在微環(huán)境上執(zhí)行的應(yīng)用程序的列表由服務(wù)管理器通過用戶數(shù)據(jù)庫信息所指定(2);在用戶執(zhí)行特定的應(yīng)用程序的過程中,相關(guān)的信息(例如執(zhí)行的程序內(nèi)容,執(zhí)行時間,用戶生成的數(shù)據(jù)等)被通過服務(wù)管理器傳送回用戶數(shù)據(jù)庫
(3);最終,當(dāng)用戶執(zhí)行應(yīng)用程序完畢,用戶離開微環(huán)境并告知服務(wù)管理器退出的信息.服務(wù)管理器將收集之前微環(huán)境中所需的信息同步到用戶數(shù)據(jù)庫,為用戶下一次訪問作準(zhǔn)備(4)。在遠(yuǎn)程交互程序服務(wù)應(yīng)用中,網(wǎng)絡(luò)環(huán)境對用戶體驗造成了最直接的制約。為了得到足夠的用戶體驗,用戶到計算節(jié)點(diǎn)的連結(jié)需要一個低延遲且高帶寬的網(wǎng)絡(luò)。通常,網(wǎng)絡(luò)的傳輸延遲應(yīng)該低于50毫秒。此外,測試表明在ー個合理的分辨率水平(通常假設(shè)為1024x768)下,傳輸?shù)囊曨l流達(dá)到25-30FPS并保持足夠的可讀性要求最少2Mbps的帶寬。這意味著一個云服務(wù)系統(tǒng)在同時服務(wù)大量用戶時,網(wǎng)絡(luò)的流量對系統(tǒng)網(wǎng)絡(luò)出ロ將造成巨大的壓力。這樣的云服務(wù)系統(tǒng)要求ー個分布式的部署方案以便有效地利用差異化的網(wǎng)絡(luò)帶 寬以提高傳輸效率和減少成本。如圖15所示,分布式的計算服務(wù)節(jié)點(diǎn)陣列被部署于全國各地的多個位置,其服務(wù)用戶終端的網(wǎng)絡(luò)出口通常是流量費(fèi)用較低的單線網(wǎng)絡(luò)。多個部署的陣列通過專線和接入骨干網(wǎng)絡(luò)上的分布式存儲陣列相連接。所有這些分布式系統(tǒng)都以高質(zhì)量但有限的帶寬連接到中心數(shù)據(jù)庫。用戶的終端在訪問web前端后,首先從連接多個計算服務(wù)節(jié)點(diǎn)并選擇出連通性最佳的ー個,再連接其中的某個節(jié)點(diǎn)的微環(huán)境以執(zhí)行應(yīng)用程序服務(wù)。在用戶和應(yīng)用程序交互過程中產(chǎn)生的用戶數(shù)據(jù)文件將直接寫入服務(wù)節(jié)點(diǎn)直接連接的存儲陣列。在用戶交互結(jié)束后,服務(wù)管理器將發(fā)出請求,在ー個特定的時間域內(nèi)(通常少于12小吋),用戶交互所產(chǎn)生的數(shù)據(jù)文件將被同步到全部的存儲陣列中。而少量的核心數(shù)據(jù)則被實時地寫入用戶數(shù)據(jù)庫。這ー分布式方案基于如下幾點(diǎn)考慮1.単一的計算服務(wù)節(jié)點(diǎn)陣列所在的網(wǎng)絡(luò)出ロ無法承受眾多用戶帶來的帶寬負(fù)荷并為所有用戶提供滿足要求的連接環(huán)境(最低2Mbps的帶寬且延遲低于50ms) ;2.用戶在執(zhí)行一次交互程序時可能產(chǎn)生相當(dāng)大量的用戶數(shù)據(jù)。例如,當(dāng)用戶執(zhí)行ー個體育比賽類型的游戲時,可以對游戲中的某些場面進(jìn)行錄像并生成多達(dá)數(shù)百M(fèi)B的數(shù)據(jù)文件。単一的存儲陣列無法實時或準(zhǔn)實時地和全部分布式的服務(wù)陣列完成海量的數(shù)據(jù)同步,但是,和有限的數(shù)組服務(wù)節(jié)點(diǎn)陣列作實時的數(shù)據(jù)同步是可能的;3.由于地理條件的限制,用戶在網(wǎng)絡(luò)中可能的移動速度,將低于存儲陣列之間完成同步的時間閾值。例如,假設(shè)有分布在北京和廣州兩個地區(qū)的存儲陣列,用戶存儲到廣州地區(qū)的存儲陣列中的用戶數(shù)據(jù)可以在最長12小時內(nèi)和北京地區(qū)的陣列完成數(shù)據(jù)同歩。而在絕大多數(shù)情況下,一個在廣州地區(qū)結(jié)束服務(wù)的用戶(我們假設(shè)其對應(yīng)ー個自然人的個體)在現(xiàn)有的交通運(yùn)輸水平內(nèi)不會在12小時內(nèi)在北京地區(qū)應(yīng)用新的服務(wù)。這ー現(xiàn)實的時間閾使上述的分布式方案成為可能。
權(quán)利要求
1.一種計算機(jī)處理單元,介于應(yīng)用程序與系統(tǒng)API或者網(wǎng)絡(luò)之間,其特征在于該處理単元包括ー個函數(shù)地址監(jiān)測模塊,用于檢測內(nèi)存中應(yīng)用程序的函數(shù)地址,以及ー個函數(shù)地址重定向模塊,用于改變應(yīng)用程序的內(nèi)存中存儲的函數(shù)地址,對函數(shù)地址進(jìn)行重定向;以及多個接ロ,用干與實現(xiàn)與計算機(jī)硬件以及API之間的通信。
2.如權(quán)利要求I所述的處理單元,其特征在于所述處理単元和視頻/音頻壓縮模塊和網(wǎng)絡(luò)模塊相連接,將應(yīng)用程序的界面和渲染數(shù)據(jù)轉(zhuǎn)換成視頻/音頻流,經(jīng)網(wǎng)絡(luò)模塊傳送到互聯(lián)網(wǎng)上的其它終端。
3.如權(quán)利要求I所述的處理單元,其特征在于所述重定向模塊通過修改API調(diào)用的參數(shù),進(jìn)而將應(yīng)用程序?qū)δ硞€硬件設(shè)備的訪問轉(zhuǎn)交給ー導(dǎo)出模塊連接的特定的硬件進(jìn)行,從而得到應(yīng)用程序從硬件設(shè)備中輸出的信息。
4.如權(quán)利要求I所述的處理單元,其特征在于所述處理単元進(jìn)ー步包含多個進(jìn)程,所述進(jìn)程和客戶端連接,由客戶端請求執(zhí)行特定的請求,所述請求是應(yīng)用程序或者發(fā)送或者 接收的數(shù)據(jù);所述處理單元將上述請求載入內(nèi)存,在上述請求實際執(zhí)行之前,將重定向模塊加載進(jìn)應(yīng)用程序的進(jìn)程空間,并在應(yīng)用程序進(jìn)程的內(nèi)存空間中修改應(yīng)用程序已載入的執(zhí)行代碼。
5.如權(quán)利要求I所述的處理單元,其特征在于所述函數(shù)地址重定向模塊為一硬件,其改變函數(shù)的操作系統(tǒng)應(yīng)用程序接ロ API的功能調(diào)用入口位置;當(dāng)應(yīng)用程序執(zhí)行之后,程序調(diào)用操作系統(tǒng)API時,重定向模塊將被修改的函數(shù)地址跳轉(zhuǎn)到重定向模塊所存儲的函數(shù)地址。
6.如權(quán)利要求I所述的處理單元,其特征在于所述處理単元應(yīng)用于安全網(wǎng)關(guān)的服務(wù)節(jié)點(diǎn)上。
7.ー種安全網(wǎng)關(guān),包括ー個或多個服務(wù)節(jié)點(diǎn),其特征在于,所述服務(wù)節(jié)點(diǎn)包括如權(quán)利要求I所述的計算機(jī)處理單元。
8.一種基于云計算的遠(yuǎn)程交互式系統(tǒng),其包括終端設(shè)備,web前端、安全網(wǎng)關(guān),其特征在于 所述安全網(wǎng)關(guān)包括ー個或多個服務(wù)節(jié)點(diǎn); 所述服務(wù)節(jié)點(diǎn)進(jìn)一歩包括一處理單元,介于應(yīng)用程序與系統(tǒng)API或者網(wǎng)絡(luò)之間,其特征在于包括ー個函數(shù)地址監(jiān)測模塊,用于檢測內(nèi)存中應(yīng)用程序的函數(shù)地址,以及ー個函數(shù)地址重定向模塊,用于改變應(yīng)用程序的內(nèi)存中存儲的函數(shù)地址,對函數(shù)地址進(jìn)行重定向;以及多個接ロ,用干與實現(xiàn)與計算機(jī)硬件以及API之間的通信; 所述終端設(shè)備首先訪問所述前端,通過驗證后取得連接安全網(wǎng)關(guān)內(nèi)某一服務(wù)節(jié)點(diǎn)的權(quán)限;終端設(shè)備隨后使用這ー權(quán)限和云計算系統(tǒng)內(nèi)特定的服務(wù)節(jié)點(diǎn)連接;在所述安全網(wǎng)關(guān)中,所有應(yīng)用程序的界面和音頻輸出被轉(zhuǎn)換為視頻和音頻流,以及ー個與其相關(guān)的附加信息流,并通過互聯(lián)網(wǎng)傳遞給所述終端設(shè)備。
全文摘要
本發(fā)明涉及一種計算機(jī)處理單元、計算機(jī)網(wǎng)關(guān)、交互式系統(tǒng),所述處理單元介于應(yīng)用程序與系統(tǒng)API或者網(wǎng)絡(luò)之間,其特征在于該處理單元包括一個函數(shù)地址監(jiān)測模塊,用于檢測內(nèi)存中應(yīng)用程序的函數(shù)地址,以及一個函數(shù)地址重定向模塊,用于改變應(yīng)用程序的內(nèi)存中存儲的函數(shù)地址,對函數(shù)地址進(jìn)行重定向;以及多個接口,用于與實現(xiàn)與計算機(jī)硬件以及API之間的通信。本發(fā)明不僅能降低硬件資源的成本,同時可實現(xiàn)多方交互。
文檔編號H04L12/66GK102857535SQ20111018373
公開日2013年1月2日 申請日期2011年7月1日 優(yōu)先權(quán)日2011年7月1日
發(fā)明者鄧迪, 孫華慶, 魏帆 申請人:云聯(lián)(北京)信息技術(shù)有限公司