版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、云計(jì)算時(shí)代的分布式WEB服務(wù)解決方案Sina App Engine(簡稱SAE)是新浪研發(fā)中心于2009年上半年開始內(nèi)部開發(fā),并在2009年11月3日正式推出第一個(gè)Alpha版本的國內(nèi)首個(gè)公有云計(jì)算平臺(tái),是新浪云計(jì)算(簡稱浪云)戰(zhàn)略的核心組成部分。SAE作為國內(nèi)的公有云計(jì)算,借鑒吸納了Google、Amazon等國外公司的公有云計(jì)算的成功技術(shù)經(jīng)驗(yàn),并很快推出具有自身特色的云計(jì)算平臺(tái)。SAE選擇PHP作為首選的支持語言,Web開發(fā)者可以在Linux/Mac/Windows上通過SDK或者Web版在線SDK進(jìn)行開發(fā)、部署、調(diào)試,團(tuán)隊(duì)開發(fā)時(shí)還可以進(jìn)行成員協(xié)作,不同的角色將對代碼、項(xiàng)目擁有不同的權(quán)限。
2、SAE還提供了一系列分布式計(jì)算、存儲(chǔ)服務(wù)供開發(fā)者使用,包括分布式文件存儲(chǔ)、分布式數(shù)據(jù)庫集群、分布式緩存、分布式定時(shí)服務(wù)等,這些服務(wù)將大大降低開發(fā)者的開發(fā)成本。同時(shí)又由于SAE整體架構(gòu)的高可靠性和新浪的品牌保證,大大降低了開發(fā)者的運(yùn)營風(fēng)險(xiǎn)。另外,作為典型的云計(jì)算,SAE采用“所付即所用,所付僅所用”的計(jì)費(fèi)理念,通過日志和統(tǒng)計(jì)中心精確的計(jì)算每個(gè)應(yīng)用的資源消耗(包括CPU、內(nèi)存、磁盤等)??傊?,SAE就是分布式Web服務(wù)的開發(fā)、運(yùn)行平臺(tái)。SAE的目標(biāo)和發(fā)展云計(jì)算在國外已經(jīng)有45年的歷史。2006年,Amazon就推出了以EC2為代表的公有云計(jì)算,并且實(shí)現(xiàn)了大規(guī)模盈利;2008年,Google推出了以
3、Google App Engine為代表的公有云計(jì)算。國內(nèi)的云計(jì)算一直是炒得很厲害,各大互聯(lián)網(wǎng)公司都在宣傳,但真正有技術(shù)實(shí)力做出來而又對外公開使用的少之又少。從2004年開始,新浪就開始了私有云方向的研究和實(shí)踐,以此為基礎(chǔ)的動(dòng)態(tài)應(yīng)用平臺(tái)目前已經(jīng)支撐新浪內(nèi)部的絕大部分業(yè)務(wù)。從2008年起,新浪又啟動(dòng)了“浪云”的公有云計(jì)算計(jì)劃,相繼開發(fā)了分布式隊(duì)列服務(wù)、P2P文件系統(tǒng)、分布式計(jì)算框架等一系列基礎(chǔ)服務(wù)。實(shí)際SAE就是“浪云”戰(zhàn)略的產(chǎn)物。SAE從架構(gòu)設(shè)計(jì)和代碼編寫開始,就明確了自身的兩個(gè)目標(biāo):第一,做公有云計(jì)算平臺(tái),公有云不同于私有云,更強(qiáng)調(diào)安全性和可靠性,這也對整體的架構(gòu)設(shè)計(jì)和技術(shù)實(shí)現(xiàn)提出了更苛刻的
4、要求;第二,為分布式Web服務(wù)提供一整套的解決方案,SAE爭取提供開發(fā)者開發(fā)Web應(yīng)用過程中所用到的所有服務(wù)。經(jīng)過技術(shù)團(tuán)隊(duì)一年的開發(fā),SAE目前已經(jīng)提供了十多種服務(wù),整體上分為計(jì)算型和存儲(chǔ)型,計(jì)算型又包括同步計(jì)算和異步計(jì)算,而存儲(chǔ)型則分為持久化存儲(chǔ)和非持久化存儲(chǔ),如表2所示。SAE于2009年11月3日發(fā)布了Alpha1版本,2010年2月1日發(fā)布了Alpha2版本,2010年9月1日發(fā)布了Beta版本,經(jīng)過將近一年的不斷完善和改進(jìn),盡管SAE一直沒有開放注冊(實(shí)際云計(jì)算的模式也不以注冊用戶的規(guī)模為評(píng)價(jià)標(biāo)準(zhǔn)),但已經(jīng)擁有了一批有價(jià)值的App和粉絲開發(fā)者。截止10月1日,SAE擁有開發(fā)者4000
5、多名,App總數(shù)3000個(gè),活躍App將近1000個(gè),每天獨(dú)立代碼部署行為超過1000次。整體架構(gòu)SAE從架構(gòu)上采用分層設(shè)計(jì),從上往下分別為反向代理層、路由邏輯層、Web計(jì)算服務(wù)池。而從Web計(jì)算服務(wù)層延伸出SAE附屬的分布式計(jì)算型服務(wù)和分布式存儲(chǔ)型服務(wù),具體又分成同步計(jì)算型服務(wù)、異步計(jì)算型服務(wù)、持久化存儲(chǔ)服務(wù)、非持久化存儲(chǔ)服務(wù)。各種服務(wù)統(tǒng)一向日志和統(tǒng)計(jì)中心匯報(bào)如圖1所示。7層反向代理層:HTTP反向代理,在最外層,負(fù)責(zé)響應(yīng)用戶的HTTP請求、分析請求并轉(zhuǎn)發(fā)到后端的Web服務(wù)池上,提供負(fù)載均衡、健康檢查等功能。服務(wù)路由層:邏輯層,負(fù)責(zé)根據(jù)請求的唯一標(biāo)識(shí),快速地映射(O(1)時(shí)間復(fù)雜度)到相應(yīng)的
6、Web服務(wù)池及相應(yīng)的硬件路徑。如果發(fā)現(xiàn)映射關(guān)系不存在或者錯(cuò)誤,則給出相應(yīng)的錯(cuò)誤提示。該層對用戶隱藏了很多具體地址信息,使開發(fā)者無須關(guān)心服務(wù)的內(nèi)部實(shí)際分配情況。Web服務(wù)池:由一些不同特性的Web服務(wù)池組成。每個(gè)Web服務(wù)池實(shí)際是由一組Apache Server組成的,這些池按照不同的SLA提供不同級(jí)別的服務(wù)。每個(gè)Web服務(wù)進(jìn)程實(shí)際處理用戶的HTTP請求,進(jìn)程運(yùn)行在HTTP服務(wù)沙盒內(nèi),同時(shí)還同樣內(nèi)嵌運(yùn)行在SAE沙盒內(nèi)的PHP解析引擎。用戶的代碼最終通過接口調(diào)用各種服務(wù)。日志和統(tǒng)計(jì)中心:負(fù)責(zé)對用戶所使用的所有服務(wù)的配額進(jìn)行統(tǒng)計(jì)和資源計(jì)費(fèi),這里的配額有兩種,一種是分鐘配額,用來保證整個(gè)平臺(tái)的穩(wěn)定;一
7、種是天配額,用戶可以給自己設(shè)定每天資源消耗的最高上限。日志中心負(fù)責(zé)將用戶所有服務(wù)的日志匯總并備份,并提供檢索查詢服務(wù)。各種分布式服務(wù):SAE提供Web應(yīng)用開發(fā)所需的大多數(shù)服務(wù),同時(shí)支持接入第三方服務(wù),用戶可以通過StdLib(可以理解為SAE PHP版的STL)很方便地調(diào)用它們。真正的用戶代碼是跑在SAE提供的Web運(yùn)行環(huán)境下的,為了提供公有云計(jì)算特有的安全性,SAE設(shè)計(jì)多層沙盒來保證用戶應(yīng)用之間的隔離性,如圖2所示。最內(nèi)層的就是用戶代碼,大部分PHP代碼不需要做任何修改就可以跑在SAE平臺(tái)上,小部分代碼需要做一些修改以適應(yīng)SAE的平臺(tái)特性。這主要有兩部分:第一,SAE因?yàn)榘踩越昧吮镜豂/
8、O,所以fwrite等函數(shù)需要修改為使用Tmpfs讀寫本地臨時(shí)文件或者直接通過Stor讀寫我們的分布式文件存儲(chǔ);第二,用戶在SAE上不能通過Curl訪問非“SAE域”的資源,用戶有抓取公網(wǎng)資源等需求,需要修改為調(diào)用FetchURL服務(wù)。我們提供了PHP Wrapper以方便用戶的修改。SAE Zend Sandbox為一個(gè)邏輯概念,為用戶的代碼運(yùn)行提供良好的隔離性。這里有兩個(gè)層面,第一是通過標(biāo)準(zhǔn)的php.ini,我們設(shè)定了一些特殊配置和禁用函數(shù);第二,為了達(dá)到一些php.ini無法實(shí)現(xiàn)的沙盒功能,我們對Zend解釋器核做了一些改進(jìn),以便通過用戶標(biāo)識(shí)將資源進(jìn)行隔離。另外我們還把一些SAE的特定服
9、務(wù)也在Zend層做了融合。Apache為標(biāo)準(zhǔn)的Apache Web Server,版本為2.2。不過我們禁用了htaccess,并提供了自己實(shí)現(xiàn)的替換方案AppConfig。用戶可以通過類自然語言的方式編寫AppConfig,如- compress: if(out_header“Content-Length” = 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的htac
10、cess因?yàn)橐茨夸涍f歸方式合并配置文件,效率不能滿足SAE的需求。HTTP Server沙盒為Apache的安全可靠運(yùn)行提供了多種保護(hù)功能,比如防止某個(gè)用戶惡意占用連接數(shù)從而導(dǎo)致整個(gè)Web服務(wù)不正常。最外層的是標(biāo)準(zhǔn)POSIX環(huán)境,目前我們的服務(wù)跑在Linux 2.6上。上面就是對SAE整體架構(gòu)的概述,接著將詳細(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人工只需
11、做好容量規(guī)劃和管理。目前國外的公有云計(jì)算架構(gòu)的擴(kuò)展性主要有靜態(tài)和動(dòng)態(tài)兩個(gè)思路。靜態(tài)擴(kuò)展:用戶和資源有強(qiáng)綁定關(guān)系。最典型的例子為Amazon的EC2和Ruby云計(jì)算平臺(tái)Heroku,用戶申請的資源和用戶有嚴(yán)格的一對一關(guān)系,換句話說,A用戶申請的虛擬機(jī)在A退還資源前,B用戶不能使用,哪怕A用戶的虛擬機(jī)處于閑置狀態(tài)。動(dòng)態(tài)擴(kuò)展:用戶和資源沒有強(qiáng)綁定關(guān)系。最典型的例子為Google App Engine,用戶申請的資源和用戶沒有嚴(yán)格的一對一關(guān)系,換句話說,處理A用戶請求的進(jìn)程在處理完之后,可以馬上處理B用戶的請求。兩種擴(kuò)展性各有利弊,靜態(tài)擴(kuò)展的長處是為平臺(tái)提供了良好的隔離性,資源可以固定映射在某個(gè)用戶下
12、,但缺點(diǎn)是資源利用率不高;動(dòng)態(tài)擴(kuò)展的長處是資源利用率高,這樣整個(gè)云計(jì)算平臺(tái)的成本會(huì)很低,但缺點(diǎn)是對隔離性有更高的要求,因?yàn)橘Y源可以在很短的時(shí)間被多個(gè)用戶使用。相比較,在安全性上,動(dòng)態(tài)擴(kuò)展要比靜態(tài)擴(kuò)展的技術(shù)門檻更高。在SAE平臺(tái)上,我們采用以動(dòng)態(tài)擴(kuò)展為主、靜態(tài)擴(kuò)展為輔的兼而有之的設(shè)計(jì)。在Web計(jì)算池層是典型的動(dòng)態(tài)擴(kuò)展。而在SAE的某些服務(wù)中,又是以靜態(tài)擴(kuò)展的方式展現(xiàn),如RDC(Relational DB Cluster)分布式數(shù)據(jù)庫集群,當(dāng)用戶申請了MySQL服務(wù),我們就會(huì)在RDC后端根據(jù)SLA創(chuàng)建一主多從的DB給用戶,在用戶顯式刪除該DB前,該DB都不會(huì)被別人使用。當(dāng)然,通過RDC,任何一個(gè)用
13、戶也無需知道后端DB的實(shí)際地址,只需訪問RDC統(tǒng)一的Host和Port即可。高可靠性(High Availability,簡稱HA)HA是分布式系統(tǒng)的另一個(gè)主要目的,SAE同樣以提供服務(wù)的高可靠性為架構(gòu)設(shè)計(jì)的重要指標(biāo)。HA的實(shí)現(xiàn)途徑主要有兩個(gè):一個(gè)是硬件保證,另一個(gè)是架構(gòu)的冗余設(shè)計(jì)。在SAE平臺(tái)上,所有服務(wù)器都是新浪標(biāo)準(zhǔn)采購的硬件設(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ù)型兩種類別討論。
14、針對計(jì)算型服務(wù),冗余設(shè)計(jì)就是程序在多節(jié)點(diǎn)運(yùn)行。我們要求SAE所有的內(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)仍然能夠正常提供服務(wù)。計(jì)算型程序多點(diǎn)部署,會(huì)帶來一致性問題,最主要的困擾就是選舉問題,如何在多個(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í)行。為了解
15、決這個(gè)問題,SAE設(shè)計(jì)出了一套分布式鎖算法來提供選舉服務(wù)。該算法可以在犧牲某些特定條件下的一致性來提供比Paxos算法更高的可靠性(3臺(tái)機(jī)器在最高任意2臺(tái)機(jī)器發(fā)生故障的情況下整個(gè)選舉過程仍然正常,而Paxos算法最多容忍1臺(tái))。目前,該算法正在申請專利,并廣泛應(yīng)用在SAE內(nèi)部。針對數(shù)據(jù)型服務(wù),SAE主要是通過復(fù)制來保證服務(wù)的高可靠性。SAE上的數(shù)據(jù)存儲(chǔ)服務(wù)普遍采用被動(dòng)復(fù)制和主動(dòng)復(fù)制兩種方式。如SAE上MySQL之間的主從Binlog同步就是典型的被動(dòng)復(fù)制,用戶只寫寫庫,數(shù)據(jù)從寫庫同步到多個(gè)讀庫中。Taskqueue、DeferredJob等服務(wù)也采用被動(dòng)復(fù)制的方式,用戶的任務(wù)描述會(huì)寫到主內(nèi)存級(jí)隊(duì)列中,主隊(duì)列利用后臺(tái)線程將寫操作同步到從隊(duì)列上,一旦主隊(duì)列發(fā)生故障,從隊(duì)列會(huì)快速的切換
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年食品加工生產(chǎn)線升級(jí)項(xiàng)目評(píng)估報(bào)告
- 2025年漁業(yè)年度工作總結(jié)
- 市政污水管維修調(diào)排水方案及流程
- 地下連續(xù)墻施工質(zhì)量控制要點(diǎn)
- 2025年抗腫瘤藥物臨床合理使用考試試題及答案
- 財(cái)務(wù)部年度工作總結(jié)報(bào)告范文
- 2025年工程質(zhì)量監(jiān)管年度工作總結(jié)
- 2025年節(jié)后復(fù)工復(fù)產(chǎn)通信施工安全知識(shí)培訓(xùn)考試題及答案
- 人造草坪技術(shù)交底
- 建設(shè)工程施工合同糾紛要素式起訴狀模板貼合實(shí)際案例
- 口述史研究活動(dòng)方案
- 房屋租賃合同txt
- 加工中心點(diǎn)檢表
- 水庫清淤工程可行性研究報(bào)告
- THBFIA 0004-2020 紅棗制品標(biāo)準(zhǔn)
- GB/T 25630-2010透平壓縮機(jī)性能試驗(yàn)規(guī)程
- GB/T 19610-2004卷煙通風(fēng)的測定定義和測量原理
- 精排版《化工原理》講稿(全)
- 市場營銷學(xué)-第12章-服務(wù)市場營銷課件
- 小微型客車租賃經(jīng)營備案表
評(píng)論
0/150
提交評(píng)論