小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

InfoQ: 基于Windows Azure的云計算應(yīng)用設(shè)計

 ShangShujie 2010-08-19

本文從云計算應(yīng)用的特點出發(fā),分析了在云計算環(huán)境下應(yīng)用程序開發(fā)設(shè)計的一些變化。根據(jù)這些新的特點,本文提出一個“自我感知應(yīng)用”(Self- Sensing Application)的新概念。接著文章從架構(gòu)設(shè)計的角度闡述了Windows Azure平臺的構(gòu)建方式和架構(gòu)特點,然后結(jié)合Windows Azure平臺的一些功能特點,講述幾個在云計算環(huán)境下典型的應(yīng)用架構(gòu)設(shè)計方式,期望拋磚引玉。最后,文章展望了應(yīng)用程序未來的發(fā)展趨勢。

云計算環(huán)境下的應(yīng)用特點

多年來應(yīng)用程序開發(fā)者和架構(gòu)師們都在努力設(shè)計一種既能夠在功能上滿足當前業(yè)務(wù)需求,另外又能夠在用戶需求發(fā)生變化或者能夠在可預(yù)見的將來適應(yīng)環(huán)境變 化的應(yīng)用。尤其是在互聯(lián)網(wǎng)領(lǐng)域,架構(gòu)師都在努力讓自己設(shè)計的應(yīng)用具有比較強的擴展能力,能夠跟得上用戶不斷增長或者出現(xiàn)突發(fā)請求的一些情況。在傳統(tǒng)的 Web應(yīng)用設(shè)計中,我們在架構(gòu)上一般采用基于多層架構(gòu)的設(shè)計,在Web層中大量使用了負載均衡等技術(shù)。一般我們的處理方式都是在應(yīng)用程序設(shè)計好之后,在應(yīng) 用部署的過程中事先把環(huán)境配置好,應(yīng)用程序在運行過程配置都是不發(fā)生變化的。但是,隨著云計算時代的到來,我們面對一些新的挑戰(zhàn),相應(yīng)的應(yīng)用程序設(shè)計方式 隨之發(fā)生了一些變化。我們首先從云計算的技術(shù)特點開始討論應(yīng)用的變化。

從技術(shù)角度看云計算的特點

毫無疑問,云計算是目前信息產(chǎn)業(yè)中討論得最多的話題。雖然大家對于云計算還沒有一致定義,但是對于云計算的一些特點,相關(guān)的服務(wù)模型等內(nèi)容日漸趨于統(tǒng)一。在討論云計算應(yīng)用架構(gòu)特點之前,我們先從技術(shù)的角度來討論一下云計算本身的一些特點。

  • 按需服務(wù)
  • 云計算是一個把信息技術(shù)作為服務(wù)(IT as a Service)提供的一種方式。這種服務(wù)的概念都是從消費方(用戶)角度出發(fā),而不是從服務(wù)提供方出發(fā)考慮問題,因此,一個基本特點是云計算要求按需服 務(wù),即用戶可以根據(jù)需求即時得到服務(wù)。從這個角度講,云計算就像我們公共服務(wù)中的自來水、電和煤氣一樣,集中供應(yīng)并按需服務(wù)和計費。

  • 資源池
  • 云計算的一個好處是提高資源的利用率,而這個一般需要通過共享的方式來達到這個目的。這里可以類比一下我們?nèi)粘3燥堉械淖灾秃妥啦偷牟? 別。如果需要共享就需要先把資源集中到一個公共的資源池中。在云計算當中,根據(jù)這個資源池中資源的類別,我們把云計算的服務(wù)模型分為三種,即所謂的SPI 模型,如下表所示:

    資源類別

    云計算服務(wù)模型(SPI)

    應(yīng)用程序

    Software as a Service (SaaS)

    系統(tǒng)平臺

    Platform as a Service (PaaS)

    基礎(chǔ)設(shè)施

    Infrastructure as a Service (IaaS)

  • 高可擴展性
  • 云計算平臺的資源池相對于單個用戶的需求而言是比較大的,因此考慮到會有大量不同用戶共用一個資源池,他們之間的資源使用模式一般存在一定 的互補性,所以對于某個用戶的需求而言,云計算具有很高的擴展性。另外,云計算平臺在做架構(gòu)設(shè)計的時候,都會考慮到如何讓用戶可以平滑擴展他們的資源需 求,比如計算資源,存儲資源等。

  • 彈性服務(wù)
  • 彈性服務(wù)指的是云計算的資源分配可以根據(jù)應(yīng)用訪問具體情況進行動態(tài)地調(diào)整。也正是因為如此,云計算對于非恒定需求的應(yīng)用,比如需求波動很 大、階段性需求等,具有非常好的應(yīng)用效果。在云計算的環(huán)境中,資源的擴展方式可以分為兩大類,一種是事先可以預(yù)測的,比如一些季節(jié)性的需求。另一種是完全 基于某種規(guī)則實時動態(tài)調(diào)整的。無論是哪一種,都要求云計算平臺提供彈性的服務(wù)。

  • 自服務(wù)和自動化
  • 對于自服務(wù)和自動化概念本身都比較好理解,但是我把這兩個放在一起是因為它們之間的內(nèi)在聯(lián)系。自服務(wù)是云計算中降低服務(wù)成本,提高服務(wù)便捷 性的一種途徑,因此它是一個服務(wù)的提供方式。但是,對于云計算服務(wù)提供方來說,自服務(wù)就要求盡量簡化用戶操作,降低用戶使用服務(wù)的難度,提升服務(wù)響應(yīng)速 度,而這個只能通過后臺自動化的方式才能實現(xiàn)。因此從這個意義上來講,自服務(wù)是目的,而自動化則是手段。

  • 服務(wù)可度量
  • 管理學中有一句名言:沒有考核,就沒有管理。云計算作為服務(wù)提供的方式,需要對服務(wù)進行度量。一般服務(wù)提供方和用戶之間需要有一個服務(wù)水平 協(xié)議(SLA)。這樣對于私有云來說,可以根據(jù)服務(wù)情況進行內(nèi)部費用核算。而對于公有云來說,服務(wù)可度量就是計費的前提,然后根據(jù)實際使用量來進行計費。

云計算應(yīng)用的特點

從前面的描述我們可以看到云計算給應(yīng)用程序帶來的一些挑戰(zhàn),那就是應(yīng)用程序如何在云計算環(huán)境下充分利用云計算平臺的一些特點來更好的滿足用戶需求。 云計算應(yīng)用要能夠利用云計算環(huán)境中可動態(tài)擴展的資源,構(gòu)建一個具有彈性的高可用應(yīng)用程序。下面我們分別討論一下云計算環(huán)境下的應(yīng)用特點和要求。

  • 自動化要求
  • 自動化是人類的夢想,而計算機對自動化領(lǐng)域的發(fā)展有著巨大的影響,它極大的提高了工作和生產(chǎn)效率。在云計算環(huán)境下,自動化要求實際上是對計 算工作本身的一個自動化改變。云計算的自動化可以賦予用戶對平臺基礎(chǔ)架構(gòu)的資源配置任務(wù)進行全面統(tǒng)籌的能力,并實現(xiàn)對資源的動態(tài)分配以提高管理效率、減少 人為錯誤并加快用戶對資源請求的響應(yīng)速度。應(yīng)用程序在設(shè)計的時候要能充分利用云計算環(huán)境的自動化特性,從而使得應(yīng)用程序可以在很少或沒有人工干預(yù)的情況 下,自動適應(yīng)需求的變化。

  • 分布式計算
  • 大部分云計算平臺都是用廉價和標準的計算機硬件構(gòu)成,然后通過云計算軟件的方式在計算能力、可靠性等方面來達到傳統(tǒng)的大型計算機的水準。也 就是說在云計算環(huán)境下,資源池通常是通過分布式軟硬件方式來實現(xiàn)。因此云計算應(yīng)用程序的運行往往涉及到多個計算資源。無論是計算還是存儲需求,應(yīng)用程序一 般都會涉及到多個節(jié)點,這樣在設(shè)計的時候要考慮并行設(shè)計的思想或采用分布計算的方式。比如,有些云計算應(yīng)用可以根據(jù)計算的要求,采用類似 MapReduce的編程模型。

  • 松耦合
  • 無論是功能上還是性能上云計算對應(yīng)用的靈活性提出了更高的要求。這就要求應(yīng)用程序在設(shè)計的時候要考慮松耦合的架構(gòu)。耦合度與靈活性一般是相 反的,也即耦合度越高靈活性越低,而耦合度越低靈活性越高。因此,在做云計算應(yīng)用架構(gòu)設(shè)計的時候,一般要追求松耦合的設(shè)計。比如,在做Web應(yīng)用設(shè)計的時 候,對于用戶狀態(tài)的保持就需要盡量采用無狀態(tài)的方式來設(shè)計,這樣應(yīng)用程序的水平擴展能力比較好。

  • 數(shù)據(jù)存儲方式
  • 在傳統(tǒng)的應(yīng)用設(shè)計中,我們一般采用關(guān)系型數(shù)據(jù)庫來存儲數(shù)據(jù)。但是在云計算環(huán)境下,尤其是對于互聯(lián)網(wǎng)應(yīng)用,存在兩個需要面對的問題。一是云計 算環(huán)境下的數(shù)據(jù)量都比較大,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫面臨數(shù)據(jù)擴展能力的挑戰(zhàn)。另一個是許多應(yīng)用對于數(shù)據(jù)存儲的要求更多體現(xiàn)在非結(jié)構(gòu)化數(shù)據(jù)或者是半結(jié)構(gòu)化數(shù)據(jù)的 存儲上面。因此,大多數(shù)云計算平臺都會提供針對非結(jié)構(gòu)化和半結(jié)構(gòu)化的數(shù)據(jù)存儲方式。這樣應(yīng)用程序的架構(gòu)需要針對新的數(shù)據(jù)存儲方式作出調(diào)整。

上面描述的一些應(yīng)用特點對我們開發(fā)和設(shè)計應(yīng)用程序會帶來許多影響。一個是應(yīng)用程序在設(shè)計的過程中不僅僅需要考慮操作系統(tǒng)平臺或中間件級別的編程接 口,還要針對其運行的云平臺的接口來對應(yīng)用程序進行設(shè)計。另外一個比較大的影響是有一些工作量從平臺產(chǎn)品轉(zhuǎn)移到了應(yīng)用程序的開發(fā)設(shè)計人員。比如說,在采用 半結(jié)構(gòu)化數(shù)據(jù)存儲的時候,開發(fā)設(shè)計人員需要處理數(shù)據(jù)的一致性問題。還有,在云計算平臺上如果想要得到比較好的性能,開發(fā)設(shè)計人員往往還需要對數(shù)據(jù)的分區(qū)進 行特別設(shè)計,或需要采用一些并行設(shè)計的算法等。

具有自我感知能力的應(yīng)用

傳統(tǒng)的基礎(chǔ)架構(gòu)或系統(tǒng)平臺中的資源都不能動態(tài)配置,因此應(yīng)用程序在設(shè)計的時候主要考慮自身的業(yè)務(wù)邏輯的實現(xiàn)。應(yīng)用程序本身的監(jiān)控和管理都是通過其他 系統(tǒng)管理軟件如System Center,Tivoli等來實現(xiàn)。有一些管理得比較好應(yīng)用程序,可以通過這些系統(tǒng)管理軟件實現(xiàn)部分資源動態(tài)調(diào)整。但是,這些傳統(tǒng)的應(yīng)用程序本身對底層 平臺的運行情況是沒有任何感知的。隨著云計算的出現(xiàn),應(yīng)用程序本身的自動化逐漸成為可能。我把這些具有運行環(huán)境感知功能的應(yīng)用程序稱之為“自我感知應(yīng)用”(Self-Sensing Application)。

自我感知應(yīng)用的出現(xiàn)是應(yīng)用程序發(fā)展的一種趨勢,是自動化在應(yīng)用程序運行過程中的一種體現(xiàn)。在做傳統(tǒng)應(yīng)用程序設(shè)計的時候,我們把主要的精力都放在功能 性的需求方面,但是對于一些非功能性的需求往往采用手工配置的方式來實現(xiàn)。云計算平臺的出現(xiàn)使得計算平臺的資源具有可編程的特性,因此我們在應(yīng)用程序的架 構(gòu)設(shè)計中可以通過基礎(chǔ)架構(gòu)平臺的一些接口來感知應(yīng)用程序的實際運行情況,并可以結(jié)合訪問情況對應(yīng)用程序的運行資源進行動態(tài)調(diào)整,以實現(xiàn)完善的自動化程序運 行。

云計算平臺具有可編程的資源分配,因此我們還可以設(shè)定自動化的部署過程,也就是讓應(yīng)用程序的可以自動化的完成應(yīng)用程序的部署,升級等工作。自動化部 署也是應(yīng)用程序動態(tài)擴展的一個前提。這樣當需要更多計算實例來處理更多的用戶請求的時候,新的計算實例可以動態(tài)的生成出來并自動啟用。

自我感知應(yīng)用是應(yīng)用程序朝著成為具有獨立、自治單元的方式發(fā)展的一種體現(xiàn)。應(yīng)用架構(gòu)師在做設(shè)計的時候,面對的是底層抽象的、幾乎無限的計算資源,而 不是傳統(tǒng)意義上的物理資源。從另外一個角度看這種設(shè)計方式也是應(yīng)用程序與底層計算平臺松耦合的一種體現(xiàn),從而使得應(yīng)用程序不綁定具體物理硬件。云計算平臺 從底層提供幾乎無限的計算、存儲和網(wǎng)絡(luò)資源,其上的應(yīng)用程序就像一個個具有人工智能的獨立單元,他們在完成自身業(yè)務(wù)工作之外,還能夠具有自我管理和自我修 復的功能。

Windows Azure的架構(gòu)設(shè)計

Windows Azure的概況

Windows Azure平臺目前包含Windows Azure,SQL Azure和Windows Azure Platform AppFabric三大部分,而其中Windows Azure是平臺最為核心的組成部分,它被稱為云計算操作系統(tǒng),也是本文討論的重點。不過這個操作系統(tǒng)目前只運行在微軟的數(shù)據(jù)中心當中,微軟是通過銷售云 計算服務(wù)作為她的業(yè)務(wù)模式。

圖1:Windows Azure平臺

實際上為了便于理解,我們也可以把Windows Azure看成是數(shù)據(jù)中心的操作系統(tǒng)。當然,這里我們稱之為操作系統(tǒng)實際上是一種類比,因為Windows Azure不是傳統(tǒng)意義上的操作系統(tǒng)。但是它履行了資源管理的職責,只不過它管理的資源更為宏觀,數(shù)據(jù)中心中的所有服務(wù)器、存儲、交換機和負載均衡器等都 接受它的管理。因為未來的數(shù)據(jù)中心會越來越像一臺超級計算機,因此Windows Azure也會越來越像一個超級操作系統(tǒng)。Windows Azure的設(shè)計團隊中就有許多微軟技術(shù)重量級人物,其中包括Dave Cutler,他被稱為是Windows NT和VMS之父。

Windows Azure為開發(fā)者提供了托管的、可擴展的、按需應(yīng)用的計算和存儲資源,還為開發(fā)者提供了云平臺管理和動態(tài)分配資源的控制手段。Windows Azure是一個開放的平臺,支持微軟和非微軟的語言和環(huán)境。開發(fā)人員在構(gòu)建Windows Azure應(yīng)用程序和服務(wù)時,不僅可以使用熟悉的Microsoft Visual Studio,Eclipse等開發(fā)工具,同時Windows Azure還支持各種流行的標準與協(xié)議,包括SOAP、REST、XML、和HTTPS等。

Windows Azure的組成和架構(gòu)

從云計算SPI模型來看,Windows Azure主要處于平臺即服務(wù)的層次。按照微軟目前公開的發(fā)展計劃,其將在年內(nèi)提供基礎(chǔ)設(shè)施即服務(wù)層次的一些服務(wù),比如VM Role。Windows Azure作為基礎(chǔ)平臺的調(diào)度和管理軟件,它是構(gòu)建高效、可靠、可動態(tài)擴展應(yīng)用的重要平臺。主要由四大部分組成:

  • 計算服務(wù)
  • 存儲服務(wù)
  • 管理服務(wù)
  • 開發(fā)環(huán)境

圖2:Windows Azure的組成

上述四個組成部分中只有開發(fā)環(huán)境是安裝在用戶的計算機上的,用于用戶開發(fā)和測試Windows Azure的應(yīng)用程序,其余三部分都是Windows Azure服務(wù)平臺的一部分而安裝在微軟數(shù)據(jù)中心。

Windows Azure Fabric控制器被比作是Windows Azure的大腦,它負責平臺中各種資源的統(tǒng)一管理和調(diào)配。而Windows Azure Fabric則由其管理的大量IT設(shè)備組成。開發(fā)人員通過Windows Azure開發(fā)工具(比如Visual Studio 2010和相應(yīng)的SDK)開發(fā)的應(yīng)用程序一般分為兩大部分。一部分是應(yīng)用程序代碼,也稱服務(wù)代碼,另一部分是應(yīng)用的配置文件也稱服務(wù)模型。每個應(yīng)用包括兩 個配置文件:服務(wù)定義文件和服務(wù)配置文件。這兩個配置文件中會包含應(yīng)用程序在Windows Azure上運行和發(fā)布的一些信息,如認證信息、服務(wù)端口、服務(wù)角色、需要的實例數(shù)和自定義變量等。當用戶通過開發(fā)者門戶把應(yīng)用程序上傳到Windows Azure平臺的時候,其中的配置文件則由Windows Azure Fabric控制器來讀取,然后由其根據(jù)配置文件中指定的方式進行服務(wù)部署。

Windows Azure的計算資源目前是通過成為Web Role和Work Role的方式來分配的。為了便于理解,我們可以認為Web Role和Worker Role是兩種不同的虛擬機模版。其中Web Role是為了方便運行Web應(yīng)用程序而設(shè)計的,而Work Role是為了其他應(yīng)用類型,比如批處理而設(shè)計的。一種比較常見的架構(gòu)設(shè)計方式是使用Web Role來處理展示邏輯,而通過Worker Role來進行業(yè)務(wù)邏輯處理。Web Role負責客戶端的HTTP請求,為了支持應(yīng)用的擴展,Web Role上的應(yīng)用一般會設(shè)計為無狀態(tài)的,從而使得系統(tǒng)可以方便的增加Web Role實例數(shù)量,提高應(yīng)用的并發(fā)處理能力。

圖3:Web Role與Work Role的分工

當應(yīng)用程序部署完后,Windows Azure Fabric控制器便開始監(jiān)控應(yīng)用的狀態(tài),以保證應(yīng)用程序的正常運行。為了使控制器能夠?qū)崟r獲取應(yīng)用和運行實例的狀態(tài),所有Role實例,也即虛擬機實例 中都預(yù)先安裝了代理程序,F(xiàn)abric控制器就是通過這些代理來實時獲取相應(yīng)的狀態(tài)信息。當檢測到實例故障的時候,F(xiàn)abric控制器就會啟動新的包含同 樣服務(wù)的實例并添加到服務(wù)組中去。按照微軟的計劃,Windows Azure將在今年晚些時候提供另外一種稱為VM Role的計算服務(wù),它將讓用戶對底層計算平臺有更多的控制權(quán),可以通過遠程桌面服務(wù)(RDS)方式連接過去。其主要目的是要已有的Windows應(yīng)用程 序可以相對平滑地遷移到Windows Azure上去。

Windows Azure 提供的存儲不是一個關(guān)系型數(shù)據(jù)系統(tǒng),并且它的查詢語言也不是SQL,它主要被設(shè)計用來支持建于Windows Azure上的應(yīng)用,它提供更簡單容易擴展的存儲。當然,對于在Windows Azure之外的應(yīng)用程序也可以通過標準的REST API來訪問和使用這個存儲服務(wù)。Windows Azure主要提供了三種數(shù)據(jù)存儲方式以滿足應(yīng)用程序的不同需求,這三種存儲方式分別為Blob、Table和Queue。Windows Azure為了提升兼容性而提供的Drive其底層實現(xiàn)實際上就是Blob的一種。所有這三種存儲服務(wù)都可以通過標準的REST API來訪問。

圖4:使用REST API訪問存儲服務(wù)

Windows Azure提供的存儲服務(wù)具有以下特點:

  • 可以存放大量數(shù)據(jù)
  • 大范圍分布的
  • 可以無限擴展的
  • 所有數(shù)據(jù)都會復制多份
  • 可以選擇數(shù)據(jù)存儲地點

Blob非常便于存儲二進制數(shù)據(jù),比如JPEG圖片或MP3文檔等多媒體數(shù)據(jù)。Blob適用于部分應(yīng)用,但它存儲的數(shù)據(jù)缺乏結(jié)構(gòu)化,為了讓應(yīng)用能夠 以更易獲取的方式來使用數(shù)據(jù),Windows Azure 存儲服務(wù)提供了Table。它最大的不同之處是提供半結(jié)構(gòu)化數(shù)據(jù)的存儲,并且是一種可擴展存儲,它通過多個節(jié)點對分布式數(shù)據(jù)進行擴展和收縮,這比使用一個 標準的關(guān)系型數(shù)據(jù)庫更為有效。與Blob和Table都是用于長期存儲數(shù)據(jù)不同,Queue的主要功能是提供一種Web Role實例和Worker Role 實例之間通信的方式。而Drive的主要作用是為Windows Azure應(yīng)用程序提供一個NTFS文件卷,這樣應(yīng)用程序可以通過NTFS API來訪問存儲的數(shù)據(jù)。提供這種Drive存儲方式使得遷移已有應(yīng)用程序到Windows Azure的過程變得更為平滑。無論數(shù)據(jù)以Blob、Table、Queue或Drive任何方式存儲,Windows Azure存儲服務(wù)都會將所有數(shù)據(jù)復制三次,如果有一份拷貝出現(xiàn)問題,存儲服務(wù)能自動恢復出一份新的拷貝,保證應(yīng)用能夠準確及時讀取原始數(shù)據(jù)信息。

Windows Azure應(yīng)用程序的自我感知

對于一個自我感知應(yīng)用而言,一方面它要能夠感知底層運行平臺的一些環(huán)境信息,另一方面它還需要一種機制能夠把自身運行要求轉(zhuǎn)遞給底層運行環(huán)境。我們 知道Windows Azure上應(yīng)用程序由代碼和基于XML的配置文件兩部分組成。應(yīng)用程序可以通過配置文件把自身運行要求傳遞給Windows Azure,確切的講是提交給Fabric控制器。但是,應(yīng)用程序如何才能感知環(huán)境的一些變化呢?加入配置文件更新之后應(yīng)用程序如何才能得到通知并作出響 應(yīng)呢?這里就要用到Windows Azure提供的服務(wù)運行時編程接口(Service Runtime API)。

Windows Azure的服務(wù)運行時編程接口最常用的使用方式就是幫助應(yīng)用程序了解應(yīng)用服務(wù)和應(yīng)用所在的Role實例的信息,包括:

  • 它能夠讓應(yīng)用程序訪問在服務(wù)配置文件和服務(wù)定義文件中的最新服務(wù)配置信息。當配置文件的信息被更新的時候,服務(wù)運行時編程接口能夠保證返回最新的配置信息。
  • 它能夠應(yīng)用得到最新的服務(wù)拓撲結(jié)構(gòu),比如哪些Role實例在運行,每種Role類型有多少實例等。
  • 由于Worker Role中的代碼運行周期有點類似于有限狀態(tài)自動機的處理方式,服務(wù)運行時編程接口能夠幫助應(yīng)用得到Worker Role實例的生命周期信息。

服務(wù)運行時編程接口可以通過兩種方式使用。對于.NET托管代碼,Windows Azure的SDK中包含一個名為Microsoft.WindowsAzure.ServiceRuntime.dll,當用Visual Studio新生成一個云服務(wù)項目時它會被自動引用。而對于本地代碼,可以通過使用SDK中的頭文件和庫文件就可以用C來調(diào)用這個編程接口了。

服務(wù)運行時編程接口是應(yīng)用程序本身用來得到自身及其運行環(huán)境信息用的,但是如果應(yīng)用程序之外,比如說一個管理工具要得到指定應(yīng)用程序的信息,那么一 般需要利用另外一個稱為服務(wù)管理的編程接口(Service Management API)。這兩個編程接口在功能有重合的地方,它們之間的最大區(qū)別在于服務(wù)運行時編程接口在Windows Azure中運行,而服務(wù)管理的編程接口一般在Windows Azure之外運行,它更多的用在那些針對Windows Azure的管理工具開發(fā)當中。

常見的云計算應(yīng)用設(shè)計方式

軟件+服務(wù)的方式

當微軟在2005年底提出軟件+服務(wù)的概念的時候,許多人都認為這只是一個市場宣傳口號。但是,在過去幾年我們發(fā)現(xiàn)有越來越多的應(yīng)用通過軟件+服務(wù) 的模式取得成功。從應(yīng)用架構(gòu)角度來看,軟件+服務(wù)的方式結(jié)合了云服務(wù)和設(shè)備端兩方面的優(yōu)勢。從傳統(tǒng)的應(yīng)用如殺毒軟件,Live Messenger/QQ到幫助蘋果取得成功的iTunes,應(yīng)用商店等,都是結(jié)合了終端軟件和云計算服務(wù)的各自特點。

圖5:軟件+服務(wù)的方式

軟件+服務(wù)對于架構(gòu)師的意義在于在設(shè)計應(yīng)用架構(gòu)的時候,可以打開思路,充分利用云和端的各自優(yōu)勢。由于Windows Azure提供的服務(wù)如計算、存儲都是可以獨立使用,所以對于像一個做在線遠程教學的應(yīng)用,在設(shè)計的時候就可以考慮自己構(gòu)建運行應(yīng)用程序的網(wǎng)站,但是把課 件視頻等大數(shù)據(jù)量存放到Windows Azure的存儲服務(wù)上,大大降低項目對存儲設(shè)備的投資,從而降低項目的進入門檻。

運行在各種端設(shè)備上的應(yīng)用程序可以直接與構(gòu)建在Windows Azure平臺上的服務(wù)進行交互,但是對于一些需要透過防火墻才能與互聯(lián)網(wǎng)上的云計算服務(wù)進行集成的企業(yè)應(yīng)用來說,需要一個Internet Service Bus(ISB)來進行應(yīng)用集成。Windows Azure AppFabric就提供了ISB的功能,讓企業(yè)內(nèi)部應(yīng)用可以不受防火墻和NAT等限制進行服務(wù)集成。

我們在通過軟件+服務(wù)的方式進行應(yīng)用架構(gòu)設(shè)計的時候,由于是基于互聯(lián)網(wǎng)的分布式計算,因此要特別考慮到網(wǎng)絡(luò)延時對應(yīng)用的設(shè)計和架構(gòu)的影響。我們可以 采用不同的方式來降低分布式方式帶來的影響。比如盡量采用粗粒度的調(diào)用方式,降低軟件與云服務(wù)的交互次數(shù)。另外,在架構(gòu)設(shè)計的時候,盡量讓動態(tài)數(shù)據(jù)與計算 工作靠近,讓靜態(tài)數(shù)據(jù)與使用用戶距離更近。Windows Azure的存儲服務(wù)在創(chuàng)建賬號的時候,用戶可以選擇數(shù)據(jù)存儲的數(shù)據(jù)中心位置。除此之外,Windows Azure還提供了CDN服務(wù),從而使得應(yīng)用數(shù)據(jù)可以盡可能靠近訪問用戶。

采用SOA設(shè)計方式

云計算平臺能夠從資源使用的角度保證應(yīng)用程序的靈活性。但是要讓應(yīng)用的構(gòu)建和功能上保持靈活性,我們需要采用面向服務(wù)的方式來構(gòu)建我們的應(yīng)用,也就 是說在云計算的環(huán)境下我們同樣需要SOA的思想來設(shè)計我們的應(yīng)用。我們一般認為服務(wù)就是通過某種標準的接口來訪問應(yīng)用的功能和數(shù)據(jù)。如果我們事先構(gòu)建了一 個服務(wù)池,那么就可以通過某種服務(wù)編排的方式來創(chuàng)建一個新的服務(wù)或一個新的組合應(yīng)用。這種構(gòu)建方式可以給應(yīng)用的架構(gòu)帶來很大的靈活性。

在云計算的環(huán)境下,我們可以融合軟件+服務(wù)和SOA的設(shè)計思想,從問題本身需求出發(fā)設(shè)計和組合應(yīng)用的服務(wù),可以利用不同平臺上的服務(wù)而不在局限于企 業(yè)內(nèi)部。在設(shè)計服務(wù)的時候,一個重要的設(shè)計目標就是讓服務(wù)變成平臺或者位置無關(guān)。新的服務(wù)或應(yīng)用可以組合在企業(yè)內(nèi)部的應(yīng)用服務(wù)以及部署在像Windows Azure云平臺上的應(yīng)用服務(wù),如下圖所示:

圖6:SOA設(shè)計方式

松耦合的架構(gòu)設(shè)計

在云計算環(huán)境下,應(yīng)用程序的運行環(huán)境等變得不像傳統(tǒng)環(huán)境那樣可控。對于大規(guī)模分布的應(yīng)用而言,要充分考慮到底層環(huán)境的單個節(jié)點出問題的可能性。為了 保證應(yīng)用程序的可靠運行,一般會采用松耦合的架構(gòu)設(shè)計,并在架構(gòu)設(shè)計的時候考慮系統(tǒng)如何快速從錯誤中恢復過來,比如狀態(tài)的保持,自動化數(shù)據(jù)備份和恢復等。 另外,松耦合架構(gòu)設(shè)計不但可以增強系統(tǒng)的整體健壯性,還能增加系統(tǒng)的可擴展性。

一種的常見的設(shè)計方式就是采用異步消息機制來實現(xiàn)松耦合的架構(gòu)設(shè)計。通過異步消息機制可以使得應(yīng)用各個模塊之間通過事先定義好的接口進行異步通信, 相互之間就像一個不透明的黑盒子。比如對于Web應(yīng)用程序,我們可以通過這種方式把Web服務(wù)器、應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器之間進行隔離。在云計算環(huán)境 中,這種異步機制對于應(yīng)用程序的水平擴展顯得更為重要。這也就是為什么無論是亞馬遜的AWS還是微軟的Windows Azure都會提供基于消息隊列的通信機制。下面是一個典型的基于Windows Azure的應(yīng)用架構(gòu)。

圖7:典型的基于Windows Azure的應(yīng)用架構(gòu)

在上面的架構(gòu)中,我們可以看到Web Role實例與Worker Role實例不再一一綁定,而是通過Windows Azure的存儲隊列進行通信。因此,Web Role的實例數(shù)和Worker Role的實例數(shù)可以根據(jù)業(yè)務(wù)具體情況進行分配。這種通過消息隊列的方式同時也很好的解決了數(shù)據(jù)的并發(fā)處理,并使整個系統(tǒng)具有良好的擴展性。而且,某個實 例暫時停止工作都不會對整個系統(tǒng)造成大的影響,從而增強了應(yīng)用程序的可用性。

總結(jié)

云計算無疑已受到大家極大的關(guān)注,但是它還是一個相對較新的概念,相關(guān)的技術(shù)正處于快速發(fā)展的過程中。我們已經(jīng)可以看到云計算對IT行業(yè)的硬件模 型,應(yīng)用模型和用戶體驗等方面帶來了革命性的影響。從應(yīng)用模型的角度來看,云計算平臺的出現(xiàn)使得開發(fā)人員可以快速的構(gòu)建高可用的,可以幾乎無限擴展的應(yīng) 用。Windows Azure平臺為廣大開發(fā)人員提供了一個開發(fā)、設(shè)計和運行應(yīng)用的云計算環(huán)境。隨著云計算相關(guān)技術(shù)的進一步發(fā)展,我們也將在Windows Azure上看到越來越多的新特性,從而使我們能夠進一步簡化在其上開發(fā)自我感知應(yīng)用的工作,另外非功能性的一些要求也將更多通過配置文件而不是代碼來實 現(xiàn)。

人們對于信息技術(shù)需求的發(fā)展始終沒有改變,那就是追求可靠,便捷,易用的信息應(yīng)用。當我們把一個冰箱連接到電源插座的時候,我們從來不會去考慮這個電力是從哪個發(fā)電站來的,我們也不需要成為一個電力專家來使用這個冰箱。云計算的出現(xiàn)讓信息技術(shù)往這個方向更進了一步。我們 認為應(yīng)用程序?qū)⒅饾u演變成具有自我感知能力的應(yīng)用,成為一個能夠根據(jù)平臺環(huán)境和用戶請求進行自我調(diào)整和自我修復的自治單元。也許不遠的將來,整個互聯(lián)網(wǎng)就 像一臺巨大的計算機,其上提供無限的計算資源和服務(wù),人們使用其上的應(yīng)用程序就像我們現(xiàn)在使用自來水,電力那樣方便,自然。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多