大型網(wǎng)站架構(gòu)的演變簡(jiǎn)要

進(jìn)入互聯(lián)網(wǎng)行業(yè)做后臺(tái)研發(fā)工作,也將近兩年了掏膏,一直以來(lái)對(duì)譬如騰訊劳翰、淘寶這樣的大型互聯(lián)網(wǎng)架構(gòu)沒有全面的認(rèn)識(shí),可能頂多只是比較了解當(dāng)中的一些點(diǎn)馒疹。
這樣的情況佳簸,其實(shí)是比較危險(xiǎn)的,就如同行冰,生活在一個(gè)城市的路盲溺蕉,只了解自己家附近的幾條街巷伶丐、或者只了解常去商業(yè)區(qū)域周邊的話,一旦你身處這些區(qū)域之外(面臨的問題超出了自己所掌握技術(shù)點(diǎn)的解決范疇)疯特,那基本寸步難行哗魂,哪怕尋找路人幫助或者看導(dǎo)航地圖,也常少不了走彎路漓雅。

本文主要簡(jiǎn)要匯總下大型互聯(lián)網(wǎng)技術(shù)架構(gòu)的演變過程录别,希望給出一個(gè)全面的認(rèn)識(shí)。
對(duì)于每一次演變著重從以下三點(diǎn)介紹:

  • 演變背后的驅(qū)動(dòng)力(每一次演變主要矛盾)
  • 解決(緩解)矛盾的套路
  • 每一次套路背后的考量
S1 初始階段的網(wǎng)站架構(gòu)

起步階段用戶不多邻吞,通常只需要一臺(tái)服務(wù)器即可滿足组题,應(yīng)用程序、文件及數(shù)據(jù)庫(kù)均部署在一臺(tái)物理機(jī)器上抱冷。

S2 應(yīng)用服務(wù)與數(shù)據(jù)服務(wù)分離

隨著業(yè)務(wù)發(fā)展崔列,用戶漸增,服務(wù)器負(fù)載高居不下旺遮,站點(diǎn)響應(yīng)變慢赵讯,同時(shí)數(shù)據(jù)增多導(dǎo)致存儲(chǔ)空間捉襟見肘。
考慮到應(yīng)用耿眉、數(shù)據(jù)边翼、文件三種服務(wù)對(duì)硬件資源的要求存在差異,物理上分離部署(分層套路)鸣剪,可以緩解因一臺(tái)服務(wù)器資源吃緊導(dǎo)致的性能問題组底。
如此一來(lái),應(yīng)用服務(wù)器配備更高性能的CPU以滿足業(yè)務(wù)邏輯處理筐骇,數(shù)據(jù)庫(kù)服務(wù)器配備高性能磁盤及大容量?jī)?nèi)存以滿足快速的磁盤檢索與數(shù)據(jù)緩存债鸡,文件服務(wù)器配備大容量磁盤來(lái)滿足用戶上傳文件的存儲(chǔ)。

架構(gòu)演變_s1_s2.png
S3 DB不行拥褂,緩存來(lái)扛

用戶漸增娘锁,網(wǎng)站并發(fā)請(qǐng)求數(shù)增加,直接導(dǎo)致數(shù)據(jù)庫(kù)并發(fā)處理壓力過大饺鹃,再一次面臨站點(diǎn)響應(yīng)緩慢而影響用戶體驗(yàn)莫秆。
考慮到用戶訪問的數(shù)據(jù)并非均勻分布,而是類似于“二八定律”悔详,80%的用戶集中訪問20%的數(shù)據(jù)镊屎,所以,緩存少部分熱點(diǎn)數(shù)據(jù)茄螃,直接大幅降低數(shù)據(jù)庫(kù)的并發(fā)壓力缝驳。

S4 使用應(yīng)用服務(wù)器集群,水平線性擴(kuò)展網(wǎng)站并發(fā)處理能力

緩解了數(shù)據(jù)庫(kù)的訪問壓力后,網(wǎng)站高峰期的并發(fā)數(shù)接近單一應(yīng)用服務(wù)器的處理上限用狱,此時(shí)應(yīng)用服務(wù)器成為瓶頸运怖。
負(fù)載均衡+應(yīng)用服務(wù)器集群是非常有效的解決方案(集群套路),在一定規(guī)模內(nèi)(達(dá)到負(fù)載均衡單點(diǎn)能力上限之前)夏伊,可以實(shí)現(xiàn)線性的服務(wù)能力伸縮(靈活的伸縮性)摇展。
除此之外,企圖更換更強(qiáng)性能的應(yīng)用服務(wù)器是徒勞的溺忧,因?yàn)橐慌_(tái)機(jī)器無(wú)論如何都無(wú)法支撐持續(xù)高速增長(zhǎng)的業(yè)務(wù)咏连。

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

盡管S3階段中數(shù)據(jù)層新增的緩存層頂住了相當(dāng)比例的DB訪問請(qǐng)求,但仍然有小比例的讀操作祟滴、全部的寫操作到達(dá)DB,當(dāng)用戶到達(dá)一定規(guī)模歌溉,這部分比例的DB讀寫請(qǐng)求仍會(huì)到達(dá)數(shù)據(jù)庫(kù)并發(fā)上限垄懂,尤其高峰時(shí)段。
這個(gè)階段研底,常用套路就是數(shù)據(jù)庫(kù)讀寫分離埠偿,把相當(dāng)比例的讀請(qǐng)求剝離到從庫(kù),分擔(dān)主庫(kù)壓力榜晦。

S6 CDN加速網(wǎng)站響應(yīng)

繼數(shù)據(jù)庫(kù)讀寫分離后,整個(gè)網(wǎng)站的通常情況下響應(yīng)尚可羽圃。
但在大促/活動(dòng)場(chǎng)景下乾胶,某些業(yè)務(wù)的高并發(fā)訪問(比如秒殺),仍然對(duì)應(yīng)用服務(wù)器的網(wǎng)絡(luò)/磁盤IO有不小壓力朽寞,妨害用戶體驗(yàn)识窿。
對(duì)于靜態(tài)資源(圖片及js文件等)可以部署到CDN,快速返回給用戶端脑融,提高頁(yè)面加載速度喻频,同時(shí)降低應(yīng)用服務(wù)器壓力(更少的機(jī)器支撐更多業(yè)務(wù),同時(shí)也降低成本了)肘迎。

注:一般說(shuō)還可以搭配反向代理緩存靜態(tài)內(nèi)容甥温,但尚未搞清楚CDN與反向代理的區(qū)別是什么,這里暫且不提妓布。

架構(gòu)演變_s2_s6.png
S7 業(yè)務(wù)拆分與分布式服務(wù)

隨著業(yè)務(wù)的發(fā)展姻蚓,面向用戶的產(chǎn)品也呈現(xiàn)多樣性,為有效地組織與管理公司業(yè)務(wù)匣沼,
通常將整個(gè)網(wǎng)站業(yè)務(wù)劃分成不同產(chǎn)品線(公司組織架構(gòu)層面也作相應(yīng)的調(diào)整)狰挡,交由不同業(yè)務(wù)團(tuán)隊(duì)負(fù)責(zé),這是業(yè)務(wù)層面的拆分。

另一個(gè)加叁,在業(yè)務(wù)拆分的背后倦沧,需要有分布式服務(wù)的支撐,以支持靈活的伸縮性它匕。
因?yàn)闃I(yè)務(wù)拆分過程展融,伴隨著公共業(yè)務(wù)(用戶管理、支付等)的獨(dú)立超凳,以及不同體量業(yè)務(wù)間的分離愈污,
公共業(yè)務(wù)及大體量的業(yè)務(wù)訪問量非常之大,為了避免不同體量的業(yè)務(wù)采用一刀切的方式伸縮(控制成本)轮傍,分布式服務(wù)成為必要的選擇暂雹,可以實(shí)現(xiàn)不同業(yè)務(wù)按需部署,靈活伸縮创夜。

問題:為什么采用分布式服務(wù)杭跪?為什么采用的微服務(wù)架構(gòu)?

S8 數(shù)據(jù)層最后的殺手锏:分布式文件系統(tǒng)驰吓、分布式數(shù)據(jù)庫(kù)系統(tǒng)

自業(yè)務(wù)拆分后涧尿,在體量龐大的業(yè)務(wù)系統(tǒng)中,讀寫分離的數(shù)據(jù)庫(kù)架構(gòu)仍然存在壓力檬贰。

一方面姑廉,不同體量的業(yè)務(wù)數(shù)據(jù)庫(kù)混合部署于同一物理機(jī)器上,互相影響翁涤,常用解決手段是按業(yè)務(wù)維度桥言,單獨(dú)部署數(shù)據(jù)庫(kù)(水平拆分);
另一方面葵礼,體量大的業(yè)務(wù)數(shù)據(jù)庫(kù)存在并發(fā)瓶頸号阿、龐大單表讀寫操作效率低下等問題,常用的解決手段是按數(shù)據(jù)的某個(gè)維度(比如UID鸳粉、商品)分庫(kù)分表(垂直拆分)扔涧。
對(duì)于文件服務(wù),也是類似的届谈。

S9 NoSQL與搜索引擎

隨著網(wǎng)站業(yè)務(wù)越來(lái)越復(fù)雜枯夜,對(duì)數(shù)據(jù)存儲(chǔ)與搜索的需求也變得復(fù)雜(數(shù)據(jù)庫(kù)的分庫(kù)分表也是造成搜索困難的原因之一),網(wǎng)站需要非關(guān)系數(shù)據(jù)庫(kù)NoSQL與搜索引擎的支撐疼约。

架構(gòu)演變_s6_s9.png

大型的網(wǎng)站架構(gòu)演化到這里卤档,基本上大多數(shù)的技術(shù)問題都得以解決。
但這只是程剥,基本上T_T
一方面劝枣,一個(gè)大型網(wǎng)站架構(gòu)進(jìn)化至此汤踏,web層、服務(wù)層舔腾、數(shù)據(jù)層均是靈活的伸縮性架構(gòu)溪胶,水平擴(kuò)展加機(jī)器就能解決問題。但當(dāng)中仍然存在不少組件(中間件)并非分布式稳诚,而是集中式哗脖,例如常見的master-slave架構(gòu)的服務(wù)注冊(cè)中心,隨著業(yè)務(wù)體量的增長(zhǎng)扳还,早晚也會(huì)超出這些組件的性能上限才避。
另一方面,整個(gè)網(wǎng)站部署于同一機(jī)房氨距,規(guī)模本身也會(huì)受限于機(jī)房固有的物理空間桑逝。
對(duì)于前面的兩個(gè)問題,阿里基于單元化(超級(jí)體量的業(yè)務(wù))與中心化(一般體量業(yè)務(wù))的異地多活架構(gòu)是一個(gè)解決方案俏让。

參考資料

  1. 大型網(wǎng)站技術(shù)架構(gòu)—核心原理與案例分析
  2. 盡在雙11:阿里巴巴技術(shù)演進(jìn)與超越
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末楞遏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子首昔,更是在濱河造成了極大的恐慌寡喝,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件勒奇,死亡現(xiàn)場(chǎng)離奇詭異预鬓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)赊颠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門珊皿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人巨税,你說(shuō)我怎么就攤上這事》垭” “怎么了草添?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)扼仲。 經(jīng)常有香客問我远寸,道長(zhǎng),這世上最難降的妖魔是什么屠凶? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任驰后,我火速辦了婚禮,結(jié)果婚禮上矗愧,老公的妹妹穿的比我還像新娘灶芝。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布夜涕。 她就那樣靜靜地躺著犯犁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪女器。 梳的紋絲不亂的頭發(fā)上酸役,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音驾胆,去河邊找鬼涣澡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛丧诺,可吹牛的內(nèi)容都是我干的入桂。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼锅必,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼事格!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起搞隐,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤驹愚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后劣纲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逢捺,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年癞季,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了劫瞳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绷柒,死狀恐怖志于,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情废睦,我是刑警寧澤伺绽,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站嗜湃,受9級(jí)特大地震影響奈应,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜购披,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一杖挣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧刚陡,春花似錦惩妇、人聲如沸株汉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)郎逃。三九已至,卻和暖如春挺份,著一層夾襖步出監(jiān)牢的瞬間褒翰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工匀泊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留优训,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓各聘,卻偏偏與公主長(zhǎng)得像揣非,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子躲因,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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