深入研究雲計算模式

2021-04-28 15:48:39 字數 2751 閱讀 6895

深入研究雲計算模式

上次我寫了篇《初識雲作業系統》的文章。這次我將著重介紹如何進行雲計算,以及雲計算所涉及的方方面面的知識。當然,這都是我按我自己的了解到的知識再加上自己的創造而寫的,並不算是什麼權威的東西。可以認為是我自己的一些感想!

雲計算,即分布式計算、網格計算的衍生物。在本地計算資源不足的情況下,將計算任務傳送到網路伺服器上,由網路伺服器代為完成其計算任務。

雲計算的模式主要有以下三個

(參考了網路作業系統相關知識):

一、執行緒遷移模式,這個是量級最小的一級遷移,再小就難以協同了(至少實現難度上會比這個難),有的時候需要將程序裡的各個執行緒分到不同的伺服器上執行,以期達到更好的計算效能。如矩陣計算需要特殊的cpu等,而非矩陣運算可以使用一般的cpu即可。

二、程序級任務遷移模式。乙個程序可包括多個執行緒。因而是乙個完整的計算任務的遷移。如:把在手機執行魔獸遊戲的程序遷移到網路伺服器上,只能輸入輸出進行傳送及結果的回傳(輸入---鍵盤滑鼠的輸入,執行結果---動畫結果)。又如執行別的大型的程式,如乙個科學計算的大型演算法程式。這些都可以將整個程序遷移到別的伺服器上進行計算,得到結果再返回即可。

三、作業級作務遷移。作業即在某一段時間內計算機要完成的計算及邏輯處理任務。這是粒度最大的一類遷移。比如將手機作為乙個大型門戶**的伺服器,這是計算能力肯定是不夠的,怎麼辦。可以使用雲服務進行虛擬伺服器的配置。將某一段時間內的服務任務都放到這些雲伺服器,讓雲服務代為處理所有的一切。當然,通過你的手機終端,你可以對這些作業進行實時的監控及管理。

對於上述過程是如何實現的呢。雲作業系統可以採用隱式和顯示排程兩種方式。

一、隱式排程。對於執行緒等一級的排程可以採用隱式排程,當然,這隱式排程也是經過使用者允許的隱式排程。如雲計算服務費用太貴,使用者可以不採用此種方式。但如果使用者將模式設定為:在計算過程中,為了更高的效能,作業系統可以以最好的方式對執行緒進行「雲排程」。那麼雲作業系統可以完全按照雲計算任務所需的計算能力,進行動態的「雲排程」。

二、顯式排程。一旦需要進行「雲排程」,則必先徵求使用者的同意(比如彈出對話方塊,以徵求使用者的意見)。這裡的「雲排程」涉及計算任務的排程及「雲裝置」的排程。(雲裝置---比如需要用到「雲印表機」等)。

在具體的雲計算的排程(即計算任務的遷移排程),可以採用兩者的綜合來平衡之。

雲計算的底層實現

雲計算要將乙個計算作務遷移到別一台機器上,要涉及很多的問題。其中最為關鍵的問題是:

一、資料如何進行遷移及共享。這裡的資料報括**資料及程式執行所需的資料(堆、棧記憶體資料,檔案資料,裝置資源等)。

二、執行結果將如何返回給使用者。是實時返回還是執行結束再一次性返回。執行結果是如何描述的,內容是什麼----圖形亦或僅僅是資料。這些資料將如何描述及再現。

三、如何遷移,應該遷移到什麼樣的機器上,這些機器是如何分配和排程的。各個伺服器是相互間是平等的還是有主從關係的。這些協作的演算法及伺服器又得安裝怎樣的作業系統(管理軟體)來完成這些任務的協作。

四、對於已經在雲端註冊雲服務的使用者,如何保證其計算任務的可持續性,以及完整性及安全性。可持續性指的是,如果使用者的雲端下線之後,服務該如何進行,現場該如何儲存等。完整性是指,如何將這些執行結果反映到使用者的雲環境中。比如在雲端對雲儲存的資料進行了動態的修改,那麼這些資料的修改如何保證其能完整無缺的儲存下來---將計算結果儲存起來。安全性,雲計算伺服器出現異常,如何避免出現不可預料的結果。

五、雲計算如何將本地資源與雲伺服器資源結合起來,以提供給使用者最優質的雲計算服務。如優先使用本地的雲裝置,把本地的雲計算裝置整合成乙個局域的雲網路。

雖然我提出了這些實現雲計算所要解決問題,但是並不是說我就已經擁有了這些問題的答案。因為這些都是些很現實的問題,涉及到了具體的實現了。沒有做就沒有發言權,所以還是等我做了再說。

雲計算的應用程式的編制及實現機制。

這是極其關鍵的。是雲應用的基礎。沒有雲應用程式的編寫,使用者的雲計算任務將無法得到滿足,因而提供一種雲程式設計模式是十分關鍵的。

參考微軟的.net,可以設想的實施方案為:

一、將基本的類庫及服務編寫成通用的**集(程式集),由本地編寫程式時呼叫之。這點可以構造統一的應用程式程式設計模式。標準介面,標準類庫,這將進一步降低雲計算任務遷移的資料量。(只需將極少量的非標準化**及程式所需資料進行遷移即可----當然,這裡涉及了託管機制)。強大的類庫及雲計算例程(標準化的程式集)將為**的遷移的方便提供最為優良的保障。

二、將**編譯成中間**形式,採用託管的方法對**進行動態的編譯及執行。生成一些移植性其好的託管**。有利於程式集的遷移。這就好比,如果你雲行的乙個程式。我在伺服器端已經安裝有的話,那麼程式你就不需要從使用者端遷移到伺服器了,只需要將程式所需的資料遷移即可。這遷移所需的時空資源大為降低。

三、將雲應用程式儲存於雲端,由雲網路提供方便的遷移。比如你在家上傳了乙個應用程式。那麼你這個程式將儲存在離你家最近的雲網路中,當你需要將雲計算「託管」出去,那麼直接從最近的伺服器得到該雲計算服務即可。當你離開註冊地(雲應用程式上傳所在地)時,在外地執行你所需的程式,可以通過雲網路進行快速的轉移,近而解決了雲共享的問題。當然,這在使用者看來是不可見的。

從這點來說,微軟的.net戰略還是具有一定的優勢的。商業雲的發展值得我們繼續關注。

文章結尾語:

隨著雲計算技術的不斷發展,以上談到的各種問題也將逐步的解決,雲計算所涉及的各種計算模式也將漸漸清晰,唯一還值得我們警醒的是:我們自己的雲又以**,難道雲計算只能靠大型的it廠商來支援發展嗎?我想不是的,在上面我也談到,如果一台主機斷網了或者區域網裡面亦有著很多功能強勁的主機,為什麼我們不能把雲作業系統弄好一點,讓這些離散的「雲裝置」(脫離了網際網路的計算裝置)也具有雲計算的能力了-------實現了這種功能的雲作業系統也是我們所需要的。所以不管是大雲還是小的雲朵,只要是給這個世界帶來了美麗的風景線,就值得我們去創造它。

flex Bindable深入研究

bindable 元資料標籤,它在 中的作用就是向編譯器提供如何編譯程式的資訊。它的最大作用是使程式元件間的資料同步變得容易。在開發中通常用上bindable作用在檢視控制項上,如給它繫結乙個物件,則以後只需要在邏輯層更改這個物件的值,則檢視層的控制項資料會自動更新 同步 而不再需要手動去更新檢視。...

URLRequest深入研究

urlrequest 的乙個例項 html view plain copy create the request.所構建的nsurlrequest具有乙個依賴於快取響應的特定策略,cachepolicy取得策略,timeoutinterval取得超時值 nsurlrequest therequest...

深入研究AsyncTask

asynctask提供了一種在後台執行操作而在ui執行緒顯示結果的方式,而且開發者不必操作執行緒或者handler.乙個asynctask定義了三種泛型分別是params,progress,result,還有四個函式分別是onpreexecute doinbackground onprogressu...