




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
高并發(fā)量網(wǎng)站基礎(chǔ)架構(gòu)設(shè)計本文中,我想通過幾個國外大型IT公司及網(wǎng)站的成功案例,從Web技術(shù)人員角度探討如何主動地應(yīng)對國內(nèi)大型網(wǎng)站即將面臨的擴展(重要是技術(shù)方面,而較少涉及管理及營銷等方面)矛盾。一、國外大型IT網(wǎng)站的成功之道(一)MySpace今天,MySpace已經(jīng)成為全球眾口皆碑的社區(qū)網(wǎng)站之王。盡管一流和營銷和管理經(jīng)驗自然是每個IT公司獲得成功的首要因素,但是本節(jié)中我們卻拋棄這一點,而重要著眼于探討在多次面臨系統(tǒng)擴張的緊急關(guān)頭MySpace是如何從技術(shù)方面采用應(yīng)對方略的。第一代架構(gòu)—添置更多的Web服務(wù)器MySpace最初的系統(tǒng)很小,只有兩臺Web服務(wù)器(分擔(dān)解決顧客請求的工作量)和一種數(shù)據(jù)庫服務(wù)器(全部數(shù)據(jù)都存儲在這一種地方)。那時使用的是Dell雙CPU、4G內(nèi)存的系統(tǒng)。在早期階段,MySpace基本是通過添置更多Web服務(wù)器來對付顧客暴增問題的。但到在早期,在MySpace顧客數(shù)增加到五十萬后,其數(shù)據(jù)庫服務(wù)器已經(jīng)開始疲于奔命了。第二代架構(gòu)—增加數(shù)據(jù)庫服務(wù)器與增加Web服務(wù)器不同,增加數(shù)據(jù)庫并沒那么簡樸。如果一種站點由多個數(shù)據(jù)庫支持,設(shè)計者必須考慮的是,如何在確保數(shù)據(jù)一致性的前提下讓多個數(shù)據(jù)庫分擔(dān)壓力。MySpace運行在三個SQLServer數(shù)據(jù)庫服務(wù)器上—一種為主,全部的新數(shù)據(jù)都向它提交,然后由它復(fù)制到其它兩個;另兩個數(shù)據(jù)庫服務(wù)器全力向顧客供應(yīng)數(shù)據(jù),用以在博客和個人資料欄顯示。這種方式在一段時間內(nèi)效果較好——只要增加數(shù)據(jù)庫服務(wù)器,加大硬盤,就能夠應(yīng)對顧客數(shù)和訪問量的增加。這一次的數(shù)據(jù)庫架構(gòu)按照垂直分割模式設(shè)計,不同的數(shù)據(jù)庫服務(wù)于站點的不同功效,如登錄、顧客資料和博客。垂直分割方略利于多個數(shù)據(jù)庫分擔(dān)訪問壓力,當(dāng)顧客規(guī)定增加新功效時,MySpace只需要投入新的數(shù)據(jù)庫加以支持。在賬戶達成二百萬后,MySpace還從存儲設(shè)備與數(shù)據(jù)庫服務(wù)器直接交互的方式切換到SAN(存儲區(qū)域網(wǎng)絡(luò))—用高帶寬、專門設(shè)計的網(wǎng)絡(luò)將大量磁盤存儲設(shè)備連接在一起,而數(shù)據(jù)庫連接到SAN。這項方法極大提高了系統(tǒng)性能、正常運行時間和可靠性。然而,當(dāng)顧客繼續(xù)增加到三百萬后,垂直分割方略也變得難以維持下去。第三代架構(gòu)—轉(zhuǎn)到分布式計算架構(gòu)幾經(jīng)折騰,最后,MySpace將目光移到分布式計算架構(gòu)——它在物理上分布的眾多服務(wù)器,整體必須邏輯上等同于單臺機器。拿數(shù)據(jù)庫來說,就不能再像過去那樣將應(yīng)用拆分,再以不同數(shù)據(jù)庫分別支持,而必須將整個站點看作一種應(yīng)用?,F(xiàn)在,數(shù)據(jù)庫模型里只有一種顧客表,支持博客、個人資料和其它核心功效的數(shù)據(jù)都存儲在相似數(shù)據(jù)庫。既然全部的核心數(shù)據(jù)邏輯上都組織到一種數(shù)據(jù)庫,那么MySpace必須找到新的方法以分肩負荷——顯然,運行在普通硬件上的單個數(shù)據(jù)庫服務(wù)器是無能為力的。這次,不再按站點功效和應(yīng)用分割數(shù)據(jù)庫,MySpace開始將它的顧客按每百萬一組分割,然后將各組的全部數(shù)據(jù)分別存入獨立的SQLServer實例。現(xiàn)在,MySpace的每臺數(shù)據(jù)庫服務(wù)器實際運行兩個SQLServer實例,也就是說每臺服務(wù)器服務(wù)大概二百萬顧客。據(jù)MySpace的技術(shù)人員說,后來還能夠按照這種模式以更小粒度劃分架構(gòu),從而優(yōu)化負荷分擔(dān)。第四代架構(gòu)—求助于微軟方案早期,賬戶達成九百萬,MySpace開始用微軟的C#編寫ASP.NET程序。在收到一定成效后,MySpace開始大規(guī)模遷移到ASP.NET。賬戶達成一千萬時,MySpace再次遭遇存儲瓶頸問題。SAN的引入解決了早期某些性能問題,但站點現(xiàn)在的規(guī)定已經(jīng)開始周期性超越SAN的I/O容量——即它從磁盤存儲系統(tǒng)讀寫數(shù)據(jù)的極限速度。第五代架構(gòu)—增加數(shù)據(jù)緩存層并轉(zhuǎn)到支持64位解決器的SQLServer春天,MySpace賬戶達成一千七百萬,MySpace又啟用了新的方略以減輕存儲系統(tǒng)壓力,即增加數(shù)據(jù)緩存層——位于Web服務(wù)器和數(shù)據(jù)庫服務(wù)器之間,其唯一職能是在內(nèi)存中建立被頻繁請求數(shù)據(jù)對象的副本,如此一來,不訪問數(shù)據(jù)庫也能夠向Web應(yīng)用供應(yīng)數(shù)據(jù)。中期,服務(wù)賬戶數(shù)達成兩千六百萬時,MySpace由于我們對內(nèi)存的渴求而切換到了還處在beta測試的支持64位解決器的SQLServer。升級到SQLServer和64位WindowsServer后,MySpace每臺服務(wù)器配備了32G內(nèi)存,后于再次將配備原則提高到64G。事實上,MySpace的Web服務(wù)器和數(shù)據(jù)庫仍然經(jīng)常發(fā)生超負荷,其顧客頻繁遭遇“意外錯誤”和“站點離線維護”等通告,他們不得不在論壇埋怨不停……MySpace正是在這樣不停重構(gòu)站點軟件、數(shù)據(jù)庫和存儲系統(tǒng)中,才一步步走到今天。事實上,MySpace已經(jīng)成功解決了諸多系統(tǒng)擴展性問題,其中存在相稱的經(jīng)驗值得我們借鑒。MySpace系統(tǒng)架構(gòu)到現(xiàn)在為止保持了相對穩(wěn)定,但其技術(shù)人員仍然在為SQLServer支持的同時連接數(shù)等方面繼續(xù)攻堅,盡量把事情做到最佳。(二)Amazon亞馬遜書店無疑是電子商務(wù)發(fā)展的里程碑。到現(xiàn)在,世界網(wǎng)絡(luò)業(yè)腥風(fēng)血雨。Amazon曾經(jīng)成為網(wǎng)絡(luò)泡沫的頭號代表。如今,當(dāng)這個“最大的泡沫”用幾經(jīng)易改的數(shù)字把自己變成了堅實的IT巨人。歷覽Amazon發(fā)展過程,其成功經(jīng)驗在于,它發(fā)明性地進行了電子商務(wù)中每一環(huán)節(jié)的探索,涉及系統(tǒng)平臺的建設(shè),程序編寫、網(wǎng)站設(shè)立、配送系統(tǒng)等等方面。用Amazon當(dāng)家人貝索斯的話說就是,“在現(xiàn)實世界的商店最有力的武器就是地段,地段,地段,而對于我們來說最重要的三件事就是技術(shù),技術(shù),技術(shù)?!?三)eBayeBay是世界聞名的拍賣網(wǎng)站,eBay公司通信部主管凱文?帕斯格拉夫認(rèn)為,“eBay成功的最重要因素在于公司管理和服務(wù)?!逼涑晒Φ膴W秘能夠列舉為下列幾點:①敢為天下先—在網(wǎng)絡(luò)尚不普及的時代,eBay率先進入網(wǎng)絡(luò)拍賣領(lǐng)域;②依靠虛擬商場合產(chǎn)生的特有的“零庫存”是eBay公司獲得成功的另一種重要因素。該公司的核心業(yè)務(wù)沒有任何庫存風(fēng)險,全部的商品都是由客戶提供,它只需要負責(zé)提供虛擬的拍賣平臺—網(wǎng)絡(luò)和軟件。因此,eBay公司的財務(wù)報表上不會出現(xiàn)“庫存費用”和“保管費用”等。③自eBay公司成立開始,它就始終遵照兩條“黃金原則”:建設(shè)虛擬社區(qū),給網(wǎng)民以家的感覺;確保網(wǎng)站穩(wěn)定安全地運行。二、國內(nèi)大型網(wǎng)站開發(fā)時的幾點建議從本節(jié)開始,我們將結(jié)合國內(nèi)外大型IT網(wǎng)站在技術(shù)擴展方面的沉痛教訓(xùn)和成功經(jīng)驗,探討在如今剛剛開始的Web2.0時代如何應(yīng)對國內(nèi)網(wǎng)站即將面臨的數(shù)據(jù)訪問量增加(甚至是急劇膨脹)的問題,并提出某些供參考的方略和建議。(四)搭建科學(xué)的系統(tǒng)架構(gòu)構(gòu)建大型的商業(yè)網(wǎng)站絕對不可能像構(gòu)建普通的小型網(wǎng)站同樣一蹴而就,需要從嚴(yán)格的軟件工程管理的角度進行認(rèn)真規(guī)劃,有環(huán)節(jié)有邏輯地進行開發(fā)。對于大型網(wǎng)站來說,所采用的技術(shù)涉及面極其廣泛,從硬件到軟件、編程語言、數(shù)據(jù)庫、Web服務(wù)器、防火墻等各個領(lǐng)域都有了很高的規(guī)定,已經(jīng)不是原來簡樸的html靜態(tài)網(wǎng)站所能比擬的。以出名的Yahoo!為例,他們的每一種大型網(wǎng)站工程都需要大量對應(yīng)專業(yè)人員的參加。(五)頁面靜態(tài)化可不要小看純靜態(tài)化的HTML頁面!其實在諸多狀況下,HTML往往意味著“效率最高、消耗最小”,因此我們盡量使我們的網(wǎng)站上的頁面采用靜態(tài)頁面來實現(xiàn)。但是,對于大量內(nèi)容并且頻繁更新的網(wǎng)站,我們無法全部手動實現(xiàn),因此能夠開發(fā)對應(yīng)的自動化更新工具,例如我們常見的信息公布系統(tǒng)CMS。像我們經(jīng)常訪問的各個門戶站點的新聞頻道,甚至他們的其它頻道,都是通過信息公布系統(tǒng)來管理和實現(xiàn)的。信息公布系統(tǒng)能夠?qū)崿F(xiàn)最簡樸的信息錄入自動生成靜態(tài)頁面,還能含有頻道管理、權(quán)限管理、自動抓取等功效,對于一種大型網(wǎng)站來說,擁有一套高效、可管理的CMS是必不可少的。(六)存儲問題存儲也是一種大問題,一種是小文獻的存儲,例如圖片這類;另一種是大文獻的存儲,例如搜索引擎的索引。大家懂得,對于Web服務(wù)器來說,不管是Apache、IIS還是其它容器,圖片是最消耗資源的,于是我們有必要將圖片與頁面進行分離,這是基本上大型網(wǎng)站都會采用的方略,他們都有獨立的圖片服務(wù)器,甚至諸多臺圖片服務(wù)器。這樣的架構(gòu)能夠減少提供頁面訪問請求的服務(wù)器系統(tǒng)壓力,并且能夠確保系統(tǒng)不會由于圖片問題而崩潰,在應(yīng)用服務(wù)器和圖片服務(wù)器上,能夠進行不同的配備優(yōu)化以確保更高的系統(tǒng)消耗和執(zhí)行效率。(七)數(shù)據(jù)庫技術(shù)—集群和庫表散列對于大型網(wǎng)站而言,使用大型的數(shù)據(jù)庫服務(wù)器是必須的事情。但是,在面對大量訪問的時候,數(shù)據(jù)庫的瓶頸仍然會顯現(xiàn)出來,這時一臺數(shù)據(jù)庫將很快無法滿足應(yīng)用,于是我們需要借助于數(shù)據(jù)庫集群或者庫表散列技術(shù)。在數(shù)據(jù)庫集群方面,諸多數(shù)據(jù)庫廠商都有自己的解決方案,Oracle、Sybase、SQLServer等都有較好的方案,慣用的MySQL提供的Master/Slave也是類似的方案。因此,你使用了什么樣的數(shù)據(jù)庫,就參考對應(yīng)的解決方案來實施即可。上面提到的數(shù)據(jù)庫集群由于在架構(gòu)、成本、擴張性方面都會受到所采用數(shù)據(jù)庫類型的限制,于是我們需要從應(yīng)用程序的角度來考慮改善系統(tǒng)架構(gòu),其中,庫表散列是慣用并且最有效的解決方案。我們在應(yīng)用程序中安裝業(yè)務(wù)和應(yīng)用或者功效模塊將數(shù)據(jù)庫進行分離,不同的模塊對應(yīng)不同的數(shù)據(jù)庫或者表,再按照一定的方略對某個頁面或者功效進行更小的數(shù)據(jù)庫散列,例如顧客表,按照顧客ID進行表散列,這樣就能夠低成本的提高系統(tǒng)的性能并且有較好的擴展性。在這首先一種現(xiàn)成的例子就是搜狐。它的論壇就是采用了這樣的架構(gòu),將論壇的顧客、設(shè)立、帖子等信息進行數(shù)據(jù)庫分離,然后對帖子、顧客按照板塊和ID進行散列數(shù)據(jù)庫和表,最后能夠在配備文獻中進行簡樸的配備便能讓系統(tǒng)隨時增加一臺低成本的數(shù)據(jù)庫進來補充系統(tǒng)性能。(八)緩存方略這絕對不單指低檔的緩存技術(shù)有關(guān)的編程,應(yīng)從整個架構(gòu)角度著眼,進一步研究Web服務(wù)器、數(shù)據(jù)庫服務(wù)器的各層級的緩沖方略,最后才是低檔的緩沖技術(shù)的編程。不同的Web服務(wù)器、數(shù)據(jù)庫服務(wù)器及Web編程語言都有自己不同的緩沖方略。例如數(shù)據(jù)庫存儲方面,SQLServe中的主動式緩存機制,Oracle數(shù)據(jù)的cachegroup技術(shù),Hibernate的緩存涉及Session的緩存和SessionFactory的緩存;Web服務(wù)器方面,Apache提供了自己的緩存模塊,也能夠使用外加的Squid模塊進行緩存,這兩種方式均能夠有效的提高Apache的訪問響應(yīng)能力,IIS緩沖器技術(shù);至于web開發(fā)語言,所用緩存技術(shù)更存在很大不同,例如ASP.NET2.0中提出了兩種緩存應(yīng)用程序數(shù)據(jù)和緩存服務(wù)頁輸出的方略,這兩種緩存技術(shù)互相獨立但不互相排斥,PHP有Pear的Cache模塊,等等。(九)鏡像鏡像是大型網(wǎng)站常采用的提高性能和數(shù)據(jù)安全性的方式,鏡像的技術(shù)能夠解決不同網(wǎng)絡(luò)接入商和地區(qū)帶來的顧客訪問速度差別。在鏡像的細節(jié)技術(shù)方面,這里不敘述太深,有諸多專業(yè)的現(xiàn)成的解決架構(gòu)和產(chǎn)品可選。也有便宜的通過軟件實現(xiàn)的思路,例如Linux上的rsync等工具。(十)負載均衡負載均衡將是大型網(wǎng)站解決高負荷訪問和大量并發(fā)請求采用的終極解決方法。負載均衡技術(shù)發(fā)展了數(shù)年,有諸多專業(yè)的服務(wù)提供商和產(chǎn)品能夠選擇,基于LAMP解決方案的Lighttped+Squid是相稱不錯的解決負載均衡和加速系統(tǒng)的有效方式。(十一)硬件四層交換第四層交換使用第三層和第四層信息包的報頭信息,根據(jù)應(yīng)用區(qū)間識別業(yè)務(wù)流,將整個區(qū)間段的業(yè)務(wù)流分派到適宜的應(yīng)用服務(wù)器進行解決。第四層交換功效就象是虛IP,指向物理服務(wù)器。它傳輸?shù)臉I(yè)務(wù)服從的合同多個多樣,有HTTP、FTP、NFS、Telnet或其它合同。這些業(yè)務(wù)在物理服務(wù)器基礎(chǔ)上,需要復(fù)雜的載量平衡算法。在IP世界,業(yè)務(wù)類型由終端TCP或UDP端口地址來決定,在第四層交換中的應(yīng)用區(qū)間則由源端和終端IP地址、TCP和UDP端口共同決定。在硬件四層交換產(chǎn)品領(lǐng)域,有某些出名的產(chǎn)品能夠選擇,例如Alteon、F5等,這些產(chǎn)品很昂貴,但是物有所值,能夠提供非常優(yōu)秀的性能和很靈活的管理能力。Yahoo中國當(dāng)時靠近臺服務(wù)器使用了三四臺Alteon就搞定了。(十二)軟件四層交換大家懂得了硬件四層交換機的原理后,基于OSI模型來實現(xiàn)的軟件四層交換也就應(yīng)運而生,這樣的解決方案實現(xiàn)的原理一致,但是性能稍差。但是滿足一定量的壓力還是游刃有余的。一種典型的使用負載均衡的方略就是,在軟件或者硬件四層交換的基礎(chǔ)上搭建squid集群,這種思路在諸多大型網(wǎng)站涉及搜索引擎上被采用,這樣的架構(gòu)低成本、高性能尚有很強的擴張性,隨時往架構(gòu)里面增減節(jié)點都非常容易。(十三)軟件投資問題據(jù)報導(dǎo),現(xiàn)在國內(nèi)除了某些上市公司和特別大出名大公司以外,極少有公司在成本中考慮正版軟件的購置費用。這種思維極有可能給中國互聯(lián)網(wǎng)帶來惡夢。如果某些公司真正面臨軟件資金方面的困難,完全能夠考慮使用開源世界的LAMP解決方案(Linux+Apache+MySQL+Perl、PH
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- TY/T 2103-2024綠色體育場館運營評價
- NB/T 11548-2024立井井筒鉆注平行作業(yè)技術(shù)規(guī)范
- 乒乓球課題申報書
- 名師支部建設(shè)課題申報書
- 振興鄉(xiāng)村教育課題申報書
- 教學(xué)課題立項申報書模板
- 思政教研課題申報書模板
- 家庭研究專題課題申報書
- 課題項目申報書模版
- 個人購平房合同范本
- 《古詩三首 石灰吟》公開課一等獎創(chuàng)新教學(xué)設(shè)計
- 特許經(jīng)營管理手冊范本(餐飲)
- 一年級教師工作總結(jié)
- 2023年四川省綿陽市中考語文試卷真題(含答案)
- 用車申請表格
- 王陽明與心學(xué)
- 賓館消防監(jiān)督每日巡查情況記錄表
- 標(biāo)準(zhǔn)檢驗指導(dǎo)書(SIP)-(格式模板)
- 2023年黑龍江放射醫(yī)學(xué)技術(shù)中級考試試卷
- 玄武巖職業(yè)衛(wèi)生控評
- 酒店人力資源管理實務(wù)課件
評論
0/150
提交評論