乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       ShangShujie 2010-08-19

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

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

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

      從技術(shù)角度看云計(jì)算的特點(diǎn)

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

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

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

        資源類別

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

        應(yīng)用程序

        Software as a Service (SaaS)

        系統(tǒng)平臺(tái)

        Platform as a Service (PaaS)

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

        Infrastructure as a Service (IaaS)

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

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

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

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

      云計(jì)算應(yīng)用的特點(diǎn)

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

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

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

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

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

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

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

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

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

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

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

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

      Windows Azure的概況

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

      圖1:Windows Azure平臺(tái)

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

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

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

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

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

      圖2:Windows Azure的組成

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

      Windows Azure Fabric控制器被比作是Windows Azure的大腦,它負(fù)責(zé)平臺(tái)中各種資源的統(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ù)模型。每個(gè)應(yīng)用包括兩 個(gè)配置文件:服務(wù)定義文件和服務(wù)配置文件。這兩個(gè)配置文件中會(huì)包含應(yīng)用程序在Windows Azure上運(yùn)行和發(fā)布的一些信息,如認(rèn)證信息、服務(wù)端口、服務(wù)角色、需要的實(shí)例數(shù)和自定義變量等。當(dāng)用戶通過開發(fā)者門戶把應(yīng)用程序上傳到Windows Azure平臺(tái)的時(shí)候,其中的配置文件則由Windows Azure Fabric控制器來讀取,然后由其根據(jù)配置文件中指定的方式進(jìn)行服務(wù)部署。

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

      圖3:Web Role與Work Role的分工

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

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

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

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

      • 可以存放大量數(shù)據(jù)
      • 大范圍分布的
      • 可以無限擴(kuò)展的
      • 所有數(shù)據(jù)都會(huì)復(fù)制多份
      • 可以選擇數(shù)據(jù)存儲(chǔ)地點(diǎn)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      采用SOA設(shè)計(jì)方式

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

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

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

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

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

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

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

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

      總結(jié)

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

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

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

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多