云應(yīng)用需要轉(zhuǎn)變開發(fā)思維
云是一種使用松散耦合結(jié)構(gòu)的Web服務(wù)。
提供云服務(wù)的主機放置在互聯(lián)網(wǎng)上,用戶直接從互聯(lián)網(wǎng)服務(wù)器集群上獲取應(yīng)用和服務(wù)。這樣的部署方式使得開發(fā)人員不必過多地關(guān)心操作系統(tǒng)和硬件這樣的底層架構(gòu),只要專注于應(yīng)用創(chuàng)新和業(yè)務(wù)邏輯即可。同時,開發(fā)人員還必須注意云服務(wù)帶來的新挑戰(zhàn)。
通過使用API,開發(fā)人員可以為云應(yīng)用編寫程序,并直接向云提供商要求更多的資源。在開發(fā)過程中,開發(fā)人員需要進行冗余設(shè)計?!叭绻悴粸樵茟?yīng)用設(shè)計冗余,服務(wù)器出錯是不可避免的。”微軟Azure云平臺副總裁薩維斯塔夫指出。
創(chuàng)建云還需要設(shè)計無狀態(tài)性的云應(yīng)用。無狀態(tài)性是指客戶端和服務(wù)器端都不保存對方的詳細信息,服務(wù)器只處理當前請求,而不必了解歷史信息。
云服務(wù)的特點是,如果某些應(yīng)用失效,完全可以將應(yīng)用中止并重新開始。云的無狀態(tài)性減少了服務(wù)器從局部錯誤中恢復(fù)的任務(wù)量。云計算技術(shù)包含維護應(yīng)用程序狀態(tài)變化的機制,當然這需要無狀態(tài)設(shè)計。在云中,既沒有本地磁盤的概念,也沒有真正的登錄,所有應(yīng)用都是無狀態(tài)的。
簡單的云應(yīng)用應(yīng)該是無狀態(tài)的。然而,還有一些有趣的應(yīng)用要求保留某些狀態(tài),因此會用數(shù)據(jù)庫來存儲一些狀態(tài)信息。某些特定項目,比如用戶信息可以存儲起來,但有一定規(guī)模的應(yīng)用程序在云中依然是無狀態(tài)的。
過去,人們一般都在本地服務(wù)器上把整個應(yīng)用開發(fā)出來,現(xiàn)在不必這樣做了。云應(yīng)用的另一個不同之處在于,應(yīng)用組件可以在不同的云中運行。例如,一個應(yīng)用可以調(diào)用Facebook的表現(xiàn)層,把數(shù)據(jù)儲存在Amazon的S3上,而邏輯運算可以在其他地方進行。這意味著構(gòu)建云應(yīng)用需要新的系統(tǒng)架構(gòu)和思維方式,還要考慮云服務(wù)的規(guī)模。
云的抽象和無狀態(tài)性會影響到數(shù)據(jù)庫。例如,Azure平臺提出了一個非標準關(guān)系數(shù)據(jù)庫的模型,存儲引擎不使用標準的關(guān)系數(shù)據(jù)庫。因此,如果按照標準的關(guān)系型數(shù)據(jù)庫來開發(fā)應(yīng)用,很多工作就毫無意義了。另外,Azure的存儲引擎與微軟提供的基于云服務(wù)的SQL Server版本是不同的,開發(fā)者在設(shè)計時必須注意。
目前,微軟正在加速開發(fā)Azure利用關(guān)系型數(shù)據(jù)庫的能力,同時也為非關(guān)系型數(shù)據(jù)存儲提供了數(shù)據(jù)表式的存儲選擇。App Engine中使用的Big Table數(shù)據(jù)庫模型是另外一個例子?!癇ig Table不是SQL數(shù)據(jù)庫。它支持的一些功能很難進行分割,與我們跨機器存儲數(shù)據(jù)的想法無法結(jié)合?!盙oogle App Engine產(chǎn)品經(jīng)理派特•庫門說,“這意味著開發(fā)者上傳代碼,然后Google進行管理并將數(shù)據(jù)庫分割。這樣的數(shù)據(jù)處理有特定的模式,與傳統(tǒng)SQL模式完全不同,開發(fā)人員必須遵循?!?/P>
云環(huán)境會摒棄掉關(guān)系型數(shù)據(jù)庫?!霸诟吡髁康木W(wǎng)絡(luò)環(huán)境中,關(guān)系型數(shù)據(jù)庫很難管理,而且最終會給開發(fā)者帶來巨大負擔?!迸商?#8226;庫門說。
【編輯推薦】



























