阿里云構(gòu)建千萬級架構(gòu)演變之路

前言

一個(gè)好的架構(gòu)是靠演變而來,而不是單純的靠設(shè)計(jì)世囊。剛開始做架構(gòu)設(shè)計(jì),我們不可能全方位的考慮到架構(gòu)的高性能距贷、高擴(kuò)展性相叁、高安全等各方面的因素遵绰。隨著業(yè)務(wù)需求越多越多、隨著業(yè)務(wù)訪問壓力越多越大增淹,架構(gòu)不斷的演變及進(jìn)化椿访,因而造就了一個(gè)成熟穩(wěn)定的大型架構(gòu)。如淘寶網(wǎng)虑润、如Facebook等大型網(wǎng)站的架構(gòu)成玫,無不從一個(gè)小型規(guī)模架構(gòu),不斷進(jìn)化及演變成為一個(gè)大型網(wǎng)站架構(gòu)拳喻。

隨著云計(jì)算的到來哭当,當(dāng)前已經(jīng)從IT時(shí)代向DT時(shí)代開始轉(zhuǎn)型。在云端如何構(gòu)建千萬級架構(gòu)冗澈,本文主要結(jié)合阿里云最佳實(shí)踐經(jīng)驗(yàn)钦勘,向大家分享如何從一個(gè)小型網(wǎng)站逐步演變到千萬級架構(gòu)的過程。

架構(gòu)原始階段:萬能的單機(jī)

架構(gòu)的最原始階段渗柿,即一臺ECS服務(wù)器搞定一切个盆。傳統(tǒng)官網(wǎng)、論壇等應(yīng)用朵栖,只需要一臺ECS颊亮。對應(yīng)的web服務(wù)器、數(shù)據(jù)庫陨溅、靜態(tài)文件資源等终惑,部署到一臺ECS上即可。一般5萬pv到30萬pv訪問量门扇,結(jié)合內(nèi)核參數(shù)調(diào)優(yōu)雹有、web應(yīng)用性能參數(shù)、數(shù)據(jù)庫調(diào)優(yōu)臼寄,基本上能夠穩(wěn)定的運(yùn)行霸奕。
架構(gòu)采用單臺ECS:

萬能的單機(jī)

架構(gòu)基礎(chǔ)階段:物理分離web和數(shù)據(jù)庫

當(dāng)訪問壓力達(dá)到50萬pv到100萬pv的時(shí)候,部署在一臺服務(wù)器上面的web應(yīng)用及數(shù)據(jù)庫等服務(wù)應(yīng)用吉拳,會對服務(wù)器的CPU/內(nèi)存/磁盤/帶寬 等系統(tǒng)資源進(jìn)行競爭质帅。顯然單機(jī)已經(jīng)出現(xiàn)性能瓶頸。我們將web應(yīng)用和數(shù)據(jù)庫物理分離單獨(dú)部署,解決對應(yīng)性能問題煤惩。
架構(gòu)采用ECS+RDS:

物理分離web和數(shù)據(jù)庫

架構(gòu)動靜分離階段:靜態(tài)緩存 + 文件存儲

當(dāng)訪問壓力達(dá)到100萬pv到300萬pv的時(shí)候嫉嘀,我們看到前端web服務(wù)出現(xiàn)性能瓶頸。大量的web請求被堵塞魄揉,同時(shí)服務(wù)器的CPU剪侮、磁盤IO、帶寬都有壓力洛退。這時(shí)候我們一方面將網(wǎng)站圖片瓣俯、js、css不狮、html及應(yīng)用服務(wù)相關(guān)的文件存儲在oss中降铸,另外一方面通過CDN將靜態(tài)資源分布式緩存在各個(gè)節(jié)點(diǎn)實(shí)現(xiàn)“就近訪問”。通過將動態(tài)請求摇零、靜態(tài)請求的訪問分離(“動靜分離”)推掸,有效解決服務(wù)器在磁盤IO、帶寬方面的訪問壓力驻仅。
架構(gòu)采用CDN + ECS + OSS + RDS:

靜態(tài)緩存 + 文件存儲

架構(gòu)分布式階段:負(fù)載均衡

當(dāng)訪問壓力達(dá)到300萬pv到500萬pv的時(shí)候谅畅,雖然“動靜分離“有效分離了靜態(tài)請求的壓力,但是動態(tài)請求的壓力已經(jīng)讓服務(wù)器”吃不消“噪服。最直觀的現(xiàn)象是毡泻,前端訪問堵塞、延遲粘优、服務(wù)器進(jìn)程增多仇味、cpu100%,并且出現(xiàn)常見502/503/504的錯(cuò)誤碼雹顺。顯然單臺web服務(wù)器已經(jīng)滿足不了需求丹墨,這里需要通過負(fù)載均衡技術(shù)增加多臺web服務(wù)器(對應(yīng)ECS可以選擇不同可用區(qū),進(jìn)一步保障高可用)嬉愧。因而告別單機(jī)的時(shí)代贩挣,轉(zhuǎn)變分布式架構(gòu)的階段。
架構(gòu)采用CDN+SLB + ECS + OSS + RDS:

負(fù)載均衡

架構(gòu)數(shù)據(jù)緩存階段: 數(shù)據(jù)庫緩存

當(dāng)訪問壓力達(dá)到500萬pv到1000萬pv没酣,雖然負(fù)載均衡結(jié)合多臺web服務(wù)器王财,解決了動態(tài)請求的性能壓力。但是這時(shí)候我們發(fā)現(xiàn)裕便,數(shù)據(jù)庫出現(xiàn)壓力瓶頸绒净,常見的現(xiàn)象就是RDS的連接數(shù)增加并且堵塞、CPU100%偿衰、IOPS飆升疯溺。這個(gè)時(shí)候我們通過數(shù)據(jù)庫緩存论颅,有效減少數(shù)據(jù)庫訪問壓力哎垦,進(jìn)一步提升性能囱嫩。
架構(gòu)采用CDN+SLB +ECS +OSS + 云數(shù)據(jù)庫memcache +RDS :

數(shù)據(jù)庫緩存

架構(gòu)擴(kuò)展階段:垂直擴(kuò)展

當(dāng)訪問量達(dá)到1000萬pv到5000萬pv,雖然這個(gè)時(shí)候我們可以看到通過分布式文件系統(tǒng)OSS已經(jīng)解決了文件存儲的性能問題漏设,雖然通過CDN已經(jīng)解決靜態(tài)資源訪問的性能問題墨闲。但是當(dāng)訪問壓力再次增加,這個(gè)時(shí)候web服務(wù)器和數(shù)據(jù)庫方面依舊是瓶頸郑口。在此我們通過垂直擴(kuò)展鸳碧,進(jìn)一步切分web服務(wù)器和數(shù)據(jù)庫的壓力,解決性能問題犬性。
“何為垂直擴(kuò)展瞻离,按照不同的業(yè)務(wù)(或者數(shù)據(jù)庫)切分到不同的服務(wù)器(或者數(shù)據(jù)庫)之上,這種切分稱之為垂直擴(kuò)展乒裆√桌”

垂直擴(kuò)展第一招:業(yè)務(wù)拆分
在業(yè)務(wù)層,可以把不同的功能模塊拆分到不同的服務(wù)器上面進(jìn)行單獨(dú)部署鹤耍。比如肉迫,用戶模塊、訂單模塊稿黄、商品模塊等喊衫,拆分到不同服務(wù)器上面部署。

垂直擴(kuò)展第二招:讀寫分離
在數(shù)據(jù)庫層杆怕,當(dāng)結(jié)合數(shù)據(jù)庫緩存族购,數(shù)據(jù)庫壓力還是很大的時(shí)候。我們通過讀寫分離的方式陵珍,進(jìn)一步切分及降低數(shù)據(jù)庫的壓力寝杖。

垂直擴(kuò)展第三招:分庫
結(jié)合業(yè)務(wù)拆分、讀寫分離撑教,在數(shù)據(jù)庫層朝墩,比如我們同樣可以把用戶模塊、訂單模塊伟姐、商品模塊等收苏。所涉及的數(shù)據(jù)庫表:用戶模塊表、訂單模塊表愤兵、商品模塊表等鹿霸,分別存放到不同數(shù)據(jù)庫中,如用戶模塊庫秆乳、訂單模塊庫懦鼠、商品模塊庫等钻哩。然后把不同數(shù)據(jù)庫分別部署到不同服務(wù)器中。

架構(gòu)采用CDN+SLB +ECS +OSS+ 云數(shù)據(jù)庫memcache + RDS讀寫分離:

垂直擴(kuò)展

架構(gòu)分布式+大數(shù)據(jù)階段:水平擴(kuò)展

當(dāng)訪問量達(dá)到5000萬pv及以上時(shí)肛冶,當(dāng)真真達(dá)到千萬級架構(gòu)以上訪問量的時(shí)候街氢,我們可以看到垂直擴(kuò)展的架構(gòu)也已經(jīng)開始“山窮水盡”。比如睦袖,讀寫分離僅解決讀的壓力珊肃,面對高訪問量,在數(shù)據(jù)庫“寫”的壓力上面“力不從心”馅笙,出現(xiàn)性能瓶頸伦乔。另外,分庫雖然將壓力拆分到不同數(shù)據(jù)庫中董习。但單表的數(shù)據(jù)量達(dá)到TB級別以上烈和,顯然已經(jīng)達(dá)到傳統(tǒng)關(guān)系型數(shù)據(jù)庫處理的極限。

水平擴(kuò)展第一招:增加更多的web服務(wù)器
通過業(yè)務(wù)垂直拆分分布部署在不同服務(wù)器后皿淋,當(dāng)后續(xù)壓力進(jìn)一步增大招刹,增加更多的webserver進(jìn)行水平擴(kuò)展。

水平擴(kuò)展第二招:增加更多的SLB
單臺SLB也存在單點(diǎn)故障的風(fēng)險(xiǎn)沥匈,及SLB也存在性能極限蔗喂,如QPS最大值為50000。通過DNS輪詢高帖,將請求輪詢轉(zhuǎn)發(fā)至不同可用區(qū)的SLB上面缰儿,實(shí)現(xiàn)SLB水平擴(kuò)展。

水平擴(kuò)展第三招:采用分布式緩存
雖然阿里云memcache內(nèi)存數(shù)據(jù)庫已經(jīng)是分布式結(jié)構(gòu)散址,但是同樣單一的入口也存在單點(diǎn)故障的風(fēng)險(xiǎn)可能乖阵。并且也存在性能極限,如最大吞吐量峰值為512Mbps预麸。所以我們部署多臺云數(shù)據(jù)庫memcache版瞪浸,可以在代碼層通過hash算法將數(shù)據(jù)分別緩存至不同的云數(shù)據(jù)庫memcache版中。

水平擴(kuò)展第四招:sharding + nosql
面對高并發(fā)吏祸、大數(shù)據(jù)的需求对蒲,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫已不再適合。需要采用DRDS(mysql sharding分布式解決方案) + OTS(基于列存儲的分布式數(shù)據(jù)庫)對應(yīng)的分布式數(shù)據(jù)庫來根本性的解決問題贡翘。

架構(gòu)采用CDN+DNS輪詢+SLB +ECS+OSS + 云數(shù)據(jù)庫memcache+DRDS+OTS:

水平擴(kuò)展

我為自己帶鹽蹈矮,原創(chuàng)作者:喬銳杰

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市鸣驱,隨后出現(xiàn)的幾起案子泛鸟,更是在濱河造成了極大的恐慌,老刑警劉巖踊东,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件北滥,死亡現(xiàn)場離奇詭異刚操,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)再芋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門菊霜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人祝闻,你說我怎么就攤上這事占卧。” “怎么了联喘?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長辙纬。 經(jīng)常有香客問我豁遭,道長,這世上最難降的妖魔是什么贺拣? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任蓖谢,我火速辦了婚禮,結(jié)果婚禮上譬涡,老公的妹妹穿的比我還像新娘闪幽。我一直安慰自己,他們只是感情好涡匀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布盯腌。 她就那樣靜靜地躺著,像睡著了一般陨瘩。 火紅的嫁衣襯著肌膚如雪腕够。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天舌劳,我揣著相機(jī)與錄音帚湘,去河邊找鬼。 笑死甚淡,一個(gè)胖子當(dāng)著我的面吹牛大诸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播贯卦,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼资柔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了脸侥?” 一聲冷哼從身側(cè)響起建邓,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎睁枕,沒想到半個(gè)月后官边,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沸手,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年注簿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了契吉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡诡渴,死狀恐怖捐晶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情妄辩,我是刑警寧澤惑灵,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站眼耀,受9級特大地震影響英支,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜哮伟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一干花、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧楞黄,春花似錦池凄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至桑阶,卻和暖如春柏副,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蚣录。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工割择, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人萎河。 一個(gè)月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓荔泳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親虐杯。 傳聞我的和親對象是個(gè)殘疾皇子玛歌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

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