大型網(wǎng)站架構(gòu)設(shè)計(jì)與分析案例
時(shí)間:2023-09-09 09:30:01 | 來源:網(wǎng)站運(yùn)營(yíng)
時(shí)間:2023-09-09 09:30:01 來源:網(wǎng)站運(yùn)營(yíng)
大型網(wǎng)站架構(gòu)設(shè)計(jì)與分析案例:關(guān)注小編不迷路,小編帶你上高速~
第一代架構(gòu):添置更多的Web服務(wù)器
MySpace最初的系統(tǒng)很小,只有兩臺(tái)Web服務(wù)器(分擔(dān)處理用戶請(qǐng)求的工作量)和一個(gè)數(shù)據(jù)庫(kù)服務(wù)器(所有數(shù)據(jù)都存儲(chǔ)在這一個(gè)地方)。那時(shí)使用的是Dell雙CPU、4G內(nèi)存的系統(tǒng)。在早期階段,MySpace基本是通過添置更多Web服務(wù)器來對(duì)付用戶暴增問題的。但到在2004年早期,在MySpace用戶數(shù)增長(zhǎng)到五十萬后,其數(shù)據(jù)庫(kù)服務(wù)器已經(jīng)開始疲于奔命了。
第二代架構(gòu) :增加數(shù)據(jù)庫(kù)服務(wù)器 與增加Web服務(wù)器不同,增加數(shù)據(jù)庫(kù)并沒那么簡(jiǎn)單。如果一個(gè)站點(diǎn)由多個(gè)數(shù)據(jù)庫(kù)支持,設(shè)計(jì)者必須考慮的是,如何在保證數(shù)據(jù)一致性的前提下讓多個(gè)數(shù)據(jù)庫(kù)分擔(dān)壓力。
MySpace運(yùn)行在三個(gè)SQL Server數(shù)據(jù)庫(kù)服務(wù)器上:一個(gè)為主,所有的新數(shù)據(jù)都向它提 交,然后由它復(fù)制到其它兩個(gè);另兩個(gè)數(shù)據(jù)庫(kù)服務(wù)器全力向用戶供給數(shù)據(jù),用以在博客和個(gè)人資料欄顯示。這種方式在一段時(shí)間內(nèi)效果很好——只要增加數(shù)據(jù)庫(kù)服務(wù)器,加大硬盤,就可以應(yīng)對(duì)用戶數(shù)和訪問量的增加。 這一次的數(shù)據(jù)庫(kù)架構(gòu)按照垂直分割模式設(shè)計(jì),不同的數(shù)據(jù)庫(kù)服務(wù)于站點(diǎn)的不同功能,如登錄、用戶資料和博客。垂直分割策略利于多個(gè)數(shù)據(jù)庫(kù)分擔(dān)訪問壓力,當(dāng)用戶要求增加新功能時(shí),MySpace只需要投入新的數(shù)據(jù)庫(kù)加以支持。在賬戶到達(dá)二百萬后,MySpace還從存儲(chǔ)設(shè)備與數(shù)據(jù)庫(kù)服務(wù)器直接交互的方式切換到SAN(存儲(chǔ)區(qū)域網(wǎng)絡(luò))—用高帶寬、專門設(shè)計(jì)的網(wǎng)絡(luò)將大量磁盤存儲(chǔ)設(shè)備連接在一起,而數(shù)據(jù)庫(kù)連接到SAN。這項(xiàng)措施極大提升了系統(tǒng)性能、正常運(yùn)行時(shí)間和可靠性。然而,當(dāng)用戶繼續(xù)增加到三百萬后,垂直分割策略也變得難以維持下去。
第三代架構(gòu):轉(zhuǎn)到分布式計(jì)算架構(gòu)
幾經(jīng)折騰,最終,MySpace將目光移到分布式計(jì)算架構(gòu)——它在物理上分布的眾多服務(wù)器,整體必須邏輯上等同于單臺(tái)機(jī)器。拿數(shù)據(jù)庫(kù)來說,就不能再像過去那樣將應(yīng)用拆分,再以不同數(shù)據(jù)庫(kù)分別支持,而必須將整個(gè)站點(diǎn)看作一個(gè)應(yīng)用。現(xiàn)在,數(shù)據(jù)庫(kù)模型里只有一個(gè)用戶表,支持博客、個(gè)人資料和其他核心功能的數(shù)據(jù)都存儲(chǔ)在相同數(shù)據(jù)庫(kù)。
既然所有的核心數(shù)據(jù)邏輯上都組織到一個(gè)數(shù)據(jù)庫(kù),那么MySpace必須找到新的辦法以分擔(dān)負(fù)荷——顯然,運(yùn)行在普通硬件上的單個(gè)數(shù)據(jù)庫(kù)服務(wù)器是無能為力的。這次,不再按站點(diǎn)功能和應(yīng)用分割數(shù)據(jù)庫(kù),MySpace開始將它的用戶按每百萬一組分割,然后將各組的全部數(shù)據(jù)分別存入獨(dú)立的SQL Server實(shí)例。結(jié)果是,MySpace的每臺(tái)數(shù)據(jù)庫(kù)服務(wù)器實(shí)際運(yùn)行兩個(gè)SQL Server實(shí)例,也就是說每臺(tái)服務(wù)器服務(wù)大約二百萬用戶。據(jù)MySpace的技術(shù)人員說,以后還可以按照這種模式以更小粒度劃分架構(gòu),從而優(yōu)化負(fù)荷分擔(dān)。
第四代架構(gòu):求助于微軟方案 2005年早期,賬戶達(dá)到九百萬,MySpace開始用微軟的C#編寫
http://ASP.NET程序。在收到一定成效后,MySpace開始大規(guī)模遷移到ASP.NET。
賬戶達(dá)到一千萬時(shí),MySpace再次遭遇存儲(chǔ)瓶頸問題。SAN的引入解決了早期一些性能問題,但站點(diǎn)目前的要求已經(jīng)開始周期性超越SAN的I/O容量——即它從磁盤存儲(chǔ)系統(tǒng)讀寫數(shù)據(jù)的極限速度。
第五代架構(gòu) :增加數(shù)據(jù)緩存層并轉(zhuǎn)到支持64位處理器的SQL Server 2005
2005年春天,MySpace賬戶達(dá)到一千七百萬,MySpace又啟用了新的策略以減輕存儲(chǔ)系統(tǒng)壓力,即增加數(shù)據(jù)緩存層——位于Web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器之間,其唯一職能是在內(nèi)存中建立被頻繁請(qǐng)求數(shù)據(jù)對(duì)象的副本,如此一來,不訪問數(shù)據(jù)庫(kù)也可以向Web應(yīng)用供給數(shù)據(jù)。
2005年中期,服務(wù)賬戶數(shù)達(dá)到兩千六百萬時(shí),MySpace因?yàn)槲覀儗?duì)內(nèi)存的渴求而切換到了還處于beta測(cè)試的支持64位處理器的SQL Server 2005。升級(jí)到SQL Server 2005和64位Windows Server 2003后,MySpace每臺(tái)服務(wù)器配備了32G內(nèi)存,后于2006年再次將配置標(biāo)準(zhǔn)提升到64G。
事實(shí)上,MySpace的Web服務(wù)器和數(shù)據(jù)庫(kù)仍然經(jīng)常發(fā)生超負(fù)荷,其用戶頻繁遭遇“意外錯(cuò)誤”和“站點(diǎn)離線維護(hù)”等告示,他們不得不在論壇抱怨…
MySpace正是在這樣不斷重構(gòu)站點(diǎn)軟件、數(shù)據(jù)庫(kù)和存儲(chǔ)系統(tǒng)中,才一步步走到今天。
事實(shí)上,MySpace已經(jīng)成功解決了很多系統(tǒng)擴(kuò)展性問題,其中存在相當(dāng)?shù)慕?jīng)驗(yàn)值得我們借鑒。MySpace系統(tǒng)架構(gòu)到目前為止保持了相對(duì)穩(wěn)定,但其技術(shù)人員仍然在為SQL Server支持的同時(shí)連接數(shù)等方面繼續(xù)攻堅(jiān),盡可能把事情做到最好。
千山萬水總是情,點(diǎn)個(gè)關(guān)注行不行,最后真誠(chéng)的感謝大家的觀看哦~
喜歡的話或者對(duì)您有幫助的話麻煩動(dòng)動(dòng)您的小手點(diǎn)個(gè)贊吆!
關(guān)鍵詞:分析,設(shè)計(jì),大型