云計(jì)算時(shí)代的分布式WEB服務(wù)解決方案講解學(xué)習(xí)_第1頁
云計(jì)算時(shí)代的分布式WEB服務(wù)解決方案講解學(xué)習(xí)_第2頁
云計(jì)算時(shí)代的分布式WEB服務(wù)解決方案講解學(xué)習(xí)_第3頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、云計(jì)算時(shí)代的分布式WEES艮務(wù)解決方案SinaAppEngine(簡稱SAE是新浪研發(fā)中心丁2009年上半年開始內(nèi)部開發(fā),并在2009年11月3日正式推出第一個(gè)Alpha版本的國內(nèi)首個(gè)公有云計(jì)算平臺,是新浪云計(jì)算(簡稱浪云)戰(zhàn)略的核心組成部分。SAE作為國內(nèi)的公有云計(jì)算,借鑒吸納了Google、Amazon等國外公司的公有云計(jì)算的成功技術(shù)經(jīng)驗(yàn),并很快推出具有自身特色的云計(jì)算平臺。SAE選擇PHP作為首選的支持語言,We研發(fā)者可以在Linux/Mac/Windows上通過SD瑚者Web版在線SDK!行開發(fā)、部署、調(diào)試,團(tuán)隊(duì)開發(fā)時(shí)還可以進(jìn)行成員協(xié)作,不同的角色將對代碼、項(xiàng)目擁有不同的權(quán)限。SAE提

2、供了一系列分布式計(jì)算、存儲服務(wù)供開發(fā)者使用,包括分布式文件存儲、分布式數(shù)據(jù)庫集群、分布式緩存、分布式定時(shí)服務(wù)等,這些服務(wù)將大大降低開發(fā)者的開發(fā)成本。同時(shí)乂由丁SAESI體架構(gòu)的高可靠性和新浪的品牌保證,大大降低了開發(fā)者的運(yùn)營風(fēng)險(xiǎn)。另外,作為典型的云計(jì)算,SAE用“所付即所用,所付僅所用”的計(jì)費(fèi)理念,通過日志和統(tǒng)計(jì)中心精確的計(jì)算每個(gè)應(yīng)用的資源消耗(包括CPU內(nèi)存、磁盤等)??傊琒AEM是分布式WebK務(wù)的開發(fā)、運(yùn)行平臺VPS岫護(hù)Jt嵌(/用戶說諾可用hik力爭唇此Df*秀廊有海,擔(dān)供手蠢獺戶快4便胃SI.A田窩保示廠可性摩尸ft的而昔承濡%.無尸琦咨役profit所#僅所用SAE的目標(biāo)和發(fā)展云

3、計(jì)算在國外已經(jīng)有45年的歷史。2006年,AmazorB推出了以EC2為代表的公有云計(jì)算,并且實(shí)現(xiàn)了大規(guī)模盈利;2008年,Google推出了以GoogleAppEngine為代表的公有云計(jì)算。國內(nèi)的云計(jì)算一直是炒得很厲害,各大互聯(lián)網(wǎng)公司都在宣傳,但真正有技術(shù)實(shí)力做出來而乂對外公開使用的少之乂少。從2004年開始,新浪就開始了私有云方向的研究和實(shí)踐,以此為基礎(chǔ)的動(dòng)態(tài)應(yīng)用平臺目前已經(jīng)支撐新浪內(nèi)部的絕大部分業(yè)務(wù)。從2008年起,新浪乂啟動(dòng)了“浪云”的公有云計(jì)算計(jì)劃,相繼開發(fā)了分布式隊(duì)列服務(wù)、P2P文件系統(tǒng)、分布式計(jì)算框架等一系列基礎(chǔ)服務(wù)。實(shí)際SAEM是“浪云”戰(zhàn)略的產(chǎn)物。SAER架構(gòu)設(shè)計(jì)和代碼編寫

4、開始,就明確了自身的兩個(gè)目標(biāo):第一,做公有云計(jì)算平臺,公有云不同于私有云,更強(qiáng)調(diào)安全性和可靠性,這也對整體的架構(gòu)設(shè)計(jì)和技術(shù)實(shí)現(xiàn)提出了更苛刻的要求;第二,為分布式Wet務(wù)提供一整套的解決方案,SA臥取提供開發(fā)者開發(fā)We吟用過程中所用到的所有服務(wù)。經(jīng)過技術(shù)團(tuán)隊(duì)一年的開發(fā),SAE目前已經(jīng)提供了十多種服務(wù),整體上分為計(jì)算型和存儲型,計(jì)算型乂包括同步計(jì)算和異步計(jì)算,而存儲型則分為持久化存儲和非持久化存儲,如表2所示。表2SAE提供的服務(wù)服務(wù)名稱說明HTTP+PHP同步計(jì)算號SAE沙盒的Apache和Zend為用戶提供Web計(jì)算服務(wù)Star持久化存儲提供分布式文件存儲Memcache非持久化存儲提供分布式

5、緩存服務(wù)RDC持久化存儲分布式數(shù)據(jù)座集羊,提供MySQL服務(wù)Taskqueue異步計(jì)算異步離線輕量級任務(wù)隊(duì)列,HTTP方式調(diào)用DeferredJob異步計(jì)算異步離線重量級任務(wù)隊(duì)列,系統(tǒng)方式調(diào)用Cron異步計(jì)算分布式定時(shí)服務(wù)FetchURL同步計(jì)篁分布式抓取服務(wù)Tmpfs非持久化存儲提供臨時(shí)文件存儲Appconfig提供應(yīng)用配置功能,取代ApachehtaccessMail異步計(jì)算郵件發(fā)送服務(wù)Image同步計(jì)算圖像處理服務(wù)XHProf同步計(jì)算Foceboov福佚的強(qiáng)入的PHP調(diào)優(yōu)工具其他工具SDKWindowsGUISDK、Linux/MaccommandlineSDKOnlineSDK在線代碼

6、編輯器SA打2009年11月3日發(fā)布了Alphal版本,2010年2月1日發(fā)布了Alpha2版本,2010年9月1日發(fā)布了Beta版本,經(jīng)過將近一年的不斷完善和改進(jìn),盡管SAE一直沒有開放注冊(實(shí)際云計(jì)算的模式也不以注冊用戶的規(guī)模為評價(jià)標(biāo)準(zhǔn)),但已經(jīng)擁有了一批有價(jià)值的App和粉絲開發(fā)者。截止10月1日,SAE擁有開發(fā)者4000多名,App總數(shù)3000個(gè),活躍App將近1000個(gè),每天獨(dú)立代碼部署行為超過1000次。整體架構(gòu)SA或架構(gòu)上采用分層設(shè)計(jì),從上往下分別為反向代理層、路由邏輯層、Web計(jì)算服務(wù)池。而從Wet#算服務(wù)層延伸出SAE附屆的分布式計(jì)算型服務(wù)和分布式存儲型服務(wù),具體乂分成同步計(jì)算

7、型服務(wù)、異步計(jì)算型服務(wù)、持久化存儲服務(wù)、非持久化存儲服務(wù)。各種服務(wù)統(tǒng)一向日志和統(tǒng)計(jì)中心匯報(bào)如圖1所示。1.0C7層反向代理層:HTTFK向代理,在最外層,負(fù)責(zé)響應(yīng)用戶的HTTFW求、分析請求并轉(zhuǎn)發(fā)到后端的Wet務(wù)池上,提供負(fù)載均衡、健康檢查等功能。服務(wù)路由層:邏輯層,負(fù)責(zé)根據(jù)請求的唯一標(biāo)識,快速地映射(0(1)時(shí)間復(fù)雜度)到相應(yīng)的Wet務(wù)池及相應(yīng)的硬件路徑。如果發(fā)現(xiàn)映射關(guān)系不存在或者錯(cuò)誤,則給出相應(yīng)的錯(cuò)誤提示。該層對用戶隱藏了很多具體地址信息,使開發(fā)者無須關(guān)心服務(wù)的內(nèi)部實(shí)際分配情況。Wet務(wù)池:由一些不同特性的Wet務(wù)池組成。每個(gè)Web服務(wù)池實(shí)際是由一組ApacheServer組成的,這些池按

8、照不同的SLA提供不同級別的服務(wù)。每個(gè)Web務(wù)進(jìn)程實(shí)際處理用戶的HTTFW求,進(jìn)程運(yùn)行在HTTP服務(wù)沙盒內(nèi),同時(shí)還同樣內(nèi)嵌運(yùn)行在SAE沙盒內(nèi)的PH確牟析引擎。用戶的代碼最終通過接口調(diào)用各種服務(wù)。日志和統(tǒng)計(jì)中心:負(fù)責(zé)對用戶所使用的所有服務(wù)的配額進(jìn)行統(tǒng)計(jì)和資源計(jì)費(fèi),這里的配額有兩種,一種是分鐘配額,用來保證整個(gè)平臺的穩(wěn)定;一種是天配額,用戶可以給自己設(shè)定每天資源消耗的最高上限。日志中心負(fù)責(zé)將用戶所有服務(wù)的日志匯總并備份,并提供檢索查詢服務(wù)。各種分布式服務(wù):SAE提供WebE用開發(fā)所需的大多數(shù)服務(wù),同時(shí)支持接入第三方服務(wù),用戶可以通過StdLib(可以理解為SAEPHP版的STD很方便地調(diào)用它們。真

9、正的用戶代碼是跑在SAE提供的Web行環(huán)境下的,為了提供公有云計(jì)算特有的安全性,SAE設(shè)計(jì)多層沙盒來保證用戶應(yīng)用之間的隔離性,如圖2所示。最內(nèi)層的就是用戶代碼,大部分PHP代碼不需要做任何修改就可以跑在SAE平臺上,小部分代碼需要做一些修改以適應(yīng)SAE的平臺特性。這主要有兩部分:第一,SAES為安全性禁用了本地I/O,所以fwrite等函數(shù)需要修改為使用Tmpfs讀寫本地臨時(shí)文件或者直接通過Stor讀寫我們的分布式文件存儲;第二,用戶在SAE不能通過Curl訪問非“SAEfeT的資源,用戶有抓取公網(wǎng)資源等需求,需要修改為調(diào)用FetchURL服務(wù)。我們提供了PHPWrapper以方便用戶的修改。

10、SAEZendSandbox為一個(gè)邏輯概念,為用戶的代碼運(yùn)行提供良好的隔離性。這里有兩個(gè)層面,第一是通過標(biāo)準(zhǔn)的php.ini,我們設(shè)定了一些特殊配置和禁用函數(shù);第二,為了達(dá)到一些php.ini無法實(shí)現(xiàn)的沙盒功能,我們對Zend解釋器SAE核做了一些改進(jìn),以便通過用戶標(biāo)識將資源進(jìn)行隔離。另外我們還把一些的特定服務(wù)也在Zend層做了融合。Apache為標(biāo)準(zhǔn)的ApacheWebserver,版本為2.2。不過我們禁用了htaccess,并提供了自己實(shí)現(xiàn)的替換方案AppConfig。用戶可以通過類自然語言的方式編寫AppConfig,如-compress:if(out_header“Content-L

11、ength=500)compress表示按條件啟動(dòng)頁面壓縮。目前AppConfig提供的功能有:目錄默認(rèn)頁面、自定義錯(cuò)誤頁面、壓縮、頁面重定向、頁面過期、設(shè)置響應(yīng)頭的content-type、設(shè)置頁面訪問權(quán)限。我們選擇自行實(shí)現(xiàn)AppConfig還有一個(gè)考慮,就是因?yàn)閭鹘y(tǒng)Apache的htaccess因?yàn)橐茨夸涍f歸方式合并配置文件,效率不能滿足SAE的需求。HTTPServer沙盒為Apache的安全可靠運(yùn)行提供了多種保護(hù)功能,比如防止某個(gè)用戶惡意占用連接數(shù)從而導(dǎo)致整個(gè)Web服務(wù)不正常。最外層的是標(biāo)準(zhǔn)POSIX環(huán)境,目前我們的服務(wù)跑在Linux2.6上。上面就是對SAE整體架構(gòu)的概述,接著將詳

12、細(xì)討論我們在架構(gòu)設(shè)計(jì)上的一些具體考量點(diǎn)。擴(kuò)展性擴(kuò)展性是分布式系統(tǒng)的兩個(gè)主要目的之一,SAE作為公有云計(jì)算,同樣把服務(wù)的擴(kuò)展性作為架構(gòu)設(shè)計(jì)的重要指標(biāo),要求在用戶增長、壓力提升的情況下,可以實(shí)現(xiàn)自動(dòng)的服務(wù)擴(kuò)展,同樣當(dāng)壓力降低時(shí),可以將服務(wù)收縮,以節(jié)約資源,整個(gè)過程無須人工參與。SAE人工只需做好容量規(guī)劃和管理。目前國外的公有云計(jì)算架構(gòu)的擴(kuò)展性主要有靜態(tài)和動(dòng)態(tài)兩個(gè)思路。靜態(tài)擴(kuò)展:用戶和資源有強(qiáng)綁定關(guān)系。最典型的例子為Amazon的EC護(hù)日Ruby云計(jì)算平臺Heroku,用戶申請的資源和用戶有嚴(yán)格的一對一關(guān)系,換句話說,A用戶申請的虛擬機(jī)在A退還資源前,B用戶不能使用,哪怕A用戶的虛擬機(jī)處于閑置狀態(tài)。

13、動(dòng)態(tài)擴(kuò)展:用戶和資源沒有強(qiáng)綁定關(guān)系。最典型的例子為GoogleAppEngine,用戶申請的資源和用戶沒有嚴(yán)格的一對一關(guān)系,換句話說,處理A用戶請求的進(jìn)程在處理完之后,可以馬上處理B用戶的請求。兩種擴(kuò)展性各有利弊,靜態(tài)擴(kuò)展的長處是為平臺提供了良好的隔離性,資源可以固定映射在某個(gè)用戶下,但缺點(diǎn)是資源利用率不高;動(dòng)態(tài)擴(kuò)展的長處是資源利用率高,這樣整個(gè)云計(jì)算平臺的成本會很低,但缺點(diǎn)是對隔離性有更高的要求,因?yàn)橘Y源可以在很短的時(shí)間被多個(gè)用戶使用。相比較,在安全性上,動(dòng)態(tài)擴(kuò)展要比靜態(tài)擴(kuò)展的技術(shù)門檻更高。在SAE平臺上,我們采用以動(dòng)態(tài)擴(kuò)展為主、靜態(tài)擴(kuò)展為輔的兼而有之的設(shè)計(jì)。在Wet#算池層是典型的動(dòng)態(tài)擴(kuò)展

14、。而在SAE的某些服務(wù)中,乂是以靜態(tài)擴(kuò)展的方式展現(xiàn),如RDC(RelationalDBCluster)分布式數(shù)據(jù)庫集群,當(dāng)用戶申請了MySQL務(wù),我們就會在RD弟端根據(jù)SLA創(chuàng)建一主多從的DB給用戶,在用戶顯式刪除該DB前,該DB都不會被別人使用。當(dāng)然,通過RDC任何一個(gè)用戶也無需知道后端DB的實(shí)際地址,只需訪問RDC一的Host和Port即可。高可靠性(HighAvailability,簡稱HAHA是分布式系統(tǒng)的另一個(gè)主要目的,SAE同樣以提供服務(wù)的高可靠性為架構(gòu)設(shè)計(jì)的重要指標(biāo)。HA的實(shí)現(xiàn)途徑主要有兩個(gè):一個(gè)是硬件保證,另一個(gè)是架構(gòu)的冗余設(shè)計(jì)。在SAE平臺上,所有服務(wù)器都是新浪標(biāo)準(zhǔn)采購的硬件

15、設(shè)備,運(yùn)行在國內(nèi)最好的機(jī)房內(nèi),網(wǎng)絡(luò)資源方面則享用門戶網(wǎng)站所使用的帶寬環(huán)境。另外,所有的硬件設(shè)備都有專門的運(yùn)維部門負(fù)責(zé),故障的響應(yīng)速度和新浪內(nèi)部服務(wù)一樣。在架構(gòu)設(shè)計(jì)上,SAE通過對所有服務(wù)都進(jìn)行冗余設(shè)計(jì)來提供服務(wù)的高可靠性。這里的服務(wù)可以分成計(jì)算型和數(shù)據(jù)型兩種類別討論。針對計(jì)算型服務(wù),冗余設(shè)計(jì)就是程序在多節(jié)點(diǎn)運(yùn)行。我們要求SAE0f有的內(nèi)部代碼程序要做到Stateless(無狀態(tài)依賴),即無依賴部署無依賴啟動(dòng),隨時(shí)終止進(jìn)程隨時(shí)重啟進(jìn)程,這樣一旦出現(xiàn)機(jī)器故障或者程序自身Bug時(shí),所有進(jìn)程能夠隨著硬件環(huán)境的重新恢復(fù)而在第一時(shí)間重啟。而多點(diǎn)執(zhí)行的程序可以保證,當(dāng)某些程序出現(xiàn)故障時(shí),整個(gè)系統(tǒng)仍然能夠正常

16、提供服務(wù)。計(jì)算型程序多點(diǎn)部署,會帶來一致性問題,最主要的困擾就是選舉問題,如何在多個(gè)節(jié)點(diǎn)中選出一個(gè)主節(jié)點(diǎn)來執(zhí)行。比如SAE上的分布式定時(shí)服務(wù)Cron,采用多點(diǎn)部署方式,多個(gè)計(jì)算節(jié)點(diǎn)相互隔離,通過時(shí)鐘同步服務(wù)同時(shí)觸發(fā)用戶設(shè)定的定時(shí)任務(wù),但要求只能有一個(gè)節(jié)點(diǎn)負(fù)責(zé)執(zhí)行。為了解決這個(gè)問題,SAE設(shè)計(jì)出了一套分布式鎖算法來提供選舉服務(wù)。該算法可以在犧牲某些特定條件下的一致性來提供比Paxos算法更高的可靠性(3臺機(jī)器在最高任意2臺機(jī)器發(fā)生故障目前,該算法的情況下整個(gè)選舉過程仍然正常,而Paxos算法最多容忍1臺)正在申請專利,并廣泛應(yīng)用在SAE內(nèi)部。針對數(shù)據(jù)型服務(wù),SAE主要是通過復(fù)制來保證服務(wù)的高可靠性。SAE上的數(shù)據(jù)存儲服務(wù)普遍采用被動(dòng)復(fù)制和主動(dòng)復(fù)制兩種方式。如SAEMySQl|、0的主從Binlog同步就是典型的被動(dòng)復(fù)制,用戶只寫寫庫,數(shù)據(jù)從寫庫同步到多個(gè)讀庫中。Taskqueue、DeferredJob等服務(wù)也采用被動(dòng)復(fù)制的方式,用戶的任務(wù)描述會寫到主內(nèi)存級隊(duì)列中,主隊(duì)列利用后臺線程將寫操作同步到從隊(duì)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論