大型網(wǎng)站技術(shù)架構(gòu)(一):大型網(wǎng)站架構(gòu)演化

如何打造一個高可用谚咬,高性能烘嘱,易擴展昆禽,可伸縮且安全的網(wǎng)站蝗蛙?這是很多大型互聯(lián)網(wǎng)企業(yè)和其架構(gòu)師們應(yīng)該關(guān)注的問題。在拜閱了李神的《大型網(wǎng)站技術(shù)架構(gòu)》一書以及結(jié)合自己對于互聯(lián)網(wǎng)的淺薄理解醉鳖,決定對其每一章做個學習筆記歼郭,供大家交流學習,也希望大家能夠做出批評和建議辐棒,在構(gòu)建大型網(wǎng)站以及成為架構(gòu)師之路上有所幫助~

第一章:大型網(wǎng)站架構(gòu)演化

九層之臺病曾,始于壘土;千里之行漾根,始于足下泰涂。

對于網(wǎng)站的發(fā)展,亦是如此辐怕,從上世紀90年代開始逼蒙,互聯(lián)網(wǎng)經(jīng)歷了20多年的發(fā)展,發(fā)生了翻天覆地的變化寄疏,今天是牢,全球有一半的人使用互聯(lián)網(wǎng),從信息檢索到實時通信陕截,從電子購物到文化娛樂驳棱,互聯(lián)網(wǎng)滲透到了生活的每一個角落。但是农曲,構(gòu)建一個高性能的網(wǎng)站社搅,絕非一朝一夕可以完成,我們來看下乳规,作為一個大型網(wǎng)站系統(tǒng)應(yīng)有的特點:

1.大型網(wǎng)站系統(tǒng)應(yīng)有的特點


高并發(fā)形葬,大流量:需要面對高并發(fā)用戶,大流量訪問暮的。舉個例子笙以,去往迪拜的飛機有200張票,但是有100w人都擠進系統(tǒng)買票冻辩,如何讓這100w人能夠看到票務(wù)的實時更新猖腕,以及順利的買到一張票,都是一個網(wǎng)站架構(gòu)師應(yīng)該考慮的問題微猖。這也許對于淘寶的“雙十一”1000w的一分鐘獨立訪問用戶量來說谈息,是個微不足道的數(shù)字,但是對于用戶的體驗以及網(wǎng)站的口碑來說凛剥,都是一項不小的挑戰(zhàn)侠仇。

高可用:相對于高并發(fā)來說,高可用并不是一個比較有規(guī)律的參數(shù),7*24 是每個網(wǎng)站的夢想逻炊,但是你并不知道互亮,在某一刻,他就沒理由的宕機了余素。

海量數(shù)據(jù):存儲豹休,管理海量的數(shù)據(jù),需要使用大量的服務(wù)器桨吊。FaceBook每周上傳的照片接近10億威根,沒有一個大型的存儲服務(wù)器的支撐,相信用戶量不會一直飆升视乐。

用戶分布廣泛洛搀,網(wǎng)絡(luò)情況復雜:許多大型的互聯(lián)網(wǎng)都是為全球用戶提供服務(wù)的,用戶分布范圍廣佑淀,各地網(wǎng)絡(luò)情況千差萬別留美。各個運行商之間的互通,各個國家的數(shù)據(jù)連接等等伸刃。

安全環(huán)境惡劣:由于互聯(lián)網(wǎng)的開放性谎砾,使得互聯(lián)網(wǎng)更容易受到攻擊,包括各種省份證信息被竊取等事件屢見不鮮捧颅。

漸進式發(fā)展:幾乎所有的大型互聯(lián)網(wǎng)網(wǎng)站都是從一個小網(wǎng)站開始景图,漸進發(fā)展起來的,好的互聯(lián)網(wǎng)產(chǎn)品都是慢慢運營出來的隘道。

2.大型網(wǎng)站架構(gòu)演化發(fā)展歷程


大型網(wǎng)站的技術(shù)挑戰(zhàn)來自于龐大的用戶症歇,高并發(fā)的訪問和海量的數(shù)據(jù),任何簡單的業(yè)務(wù)一旦需要處理數(shù)以P計的數(shù)據(jù)和面對數(shù)以億計的用戶谭梗,問題就會變的和棘手,我們來看下網(wǎng)站架構(gòu)發(fā)展的歷程:

階段1 :初始階段的網(wǎng)站架構(gòu):

小型網(wǎng)站最開始時沒有太多人訪問宛蚓,只需要一臺服務(wù)器綽綽有余激捏,此階段網(wǎng)站架構(gòu)如圖:

1.1 初始階段網(wǎng)站架構(gòu)

應(yīng)用程序,數(shù)據(jù)庫凄吏,文件等所有資源都放在一臺服務(wù)器上远舅,通常服務(wù)器視野Linux,應(yīng)用程序使用PHP,然后部署在Apache上痕钢,數(shù)據(jù)庫MySQL.


階段2:應(yīng)用服務(wù)和數(shù)據(jù)庫分離:

隨著網(wǎng)站業(yè)務(wù)的發(fā)展图柏,一臺服務(wù)器逐漸不能滿足需求,越來越多的用戶訪問導致性能越來越差任连,越來越多的數(shù)據(jù)導致存儲空間不足蚤吹,這時候,就需要將應(yīng)用和數(shù)據(jù)分離,此時整個網(wǎng)站使用三臺服務(wù)器:應(yīng)用服務(wù)器裁着,文件服務(wù)器和數(shù)據(jù)庫服務(wù)器繁涂,三臺服務(wù)器對硬件資源要求各不相同:應(yīng)用服務(wù)器需要處理大量的業(yè)務(wù)邏輯,因此需要更快更強大的CPU二驰,數(shù)據(jù)庫服務(wù)器需要快速磁盤檢索和數(shù)據(jù)緩存扔罪,因此需要更快的硬盤和更大的內(nèi)存,文件服務(wù)器需要存儲大量的用戶上傳文件桶雀,因此需要更大的硬盤矿酵。

1.2 應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器分離

階段3:使用緩存改善網(wǎng)站性能:

網(wǎng)站使用的緩存可以分為兩種:緩存在應(yīng)用服務(wù)器的本地緩存和緩存在專門的分布式緩存服務(wù)器上的遠程緩存。本地緩存的訪問速度更快一些矗积,但是受應(yīng)用服務(wù)器內(nèi)存限制全肮,緩存數(shù)據(jù)量有限。遠程分布式緩存可以使用集群的方式漠魏,部署大內(nèi)存的服務(wù)器作為專門的緩存服務(wù)器倔矾,可以在理論上做到不受內(nèi)存容量的限制:

1.3 網(wǎng)站使用緩存

階段4:使用應(yīng)用服務(wù)器集群改善網(wǎng)站的并發(fā)處理能力:

當有一臺服務(wù)器的處理能力、存儲空間不足時柱锹,不要企圖去更換更強大的服務(wù)器哪自,對于大型網(wǎng)站而言,不管多么強大的服務(wù)器禁熏,都滿足不了網(wǎng)站持續(xù)增長的業(yè)務(wù)需求壤巷。此時,應(yīng)該考慮增加一臺服務(wù)器分擔原有服務(wù)器的訪問以及存儲壓力:

1.4 應(yīng)用服務(wù)器集群部署

階段5:數(shù)據(jù)庫讀寫分離:

目前大部分的主流數(shù)據(jù)庫都提供主從熱備功能瞧毙,通過配置兩臺數(shù)據(jù)庫主從關(guān)系胧华,可以將一臺數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)更新同步到另外一臺服務(wù)器上,網(wǎng)站利用這一功能宙彪,實現(xiàn)數(shù)據(jù)庫讀寫分離矩动,從而改善數(shù)據(jù)庫負載壓力:

1.5 數(shù)據(jù)庫讀寫分離

階段6:使用反向代理和CDN加速網(wǎng)站響應(yīng):

CDN和反向代理的基本原理都是緩存,區(qū)別在于CDN部署在網(wǎng)絡(luò)提供商的機房释漆,用戶在請求時悲没,能從最近的機房獲取到資源;反向代理部署在網(wǎng)站的中心機房男图,當用戶請求到達中心機房后示姿,首先訪問的是機房的反向代理服務(wù)器,如果反向代理服務(wù)器中存儲了用戶請求的資源逊笆,那么優(yōu)先返回該部分資源給用戶栈戳。

1.6 網(wǎng)站使用反向代理和CDN加速訪問

階段7:使用分布式文件系統(tǒng)和分布式數(shù)據(jù)庫系統(tǒng):

數(shù)據(jù)庫經(jīng)過讀寫分離后,從一臺服務(wù)器分成兩臺服務(wù)器难裆,但是隨著網(wǎng)站業(yè)務(wù)的發(fā)展子檀,依然不能滿足需求,這是就需要使用分布式數(shù)據(jù)庫,文件系統(tǒng)也是如此

1.7 分布式文件和分布式數(shù)據(jù)庫系統(tǒng)

分布式數(shù)據(jù)庫是網(wǎng)站數(shù)據(jù)庫拆分的最后手段命锄,只有在單表數(shù)據(jù)規(guī)模非常大的時候才使用堰乔。一般情況下,網(wǎng)站更常用的數(shù)據(jù)庫拆分手段是業(yè)務(wù)分庫脐恩,將不同業(yè)務(wù)的數(shù)據(jù)庫部署在不同的服務(wù)器上镐侯。

階段8:使用NoSQL和搜索引擎:

隨著網(wǎng)站業(yè)務(wù)越來越復雜,對數(shù)據(jù)存儲和檢索的需求也越來越復雜驶冒,網(wǎng)站需要采用一些非關(guān)系數(shù)據(jù)庫技術(shù)如NoSQL和非數(shù)據(jù)庫查詢技術(shù)如搜索引擎:

1.8 使用NoSQL系統(tǒng)和搜索引擎


階段9:業(yè)務(wù)拆分:

大型網(wǎng)站為了應(yīng)對日益復雜的業(yè)務(wù)場景苟翻,通過使用分而治之的手段將整個網(wǎng)站業(yè)務(wù)分成不同的產(chǎn)品線,如大型購物網(wǎng)站會將首頁骗污,商鋪崇猫,訂單,買家等拆分成不通的產(chǎn)品線需忿,分歸不通的業(yè)務(wù)團隊負責诅炉。具體到技術(shù)上,也會根據(jù)產(chǎn)品線劃分屋厘,將一個網(wǎng)站拆分成許多不同的應(yīng)用涕烧,每個獨立部署維護。應(yīng)用之間可以通過一個超鏈接建立關(guān)系汗洒,也可以通過消息隊列進行數(shù)據(jù)分發(fā)议纯,當然最多的還是通過訪問同一個數(shù)據(jù)存儲系統(tǒng)來構(gòu)成一個關(guān)聯(lián)的完整系統(tǒng):

1.9 應(yīng)用拆分

階段10:分布式服務(wù):

隨著業(yè)務(wù)拆分越來越小,存儲系統(tǒng)越來越龐大溢谤,應(yīng)用系統(tǒng)的整體復雜程度呈指數(shù)級增加瞻凤,部署維護越來越困難,由于所有的應(yīng)用要和所有的數(shù)據(jù)庫系統(tǒng)連接世杀,在數(shù)萬臺服務(wù)器規(guī)模的網(wǎng)站中阀参,這些連接的數(shù)目是服務(wù)器規(guī)模的平方,導致數(shù)據(jù)庫連接資源不足瞻坝,拒絕服務(wù)结笨。

既然每一個應(yīng)用系統(tǒng)都需要執(zhí)行許多相同的業(yè)務(wù)操作,比如用戶管理湿镀,商品管理等,那么可以將這些共用的業(yè)務(wù)提取出來伐憾,獨立部署勉痴。由這些可復用的業(yè)務(wù)連接數(shù)據(jù)庫,提供共用業(yè)務(wù)服務(wù)树肃,而應(yīng)用系統(tǒng)只需要管理用戶界面蒸矛,通過分布式服務(wù)調(diào)用共用業(yè)務(wù)服務(wù)完成具體業(yè)務(wù)操作。


1.10 分布式服務(wù)

大型網(wǎng)站的架構(gòu)演化到這里,基本上大多數(shù)的技術(shù)問題都可以得到解決雏掠,諸如跨數(shù)據(jù)中心的實時數(shù)據(jù)同步和具體網(wǎng)站業(yè)務(wù)相關(guān)的問題也可以通過組合改進現(xiàn)有的技術(shù)架構(gòu)來解決斩祭。

3.總結(jié):

這個世界沒有那個網(wǎng)站從誕生起就是大型網(wǎng)站,也沒有哪個網(wǎng)站從發(fā)布起就有龐大的用戶乡话,高并發(fā)的訪問以及海量的用戶摧玫,大型網(wǎng)站都是從小型網(wǎng)站發(fā)展而來的。大型網(wǎng)站架構(gòu)技術(shù)的核心價值不是從無到有建立一個網(wǎng)站绑青,而是能夠伴隨小型網(wǎng)站業(yè)務(wù)的逐步發(fā)展诬像,慢慢演化成一個大型網(wǎng)站,在此過程中闸婴,不需要放棄什么坏挠,不需要推翻什么,不需要劇烈的革命邪乍,就慢慢的把一個有=只有一臺服務(wù)器降狠,幾百個用戶的小網(wǎng)站演化成一個幾十萬臺服務(wù)器,數(shù)十億用戶的大型網(wǎng)站庇楞。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末榜配,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子姐刁,更是在濱河造成了極大的恐慌芥牌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件聂使,死亡現(xiàn)場離奇詭異壁拉,居然都是意外死亡,警方通過查閱死者的電腦和手機柏靶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門弃理,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人屎蜓,你說我怎么就攤上這事痘昌。” “怎么了炬转?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵辆苔,是天一觀的道長。 經(jīng)常有香客問我扼劈,道長驻啤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任荐吵,我火速辦了婚禮骑冗,結(jié)果婚禮上赊瞬,老公的妹妹穿的比我還像新娘。我一直安慰自己贼涩,他們只是感情好巧涧,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著遥倦,像睡著了一般谤绳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谊迄,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天闷供,我揣著相機與錄音,去河邊找鬼统诺。 笑死歪脏,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的粮呢。 我是一名探鬼主播婿失,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼啄寡!你這毒婦竟也來了豪硅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤挺物,失蹤者是張志新(化名)和其女友劉穎懒浮,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體识藤,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡砚著,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了痴昧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稽穆。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖赶撰,靈堂內(nèi)的尸體忽然破棺而出舌镶,到底是詐尸還是另有隱情,我是刑警寧澤豪娜,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布餐胀,位于F島的核電站,受9級特大地震影響瘤载,放射性物質(zhì)發(fā)生泄漏骂澄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一惕虑、第九天 我趴在偏房一處隱蔽的房頂上張望坟冲。 院中可真熱鬧,春花似錦溃蔫、人聲如沸健提。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽私痹。三九已至,卻和暖如春统刮,著一層夾襖步出監(jiān)牢的瞬間紊遵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工侥蒙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留暗膜,地道東北人。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓鞭衩,卻偏偏與公主長得像学搜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子论衍,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容