在我們所認知的範圍裡,雲是一種使用鬆散耦合結構的Web服務。 只要把提供雲服務的主機放置在互聯網上,使用者就直接從互聯網伺服器集群上獲取應用和服務。 由此一來。 開發人員只要專注于應用創新和業務邏輯就行,不惜要過多的地關心作業系統和硬體這樣的底層架構,于此同時,開發人員還必須注意雲服務帶來的新挑戰。
通過使用API,開發人員可以有效的給雲應用編寫程式,並且直可以直接有效的向雲供應商要求更多的資源。 並且,開發人員在在開發過程中,還需要進行冗余設計。 如果不進行,就會造成伺服器出錯。
創建雲還需要設計無狀態性的雲應用。 無狀態性是指用戶端和伺服器端都不保存對方的詳細資訊,伺服器只處理當前請求,而不必瞭解歷史資訊。
雲服務的特點是,如果某些應用失效,完全可以將應用中止並重新開始。 雲的無狀態性減少了伺服器從局部錯誤中恢復的任務量。 雲計算技術包含維護應用程式狀態變化的機制,當然這需要無狀態設計。 在雲中,既沒有本地磁片的概念,也沒有真正的登錄,所有應用都是無狀態的。
簡單的雲應用應該是無狀態的。 然而,還有一些有趣的應用要求保留某些狀態,因此會用資料庫來存儲一些狀態資訊。 某些特定專案,比如使用者資訊可以存儲起來,但有一定規模的應用程式在雲中依然是無狀態的。
過去,人們一般都在本機伺服器上把整個應用開發出來,現在不必這樣做了。 雲應用的另一個不同之處在于,應用元件可以在不同的雲中運行。 例如,一個應用可以調用Facebook的表現層,把資料儲存在Amazon的S3上,而邏輯運算可以在其他地方進行。 這意味著構建雲應用需要新的系統架構和思維方式,還要考慮雲服務的規模。
雲的抽象和無狀態性會影響到資料庫。 例如,Azure平臺提出了一個非標準關係資料庫的模型,儲存引擎不使用標準的關係資料庫。 因此,如果按照標準的關聯式資料庫來開發應用,很多工作就毫無意義了。 另外,Azure的儲存引擎與微軟提供的基於雲服務的SQL Server版本是不同的,開發者在設計時必須注意。
目前,微軟正在加速開發Azure利用關聯式資料庫的能力,同時也為非關聯式資料存儲提供了資料表式的存儲選擇。 App Engine中使用的Big Table資料庫模型是另外一個例子。 「Big Table不是SQL資料庫。 它支援的一些功能很難進行分割,與我們跨機器存儲資料的想法無法結合。 」Google App Engine產品經理派特•庫門說,「這意味著開發者上傳代碼,然後Google進行管理並將資料庫分割。 這樣的資料處理有特定的模式,與傳統SQL模式完全不同,開發人員必須遵循。 」
雲環境會摒棄掉關聯式資料庫。 「在高流量的網路環境中,關聯式資料庫很難管理,而且最終會給開發者帶來巨大負擔。 」派特•庫門說。
【編輯推薦】
技術人員開發雲計算從這裡下手新一代開源雲計算開發平臺説明學習雲計算開發的幾個開源平臺【責任編輯:桑丘 TEL:(010)68476606】