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