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

**一吩屹、大型互聯(lián)網(wǎng)應(yīng)用系統(tǒng)特點(diǎn):

  • 高并發(fā)斋竞,大流量
  • 高可用
  • 海量數(shù)據(jù)
  • 用戶發(fā)布廣泛钻蔑,網(wǎng)絡(luò)情況復(fù)雜
  • 安全環(huán)境惡劣
  • 需求快速變更啥刻,發(fā)布頻繁
  • 漸進(jìn)式發(fā)展

二、大型網(wǎng)站架構(gòu)演化發(fā)展歷程
1.初始階段網(wǎng)站架構(gòu)

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

例如咪笑,單臺(tái)的lamp架構(gòu)服務(wù)器可帽。

2.應(yīng)用服務(wù)和數(shù)據(jù)服務(wù)分離

隨著業(yè)務(wù)發(fā)展,單臺(tái)服務(wù)器不能滿足需求窗怒,這時(shí)將應(yīng)用和數(shù)據(jù)分離映跟,整個(gè)網(wǎng)站使用三臺(tái)服務(wù)器:應(yīng)用服務(wù)器、文件服務(wù)器扬虚、數(shù)據(jù)庫(kù)服務(wù)器努隙。



三臺(tái)服務(wù)器對(duì)硬件資源的要求各不同,應(yīng)用服務(wù)器需要處理大量業(yè)務(wù)邏輯孔轴,因此需要更快更強(qiáng)大的CPU剃法;數(shù)據(jù)庫(kù)服務(wù)器需要快速檢索和數(shù)據(jù)緩存,因此需要更快的硬盤(pán)和更大的內(nèi)存;文件服務(wù)器需要存儲(chǔ)大量文件贷洲,因此需要更大的硬盤(pán)收厨。

隨著用戶逐漸增多,數(shù)據(jù)庫(kù)壓力太大導(dǎo)致訪問(wèn)延遲优构,進(jìn)而影響整個(gè)網(wǎng)站的性能诵叁。這時(shí),需要對(duì)網(wǎng)站架構(gòu)進(jìn)一步優(yōu)化钦椭。

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

二八定律:80%的業(yè)務(wù)訪問(wèn)集中在20%的數(shù)據(jù)上拧额。

因此,如果把這一小部分?jǐn)?shù)據(jù)緩存在內(nèi)存彪腔,是不是就可以減少數(shù)據(jù)庫(kù)的訪問(wèn)壓力侥锦,提供整個(gè)網(wǎng)站的數(shù)據(jù)訪問(wèn)速度,改善數(shù)據(jù)庫(kù)寫(xiě)入性能德挣?

網(wǎng)站使用的緩存分為兩種:緩存在應(yīng)用服務(wù)器上的本地緩存和緩存在專門(mén)的分布式緩存服務(wù)器上的遠(yuǎn)程緩存恭垦。

本地緩存訪問(wèn)速度更快,但是受應(yīng)用服務(wù)器內(nèi)存限制格嗅,緩存數(shù)量有限番挺。遠(yuǎn)程分布式緩存可以使用集群方式,部署大內(nèi)存的服務(wù)器作為專門(mén)的緩存服務(wù)器屯掖,理論上可以做到不受內(nèi)存容量限制玄柏。



使用緩存后,數(shù)據(jù)訪問(wèn)壓力得到緩解贴铜,但單一應(yīng)用服務(wù)器能夠處理的連接請(qǐng)求有限粪摘,在訪問(wèn)高峰期,應(yīng)用服務(wù)器成為整個(gè)網(wǎng)站瓶頸阀湿。

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

使用集群是網(wǎng)站解決高并發(fā)赶熟、海量數(shù)據(jù)問(wèn)題的常用手段。

對(duì)網(wǎng)站架構(gòu)而言陷嘴,只要能通過(guò)增加一臺(tái)服務(wù)器的方式改善負(fù)載壓力,就可以以同樣方式持續(xù)增加服務(wù)器不斷改善系統(tǒng)性能间坐,從而實(shí)現(xiàn)系統(tǒng)可伸縮性灾挨。


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

通過(guò)負(fù)載均衡調(diào)度服務(wù)器,可將訪問(wèn)請(qǐng)求分發(fā)到應(yīng)用服務(wù)器集群的任一服務(wù)器竹宋。這樣使得應(yīng)用服務(wù)器不再成為網(wǎng)站的瓶頸劳澄。

5.數(shù)據(jù)庫(kù)讀寫(xiě)分離

使用緩存后,絕大部分?jǐn)?shù)據(jù)讀操作可以不通過(guò)數(shù)據(jù)庫(kù)完成蜈七,但有一部分讀操作(緩存訪問(wèn)不命中秒拔、緩存過(guò)期)和全部的寫(xiě)操作需要訪問(wèn)數(shù)據(jù)庫(kù),當(dāng)用戶達(dá)到一定規(guī)模時(shí)飒硅,數(shù)據(jù)庫(kù)因?yàn)閴毫^(guò)高而成為瓶頸砂缩。

目前大部分主流數(shù)據(jù)庫(kù)都提供主從熱備份功能作谚,利用熱備份功能將主數(shù)據(jù)庫(kù)數(shù)據(jù)同步到從數(shù)據(jù)庫(kù)實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫(xiě)分離,從而改善數(shù)據(jù)庫(kù)負(fù)載壓力庵芭。


數(shù)據(jù)庫(kù)讀寫(xiě)分離

為了便于程序訪問(wèn)讀寫(xiě)分離后的數(shù)據(jù)庫(kù)妹懒,通常在應(yīng)用服務(wù)器端使用專門(mén)數(shù)據(jù)訪問(wèn)模塊,使數(shù)據(jù)庫(kù)讀寫(xiě)分離對(duì)應(yīng)用透明双吆。

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

加速網(wǎng)站訪問(wèn)速度眨唬,主要手段有:使用CDN和反向代理。


使用反向代理和CDN加速訪問(wèn)

使用CDN和反向代理目的是今早返回?cái)?shù)據(jù)給用戶好乐,一方面加速用戶訪問(wèn)速度匾竿,另一方面減輕后端服務(wù)器負(fù)載壓力。

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

隨著業(yè)務(wù)發(fā)展蔚万,數(shù)據(jù)庫(kù)讀寫(xiě)分離后仍然不能滿足需求岭妖。這時(shí)需要使用分布式數(shù)據(jù)庫(kù)。文件系統(tǒng)也是一樣笛坦。

分布式數(shù)據(jù)庫(kù)是網(wǎng)站數(shù)據(jù)庫(kù)拆分最后手段区转,只有在單表數(shù)據(jù)規(guī)模非常龐大時(shí)才使用。更常用的數(shù)據(jù)庫(kù)拆分手段是業(yè)務(wù)分庫(kù)版扩,將不同業(yè)務(wù)數(shù)據(jù)部署到不同服務(wù)器上废离。


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

8.使用NoSQL和搜索引擎

隨著業(yè)務(wù)越來(lái)越復(fù)雜,對(duì)數(shù)據(jù)存儲(chǔ)和檢索需求也越來(lái)越復(fù)雜礁芦,需要采用一些非關(guān)系數(shù)據(jù)庫(kù)技術(shù)如NoSQL和非數(shù)據(jù)庫(kù)查詢技術(shù)如搜索引擎蜻韭。


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

9.業(yè)務(wù)拆分

大型網(wǎng)站為了應(yīng)對(duì)復(fù)雜的業(yè)務(wù)場(chǎng)景,將整個(gè)網(wǎng)站業(yè)務(wù)分為不同產(chǎn)品線柿扣,分歸不同團(tuán)隊(duì)負(fù)責(zé)肖方。

具體到技術(shù)上,根據(jù)產(chǎn)品線劃分未状,將一個(gè)網(wǎng)站拆分為多個(gè)不同應(yīng)用俯画,每個(gè)獨(dú)立部署維護(hù)。應(yīng)用間通過(guò)超鏈接建立關(guān)系司草,也可以通過(guò)消息隊(duì)列進(jìn)行數(shù)據(jù)分發(fā)艰垂,最多的是通過(guò)分為同一數(shù)據(jù)存儲(chǔ)系統(tǒng)來(lái)構(gòu)成一個(gè)關(guān)聯(lián)的完整系統(tǒng)。


應(yīng)用拆分

10.分布式服務(wù)

隨著業(yè)務(wù)拆分越來(lái)越小埋虹,存儲(chǔ)系統(tǒng)越來(lái)越大猜憎,系統(tǒng)整體復(fù)雜度指數(shù)增加,部署維護(hù)越來(lái)越困難搔课。

由于所有應(yīng)用要和所有數(shù)據(jù)庫(kù)系統(tǒng)連接胰柑,在數(shù)萬(wàn)臺(tái)服務(wù)器規(guī)模中,連接的數(shù)目是服務(wù)器規(guī)模的平方,導(dǎo)致存數(shù)據(jù)庫(kù)資源不足柬讨,拒絕服務(wù)崩瓤。

既然每個(gè)應(yīng)用系統(tǒng)都需要執(zhí)行許多相同業(yè)務(wù)操作,如用戶管理姐浮、商品管理等谷遂,那么可以將這些公共的業(yè)務(wù)提取出來(lái),獨(dú)立部署卖鲤。由這些可復(fù)用的業(yè)務(wù)連接數(shù)據(jù)庫(kù)肾扰,提供共用服務(wù),而應(yīng)用系統(tǒng)只需要管理用戶界面蛋逾,通過(guò)分布式服務(wù)調(diào)用共用服務(wù)完成具體操作集晚。


分布式服務(wù)

發(fā)展到這一階段,多數(shù)技術(shù)問(wèn)題都得到解決区匣。所以偷拔,開(kāi)始建設(shè)云計(jì)算平臺(tái),將計(jì)算作為基礎(chǔ)資源出售亏钩。

三莲绰、大型網(wǎng)站架構(gòu)演化價(jià)值觀

網(wǎng)站的價(jià)值在于能為用戶提供什么價(jià)值,在于能做什么姑丑,而不在于它是怎么做的蛤签,所以在網(wǎng)站還很小時(shí)去追求架構(gòu)是舍本逐末。

1.大型網(wǎng)站架構(gòu)技術(shù)的核心價(jià)值是隨網(wǎng)站所需靈活應(yīng)對(duì)

2.驅(qū)動(dòng)大型網(wǎng)站技術(shù)發(fā)展的主要力量是網(wǎng)站的業(yè)務(wù)發(fā)展

四栅哀、網(wǎng)站架構(gòu)設(shè)計(jì)誤區(qū)

1.一味追隨大公司解決方案
2.為了技術(shù)而技術(shù)
3.企圖用技術(shù)解決所有問(wèn)題

技術(shù)是用來(lái)解決業(yè)務(wù)問(wèn)題震肮,而業(yè)務(wù)問(wèn)題,也可以提供業(yè)務(wù)的手段解決留拾。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末戳晌,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子痴柔,更是在濱河造成了極大的恐慌沦偎,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咳蔚,死亡現(xiàn)場(chǎng)離奇詭異扛施,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)屹篓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)匙奴,“玉大人堆巧,你說(shuō)我怎么就攤上這事。” “怎么了谍肤?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵啦租,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我荒揣,道長(zhǎng)篷角,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任系任,我火速辦了婚禮恳蹲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘俩滥。我一直安慰自己嘉蕾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布霜旧。 她就那樣靜靜地躺著错忱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪挂据。 梳的紋絲不亂的頭發(fā)上以清,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音崎逃,去河邊找鬼掷倔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛婚脱,可吹牛的內(nèi)容都是我干的今魔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼障贸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼错森!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起篮洁,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤涩维,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后袁波,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體瓦阐,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年篷牌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了睡蟋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡枷颊,死狀恐怖戳杀,靈堂內(nèi)的尸體忽然破棺而出该面,到底是詐尸還是另有隱情,我是刑警寧澤信卡,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布隔缀,位于F島的核電站,受9級(jí)特大地震影響傍菇,放射性物質(zhì)發(fā)生泄漏猾瘸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一丢习、第九天 我趴在偏房一處隱蔽的房頂上張望牵触。 院中可真熱鬧,春花似錦泛领、人聲如沸荒吏。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)绰更。三九已至,卻和暖如春锡宋,著一層夾襖步出監(jiān)牢的瞬間儡湾,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工执俩, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留徐钠,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓役首,卻偏偏與公主長(zhǎng)得像尝丐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子衡奥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

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