本文從云計算應用的特點出發(fā),分析了在云計算環(huán)境下應用程序開發(fā)設計的一些變化。根據(jù)這些新的特點,本文提出一個“自我感知應用”(Self-Sensing Application)的新概念。接著文章從架構設計的角度闡述了WindowsAzure平臺的構建方式和架構特點,然后結合WindowsAzure平臺的一些功能特點,講述幾個在云計算環(huán)境下典型的應用架構設計方式,期望拋磚引玉。最后,文章展望了應用程序未來的發(fā)展趨勢。
Intel研發(fā)中心架構師張銀奎:Design For Debug!
Excel項目主管:產(chǎn)品規(guī)劃階段的項目管理
惠普研發(fā)實驗室創(chuàng)始人:跨國公司產(chǎn)品創(chuàng)新之路
由InfoQ和MSUP戰(zhàn)略合作舉辦的亞太軟件研發(fā)團隊管理年會珠海站(9.18-19),欲報從速!
多年來應用程序開發(fā)者和架構師們都在努力設計一種既能夠在功能上滿足當前業(yè)務需求,另外又能夠在用戶需求發(fā)生變化或者能夠在可預見的將來適應環(huán)境變化的應用。尤其是在互聯(lián)網(wǎng)領域,架構師都在努力讓自己設計的應用具有比較強的擴展能力,能夠跟得上用戶不斷增長或者出現(xiàn)突發(fā)請求的一些情況。在傳統(tǒng)的Web應用設計中,我們在架構上一般采用基于多層架構的設計,在Web層中大量使用了負載均衡等技術。一般我們的處理方式都是在應用程序設計好之后,在應用部署的過程中事先把環(huán)境配置好,應用程序在運行過程配置都是不發(fā)生變化的。但是,隨著云計算時代的到來,我們面對一些新的挑戰(zhàn),相應的應用程序設計方式隨之發(fā)生了一些變化。我們首先從云計算的技術特點開始討論應用的變化。
毫無疑問,云計算是目前信息產(chǎn)業(yè)中討論得最多的話題。雖然大家對于云計算還沒有一致定義,但是對于云計算的一些特點,相關的服務模型等內(nèi)容日漸趨于統(tǒng)一。在討論云計算應用架構特點之前,我們先從技術的角度來討論一下云計算本身的一些特點。
云計算是一個把信息技術作為服務(IT as a Service)提供的一種方式。這種服務的概念都是從消費方(用戶)角度出發(fā),而不是從服務提供方出發(fā)考慮問題,因此,一個基本特點是云計算要求按需服 務,即用戶可以根據(jù)需求即時得到服務。從這個角度講,云計算就像我們公共服務中的自來水、電和煤氣一樣,集中供應并按需服務和計費。
云計算的一個好處是提高資源的利用率,而這個一般需要通過共享的方式來達到這個目的。這里可以類比一下我們?nèi)粘3燥堉械淖灾秃妥啦偷牟?別。如果需要共享就需要先把資源集中到一個公共的資源池中。在云計算當中,根據(jù)這個資源池中資源的類別,我們把云計算的服務模型分為三種,即所謂的SPI 模型,如下表所示:
資源類別 | 云計算服務模型(SPI) |
應用程序 | Software as a Service (SaaS) |
系統(tǒng)平臺 | Platform as a Service (PaaS) |
基礎設施 | Infrastructure as a Service (IaaS) |
云計算平臺的資源池相對于單個用戶的需求而言是比較大的,因此考慮到會有大量不同用戶共用一個資源池,他們之間的資源使用模式一般存在一定 的互補性,所以對于某個用戶的需求而言,云計算具有很高的擴展性。另外,云計算平臺在做架構設計的時候,都會考慮到如何讓用戶可以平滑擴展他們的資源需 求,比如計算資源,存儲資源等。
彈性服務指的是云計算的資源分配可以根據(jù)應用訪問具體情況進行動態(tài)地調(diào)整。也正是因為如此,云計算對于非恒定需求的應用,比如需求波動很 大、階段性需求等,具有非常好的應用效果。在云計算的環(huán)境中,資源的擴展方式可以分為兩大類,一種是事先可以預測的,比如一些季節(jié)性的需求。另一種是完全 基于某種規(guī)則實時動態(tài)調(diào)整的。無論是哪一種,都要求云計算平臺提供彈性的服務。
對于自服務和自動化概念本身都比較好理解,但是我把這兩個放在一起是因為它們之間的內(nèi)在聯(lián)系。自服務是云計算中降低服務成本,提高服務便捷 性的一種途徑,因此它是一個服務的提供方式。但是,對于云計算服務提供方來說,自服務就要求盡量簡化用戶操作,降低用戶使用服務的難度,提升服務響應速 度,而這個只能通過后臺自動化的方式才能實現(xiàn)。因此從這個意義上來講,自服務是目的,而自動化則是手段。
管理學中有一句名言:沒有考核,就沒有管理。云計算作為服務提供的方式,需要對服務進行度量。一般服務提供方和用戶之間需要有一個服務水平 協(xié)議(SLA)。這樣對于私有云來說,可以根據(jù)服務情況進行內(nèi)部費用核算。而對于公有云來說,服務可度量就是計費的前提,然后根據(jù)實際使用量來進行計費。
從前面的描述我們可以看到云計算給應用程序帶來的一些挑戰(zhàn),那就是應用程序如何在云計算環(huán)境下充分利用云計算平臺的一些特點來更好的滿足用戶需求。云計算應用要能夠利用云計算環(huán)境中可動態(tài)擴展的資源,構建一個具有彈性的高可用應用程序。下面我們分別討論一下云計算環(huán)境下的應用特點和要求。
自動化是人類的夢想,而計算機對自動化領域的發(fā)展有著巨大的影響,它極大的提高了工作和生產(chǎn)效率。在云計算環(huán)境下,自動化要求實際上是對計 算工作本身的一個自動化改變。云計算的自動化可以賦予用戶對平臺基礎架構的資源配置任務進行全面統(tǒng)籌的能力,并實現(xiàn)對資源的動態(tài)分配以提高管理效率、減少 人為錯誤并加快用戶對資源請求的響應速度。應用程序在設計的時候要能充分利用云計算環(huán)境的自動化特性,從而使得應用程序可以在很少或沒有人工干預的情況 下,自動適應需求的變化。
大部分云計算平臺都是用廉價和標準的計算機硬件構成,然后通過云計算軟件的方式在計算能力、可靠性等方面來達到傳統(tǒng)的大型計算機的水準。也 就是說在云計算環(huán)境下,資源池通常是通過分布式軟硬件方式來實現(xiàn)。因此云計算應用程序的運行往往涉及到多個計算資源。無論是計算還是存儲需求,應用程序一 般都會涉及到多個節(jié)點,這樣在設計的時候要考慮并行設計的思想或采用分布計算的方式。比如,有些云計算應用可以根據(jù)計算的要求,采用類似 MapReduce的編程模型。
無論是功能上還是性能上云計算對應用的靈活性提出了更高的要求。這就要求應用程序在設計的時候要考慮松耦合的架構。耦合度與靈活性一般是相 反的,也即耦合度越高靈活性越低,而耦合度越低靈活性越高。因此,在做云計算應用架構設計的時候,一般要追求松耦合的設計。比如,在做Web應用設計的時 候,對于用戶狀態(tài)的保持就需要盡量采用無狀態(tài)的方式來設計,這樣應用程序的水平擴展能力比較好。
在傳統(tǒng)的應用設計中,我們一般采用關系型數(shù)據(jù)庫來存儲數(shù)據(jù)。但是在云計算環(huán)境下,尤其是對于互聯(lián)網(wǎng)應用,存在兩個需要面對的問題。一是云計 算環(huán)境下的數(shù)據(jù)量都比較大,傳統(tǒng)的關系型數(shù)據(jù)庫面臨數(shù)據(jù)擴展能力的挑戰(zhàn)。另一個是許多應用對于數(shù)據(jù)存儲的要求更多體現(xiàn)在非結構化數(shù)據(jù)或者是半結構化數(shù)據(jù)的 存儲上面。因此,大多數(shù)云計算平臺都會提供針對非結構化和半結構化的數(shù)據(jù)存儲方式。這樣應用程序的架構需要針對新的數(shù)據(jù)存儲方式作出調(diào)整。
上面描述的一些應用特點對我們開發(fā)和設計應用程序會帶來許多影響。一個是應用程序在設計的過程中不僅僅需要考慮操作系統(tǒng)平臺或中間件級別的編程接口,還要針對其運行的云平臺的接口來對應用程序進行設計。另外一個比較大的影響是有一些工作量從平臺產(chǎn)品轉(zhuǎn)移到了應用程序的開發(fā)設計人員。比如說,在采用半結構化數(shù)據(jù)存儲的時候,開發(fā)設計人員需要處理數(shù)據(jù)的一致性問題。還有,在云計算平臺上如果想要得到比較好的性能,開發(fā)設計人員往往還需要對數(shù)據(jù)的分區(qū)進行特別設計,或需要采用一些并行設計的算法等。
傳統(tǒng)的基礎架構或系統(tǒng)平臺中的資源都不能動態(tài)配置,因此應用程序在設計的時候主要考慮自身的業(yè)務邏輯的實現(xiàn)。應用程序本身的監(jiān)控和管理都是通過其他系統(tǒng)管理軟件如SystemCenter,Tivoli等來實現(xiàn)。有一些管理得比較好應用程序,可以通過這些系統(tǒng)管理軟件實現(xiàn)部分資源動態(tài)調(diào)整。但是,這些傳統(tǒng)的應用程序本身對底層平臺的運行情況是沒有任何感知的。隨著云計算的出現(xiàn),應用程序本身的自動化逐漸成為可能。我把這些具有運行環(huán)境感知功能的應用程序稱之為“自我感知應用”(Self-Sensing Application)。
自我感知應用的出現(xiàn)是應用程序發(fā)展的一種趨勢,是自動化在應用程序運行過程中的一種體現(xiàn)。在做傳統(tǒng)應用程序設計的時候,我們把主要的精力都放在功能性的需求方面,但是對于一些非功能性的需求往往采用手工配置的方式來實現(xiàn)。云計算平臺的出現(xiàn)使得計算平臺的資源具有可編程的特性,因此我們在應用程序的架構設計中可以通過基礎架構平臺的一些接口來感知應用程序的實際運行情況,并可以結合訪問情況對應用程序的運行資源進行動態(tài)調(diào)整,以實現(xiàn)完善的自動化程序運行。
云計算平臺具有可編程的資源分配,因此我們還可以設定自動化的部署過程,也就是讓應用程序的可以自動化的完成應用程序的部署,升級等工作。自動化部署也是應用程序動態(tài)擴展的一個前提。這樣當需要更多計算實例來處理更多的用戶請求的時候,新的計算實例可以動態(tài)的生成出來并自動啟用。
自我感知應用是應用程序朝著成為具有獨立、自治單元的方式發(fā)展的一種體現(xiàn)。應用架構師在做設計的時候,面對的是底層抽象的、幾乎無限的計算資源,而不是傳統(tǒng)意義上的物理資源。從另外一個角度看這種設計方式也是應用程序與底層計算平臺松耦合的一種體現(xiàn),從而使得應用程序不綁定具體物理硬件。云計算平臺從底層提供幾乎無限的計算、存儲和網(wǎng)絡資源,其上的應用程序就像一個個具有人工智能的獨立單元,他們在完成自身業(yè)務工作之外,還能夠具有自我管理和自我修復的功能。
Windows Azure平臺目前包含Windows Azure,SQL Azure和Windows Azure PlatformAppFabric三大部分,而其中WindowsAzure是平臺最為核心的組成部分,它被稱為云計算操作系統(tǒng),也是本文討論的重點。不過這個操作系統(tǒng)目前只運行在微軟的數(shù)據(jù)中心當中,微軟是通過銷售云計算服務作為她的業(yè)務模式。
圖1:Windows Azure平臺
實際上為了便于理解,我們也可以把WindowsAzure看成是數(shù)據(jù)中心的操作系統(tǒng)。當然,這里我們稱之為操作系統(tǒng)實際上是一種類比,因為WindowsAzure不是傳統(tǒng)意義上的操作系統(tǒng)。但是它履行了資源管理的職責,只不過它管理的資源更為宏觀,數(shù)據(jù)中心中的所有服務器、存儲、交換機和負載均衡器等都接受它的管理。因為未來的數(shù)據(jù)中心會越來越像一臺超級計算機,因此Windows Azure也會越來越像一個超級操作系統(tǒng)。WindowsAzure的設計團隊中就有許多微軟技術重量級人物,其中包括Dave Cutler,他被稱為是Windows NT和VMS之父。
WindowsAzure為開發(fā)者提供了托管的、可擴展的、按需應用的計算和存儲資源,還為開發(fā)者提供了云平臺管理和動態(tài)分配資源的控制手段。WindowsAzure是一個開放的平臺,支持微軟和非微軟的語言和環(huán)境。開發(fā)人員在構建WindowsAzure應用程序和服務時,不僅可以使用熟悉的Microsoft Visual Studio,Eclipse等開發(fā)工具,同時WindowsAzure還支持各種流行的標準與協(xié)議,包括SOAP、REST、XML、和HTTPS等。
從云計算SPI模型來看,WindowsAzure主要處于平臺即服務的層次。按照微軟目前公開的發(fā)展計劃,其將在年內(nèi)提供基礎設施即服務層次的一些服務,比如VM Role。WindowsAzure作為基礎平臺的調(diào)度和管理軟件,它是構建高效、可靠、可動態(tài)擴展應用的重要平臺。主要由四大部分組成:
圖2:Windows Azure的組成
上述四個組成部分中只有開發(fā)環(huán)境是安裝在用戶的計算機上的,用于用戶開發(fā)和測試Windows Azure的應用程序,其余三部分都是Windows Azure服務平臺的一部分而安裝在微軟數(shù)據(jù)中心。
Windows Azure Fabric控制器被比作是WindowsAzure的大腦,它負責平臺中各種資源的統(tǒng)一管理和調(diào)配。而Windows AzureFabric則由其管理的大量IT設備組成。開發(fā)人員通過Windows Azure開發(fā)工具(比如Visual Studio2010和相應的SDK)開發(fā)的應用程序一般分為兩大部分。一部分是應用程序代碼,也稱服務代碼,另一部分是應用的配置文件也稱服務模型。每個應用包括兩個配置文件:服務定義文件和服務配置文件。這兩個配置文件中會包含應用程序在WindowsAzure上運行和發(fā)布的一些信息,如認證信息、服務端口、服務角色、需要的實例數(shù)和自定義變量等。當用戶通過開發(fā)者門戶把應用程序上傳到WindowsAzure平臺的時候,其中的配置文件則由Windows Azure Fabric控制器來讀取,然后由其根據(jù)配置文件中指定的方式進行服務部署。
Windows Azure的計算資源目前是通過成為Web Role和Work Role的方式來分配的。為了便于理解,我們可以認為WebRole和Worker Role是兩種不同的虛擬機模版。其中Web Role是為了方便運行Web應用程序而設計的,而WorkRole是為了其他應用類型,比如批處理而設計的。一種比較常見的架構設計方式是使用Web Role來處理展示邏輯,而通過WorkerRole來進行業(yè)務邏輯處理。Web Role負責客戶端的HTTP請求,為了支持應用的擴展,WebRole上的應用一般會設計為無狀態(tài)的,從而使得系統(tǒng)可以方便的增加Web Role實例數(shù)量,提高應用的并發(fā)處理能力。
圖3:Web Role與Work Role的分工
當應用程序部署完后,Windows AzureFabric控制器便開始監(jiān)控應用的狀態(tài),以保證應用程序的正常運行。為了使控制器能夠?qū)崟r獲取應用和運行實例的狀態(tài),所有Role實例,也即虛擬機實例中都預先安裝了代理程序,F(xiàn)abric控制器就是通過這些代理來實時獲取相應的狀態(tài)信息。當檢測到實例故障的時候,F(xiàn)abric控制器就會啟動新的包含同樣服務的實例并添加到服務組中去。按照微軟的計劃,Windows Azure將在今年晚些時候提供另外一種稱為VMRole的計算服務,它將讓用戶對底層計算平臺有更多的控制權,可以通過遠程桌面服務(RDS)方式連接過去。其主要目的是要已有的Windows應用程序可以相對平滑地遷移到Windows Azure上去。
Windows Azure 提供的存儲不是一個關系型數(shù)據(jù)系統(tǒng),并且它的查詢語言也不是SQL,它主要被設計用來支持建于WindowsAzure上的應用,它提供更簡單容易擴展的存儲。當然,對于在Windows Azure之外的應用程序也可以通過標準的RESTAPI來訪問和使用這個存儲服務。WindowsAzure主要提供了三種數(shù)據(jù)存儲方式以滿足應用程序的不同需求,這三種存儲方式分別為Blob、Table和Queue。WindowsAzure為了提升兼容性而提供的Drive其底層實現(xiàn)實際上就是Blob的一種。所有這三種存儲服務都可以通過標準的REST API來訪問。
圖4:使用REST API訪問存儲服務
Windows Azure提供的存儲服務具有以下特點:
Blob非常便于存儲二進制數(shù)據(jù),比如JPEG圖片或MP3文檔等多媒體數(shù)據(jù)。Blob適用于部分應用,但它存儲的數(shù)據(jù)缺乏結構化,為了讓應用能夠以更易獲取的方式來使用數(shù)據(jù),Windows Azure存儲服務提供了Table。它最大的不同之處是提供半結構化數(shù)據(jù)的存儲,并且是一種可擴展存儲,它通過多個節(jié)點對分布式數(shù)據(jù)進行擴展和收縮,這比使用一個標準的關系型數(shù)據(jù)庫更為有效。與Blob和Table都是用于長期存儲數(shù)據(jù)不同,Queue的主要功能是提供一種Web Role實例和WorkerRole 實例之間通信的方式。而Drive的主要作用是為Windows Azure應用程序提供一個NTFS文件卷,這樣應用程序可以通過NTFSAPI來訪問存儲的數(shù)據(jù)。提供這種Drive存儲方式使得遷移已有應用程序到WindowsAzure的過程變得更為平滑。無論數(shù)據(jù)以Blob、Table、Queue或Drive任何方式存儲,WindowsAzure存儲服務都會將所有數(shù)據(jù)復制三次,如果有一份拷貝出現(xiàn)問題,存儲服務能自動恢復出一份新的拷貝,保證應用能夠準確及時讀取原始數(shù)據(jù)信息。
對于一個自我感知應用而言,一方面它要能夠感知底層運行平臺的一些環(huán)境信息,另一方面它還需要一種機制能夠把自身運行要求轉(zhuǎn)遞給底層運行環(huán)境。我們知道Windows Azure上應用程序由代碼和基于XML的配置文件兩部分組成。應用程序可以通過配置文件把自身運行要求傳遞給WindowsAzure,確切的講是提交給Fabric控制器。但是,應用程序如何才能感知環(huán)境的一些變化呢?加入配置文件更新之后應用程序如何才能得到通知并作出響應呢?這里就要用到Windows Azure提供的服務運行時編程接口(Service Runtime API)。
Windows Azure的服務運行時編程接口最常用的使用方式就是幫助應用程序了解應用服務和應用所在的Role實例的信息,包括:
服務運行時編程接口可以通過兩種方式使用。對于.NET托管代碼,WindowsAzure的SDK中包含一個名為Microsoft.WindowsAzure.ServiceRuntime.dll,當用VisualStudio新生成一個云服務項目時它會被自動引用。而對于本地代碼,可以通過使用SDK中的頭文件和庫文件就可以用C來調(diào)用這個編程接口了。
服務運行時編程接口是應用程序本身用來得到自身及其運行環(huán)境信息用的,但是如果應用程序之外,比如說一個管理工具要得到指定應用程序的信息,那么一般需要利用另外一個稱為服務管理的編程接口(Service ManagementAPI)。這兩個編程接口在功能有重合的地方,它們之間的最大區(qū)別在于服務運行時編程接口在WindowsAzure中運行,而服務管理的編程接口一般在Windows Azure之外運行,它更多的用在那些針對WindowsAzure的管理工具開發(fā)當中。
當微軟在2005年底提出軟件+服務的概念的時候,許多人都認為這只是一個市場宣傳口號。但是,在過去幾年我們發(fā)現(xiàn)有越來越多的應用通過軟件+服務的模式取得成功。從應用架構角度來看,軟件+服務的方式結合了云服務和設備端兩方面的優(yōu)勢。從傳統(tǒng)的應用如殺毒軟件,LiveMessenger/QQ到幫助蘋果取得成功的iTunes,應用商店等,都是結合了終端軟件和云計算服務的各自特點。
圖5:軟件+服務的方式
軟件+服務對于架構師的意義在于在設計應用架構的時候,可以打開思路,充分利用云和端的各自優(yōu)勢。由于WindowsAzure提供的服務如計算、存儲都是可以獨立使用,所以對于像一個做在線遠程教學的應用,在設計的時候就可以考慮自己構建運行應用程序的網(wǎng)站,但是把課件視頻等大數(shù)據(jù)量存放到Windows Azure的存儲服務上,大大降低項目對存儲設備的投資,從而降低項目的進入門檻。
運行在各種端設備上的應用程序可以直接與構建在WindowsAzure平臺上的服務進行交互,但是對于一些需要透過防火墻才能與互聯(lián)網(wǎng)上的云計算服務進行集成的企業(yè)應用來說,需要一個InternetService Bus(ISB)來進行應用集成。Windows AzureAppFabric就提供了ISB的功能,讓企業(yè)內(nèi)部應用可以不受防火墻和NAT等限制進行服務集成。
我們在通過軟件+服務的方式進行應用架構設計的時候,由于是基于互聯(lián)網(wǎng)的分布式計算,因此要特別考慮到網(wǎng)絡延時對應用的設計和架構的影響。我們可以采用不同的方式來降低分布式方式帶來的影響。比如盡量采用粗粒度的調(diào)用方式,降低軟件與云服務的交互次數(shù)。另外,在架構設計的時候,盡量讓動態(tài)數(shù)據(jù)與計算工作靠近,讓靜態(tài)數(shù)據(jù)與使用用戶距離更近。WindowsAzure的存儲服務在創(chuàng)建賬號的時候,用戶可以選擇數(shù)據(jù)存儲的數(shù)據(jù)中心位置。除此之外,WindowsAzure還提供了CDN服務,從而使得應用數(shù)據(jù)可以盡可能靠近訪問用戶。
云計算平臺能夠從資源使用的角度保證應用程序的靈活性。但是要讓應用的構建和功能上保持靈活性,我們需要采用面向服務的方式來構建我們的應用,也就是說在云計算的環(huán)境下我們同樣需要SOA的思想來設計我們的應用。我們一般認為服務就是通過某種標準的接口來訪問應用的功能和數(shù)據(jù)。如果我們事先構建了一個服務池,那么就可以通過某種服務編排的方式來創(chuàng)建一個新的服務或一個新的組合應用。這種構建方式可以給應用的架構帶來很大的靈活性。
在云計算的環(huán)境下,我們可以融合軟件+服務和SOA的設計思想,從問題本身需求出發(fā)設計和組合應用的服務,可以利用不同平臺上的服務而不在局限于企業(yè)內(nèi)部。在設計服務的時候,一個重要的設計目標就是讓服務變成平臺或者位置無關。新的服務或應用可以組合在企業(yè)內(nèi)部的應用服務以及部署在像WindowsAzure云平臺上的應用服務,如下圖所示:
圖6:SOA設計方式
在云計算環(huán)境下,應用程序的運行環(huán)境等變得不像傳統(tǒng)環(huán)境那樣可控。對于大規(guī)模分布的應用而言,要充分考慮到底層環(huán)境的單個節(jié)點出問題的可能性。為了保證應用程序的可靠運行,一般會采用松耦合的架構設計,并在架構設計的時候考慮系統(tǒng)如何快速從錯誤中恢復過來,比如狀態(tài)的保持,自動化數(shù)據(jù)備份和恢復等。另外,松耦合架構設計不但可以增強系統(tǒng)的整體健壯性,還能增加系統(tǒng)的可擴展性。
一種的常見的設計方式就是采用異步消息機制來實現(xiàn)松耦合的架構設計。通過異步消息機制可以使得應用各個模塊之間通過事先定義好的接口進行異步通信,相互之間就像一個不透明的黑盒子。比如對于Web應用程序,我們可以通過這種方式把Web服務器、應用服務器和數(shù)據(jù)庫服務器之間進行隔離。在云計算環(huán)境中,這種異步機制對于應用程序的水平擴展顯得更為重要。這也就是為什么無論是亞馬遜的AWS還是微軟的WindowsAzure都會提供基于消息隊列的通信機制。下面是一個典型的基于Windows Azure的應用架構。
圖7:典型的基于Windows Azure的應用架構
在上面的架構中,我們可以看到Web Role實例與Worker Role實例不再一一綁定,而是通過WindowsAzure的存儲隊列進行通信。因此,Web Role的實例數(shù)和WorkerRole的實例數(shù)可以根據(jù)業(yè)務具體情況進行分配。這種通過消息隊列的方式同時也很好的解決了數(shù)據(jù)的并發(fā)處理,并使整個系統(tǒng)具有良好的擴展性。而且,某個實例暫時停止工作都不會對整個系統(tǒng)造成大的影響,從而增強了應用程序的可用性。
云計算無疑已受到大家極大的關注,但是它還是一個相對較新的概念,相關的技術正處于快速發(fā)展的過程中。我們已經(jīng)可以看到云計算對IT行業(yè)的硬件模型,應用模型和用戶體驗等方面帶來了革命性的影響。從應用模型的角度來看,云計算平臺的出現(xiàn)使得開發(fā)人員可以快速的構建高可用的,可以幾乎無限擴展的應用。WindowsAzure平臺為廣大開發(fā)人員提供了一個開發(fā)、設計和運行應用的云計算環(huán)境。隨著云計算相關技術的進一步發(fā)展,我們也將在WindowsAzure上看到越來越多的新特性,從而使我們能夠進一步簡化在其上開發(fā)自我感知應用的工作,另外非功能性的一些要求也將更多通過配置文件而不是代碼來實現(xiàn)。
人們對于信息技術需求的發(fā)展始終沒有改變,那就是追求可靠,便捷,易用的信息應用。當我們把一個冰箱連接到電源插座的時候,我們從來不會去考慮這個電力是從哪個發(fā)電站來的,我們也不需要成為一個電力專家來使用這個冰箱。云計算的出現(xiàn)讓信息技術往這個方向更進了一步。我們認為應用程序?qū)⒅饾u演變成具有自我感知能力的應用,成為一個能夠根據(jù)平臺環(huán)境和用戶請求進行自我調(diào)整和自我修復的自治單元。也許不遠的將來,整個互聯(lián)網(wǎng)就像一臺巨大的計算機,其上提供無限的計算資源和服務,人們使用其上的應用程序就像我們現(xiàn)在使用自來水,電力那樣方便,自然。