大型網(wǎng)站架構(gòu)設(shè)計

網(wǎng)站架構(gòu)的演化

1那婉,原始時代,一臺服務(wù)器解決所有党瓮,經(jīng)典的LAMP详炬,廉價服務(wù)器+開源軟件,網(wǎng)站就建起來了寞奸。

→ 等到訪問量越來越大呛谜,數(shù)據(jù)存儲空間吃緊了,所以枪萄。隐岛。。

2瓷翻,使用三臺服務(wù)器聚凹,應(yīng)用割坠,文件,數(shù)據(jù)庫分開妒牙。應(yīng)用服務(wù)器加CPU彼哼,文件服務(wù)器加大容量硬盤,數(shù)據(jù)庫服務(wù)器用更貴更快的硬盤湘今。

→ 80%的訪問集中在20%的數(shù)據(jù)上敢朱,成為瓶頸

3,應(yīng)用服務(wù)器加本地緩存象浑。

→ 本地緩存和應(yīng)用爭內(nèi)存

4蔫饰,加遠(yuǎn)程獨(dú)立服務(wù)器放緩存,再不行上分布式緩存服務(wù)器愉豺,要多大有多大。

→單臺應(yīng)用服務(wù)器應(yīng)對請求數(shù)量有限茫因,限制了并發(fā)能力

5蚪拦,使用應(yīng)用服務(wù)器集群,可伸縮性大大增強(qiáng)冻押,再多用戶都不怕驰贷。

→用戶操作頻繁,高頻率的寫操作讓數(shù)據(jù)庫不堪重負(fù)

6洛巢,數(shù)據(jù)庫讀寫分離括袒,配置主從數(shù)據(jù)庫,讀從從庫讀稿茉,寫就寫到主庫锹锰,利用主從復(fù)制讓數(shù)據(jù)一致

→網(wǎng)站內(nèi)容越來越豐富,響應(yīng)時間變長

7漓库,上CDN服務(wù)恃慧,靜態(tài)數(shù)據(jù)或者不頻繁更新的數(shù)據(jù)都到CDN。再利用反向代理渺蒿,選擇距離用戶最近響應(yīng)最快的應(yīng)用服務(wù)器痢士,大大加快響應(yīng)時間。

→寫數(shù)據(jù)操作量級上來了茂装,數(shù)據(jù)服務(wù)器真的又撐不住了

8.1有錢怠蹂,上分布式文件系統(tǒng)和分布式數(shù)據(jù)庫系統(tǒng),還慢就繼續(xù)加機(jī)器少态,總有快的時候城侧。省心省力

8.2沒錢,花點心思况增,根據(jù)業(yè)務(wù)對數(shù)據(jù)庫進(jìn)行拆分赞庶,將不同細(xì)分業(yè)務(wù)數(shù)據(jù)放到不同的數(shù)據(jù)服務(wù)器上,重點數(shù)據(jù)用更好的服務(wù)器。

→數(shù)據(jù)量大歧强,檢索和生成報表巨慢

9澜薄,使用NoSQL放需要檢索的數(shù)據(jù),減輕原來數(shù)據(jù)庫服務(wù)器壓力

→業(yè)務(wù)復(fù)雜摊册,技術(shù)開發(fā)難度提高

10肤京,業(yè)務(wù)拆分,根據(jù)不同的產(chǎn)品線拆分技術(shù)開發(fā)茅特,看起來是一個網(wǎng)站忘分,其實是不同的應(yīng)用來共同提供數(shù)據(jù)的

→業(yè)務(wù)拆分粒度越來越小,服務(wù)部署維護(hù)困難

11白修,分布式服務(wù)妒峦,統(tǒng)一運(yùn)維

架構(gòu)模式

模式,描述了一個不斷重復(fù)發(fā)生的問題和該問題解決方案的核心兵睛。這樣肯骇,你就能一次次的使用該方案而不必做重復(fù)工作。

網(wǎng)站架構(gòu)要解決的問題祖很,就這幾種:

  • 高性能笛丙。就是要快!

  • 高可用假颇。7*24在線可用胚鸯,掛了就不好了。

  • 易伸縮笨鸡。能隨訪問量姜钳,數(shù)據(jù)處理量的大小。進(jìn)行擴(kuò)容降容镜豹,不再門庭若市時候奔潰傲须,不在人去樓空時浪費(fèi)錢。

  • 可擴(kuò)展趟脂。師傅師傅大師兄又加需求了泰讽!好的架構(gòu),要隨業(yè)務(wù)的發(fā)展昔期,無痛加功能加服務(wù)已卸。

  • 安全。不安全硼一,以上都是白搭累澡。
    以上這些問題重復(fù)的出現(xiàn),也就形成了解決的模式般贼。

常見的模式:

1.分層愧哟。橫向切割奥吩。應(yīng)用層靠近用戶,負(fù)責(zé)具體業(yè)務(wù)和頁面展示蕊梧,也就是常說的后臺和前端那部分霞赫,現(xiàn)在都是前后端分離了,也是分層的一種方法肥矢。服務(wù)器提供具體服務(wù)支持端衰,比如訂單結(jié)算,購物車服務(wù)等甘改,我現(xiàn)在工作大概就是在這一層旅东,所以不要再問我后臺后端差別了啊啊啊。數(shù)據(jù)層十艾,最后面抵代,提供數(shù)據(jù)存儲的。

2.分割疟羹≈魇兀縱向切割。將不同業(yè)務(wù)進(jìn)行分割榄融,例如淘寶,購物車救湖,搜索愧杯,廣告分割成不同的應(yīng)用,由獨(dú)立團(tuán)隊進(jìn)行負(fù)責(zé)鞋既。

3.分布式力九。不同應(yīng)用放不同物理機(jī)子,分布式部署可以對不同的應(yīng)用服務(wù)做到資源的有效分配邑闺。

4.集群跌前。多臺服務(wù)器部署相同的應(yīng)用,通過負(fù)載均衡對外提供服務(wù)陡舅,集群再提高更好的并發(fā)特性的同時抵乓,也能提供系統(tǒng)的可用性,一臺掛了還有一臺嘛靶衍。

5.緩存灾炭。CDN,redis等等颅眶。緩存主要是兩個難點蜈出,怎樣提供緩存命中率和設(shè)置過期時間避免臟讀。

6.異步涛酗。這一塊是重點铡原,異步架構(gòu)是典型的生產(chǎn)者消費(fèi)者模式偷厦,應(yīng)用使用隊列進(jìn)行消息傳遞而不直接互相調(diào)用。好處有二燕刻,可用性提高只泼,如果后面的應(yīng)用掛了,前面的應(yīng)用還能繼續(xù)接收用戶請求酌儒,數(shù)據(jù)堆入隊列辜妓,等掛了的應(yīng)用重啟繼續(xù)消費(fèi)隊列就可以了。消除訪問波峰忌怎,突然的一波訪問籍滴,如果沒有異步處理,后端壓力會驟增榴啸,很可能就崩了孽惰,異步處理能將消息放進(jìn)消息隊列,后端依次處理鸥印,就不會有太大問題勋功。

7.冗余。服務(wù)器隨時會掛库说,多備一臺服務(wù)器狂鞋,數(shù)據(jù)多做一份備份,總是好事潜的。雖然有點費(fèi)錢芳来。

8.自動化甲脏。發(fā)布過程自動化亥至,人為操作很容易出錯苔埋,當(dāng)然,需要自動發(fā)布系統(tǒng)足夠好用亡呵。

9.安全抽活。加密,驗證碼锰什,風(fēng)險控制下硕。

異步的問題

和人不同的是,網(wǎng)站系統(tǒng)歇由,任何可以晚點再做的事情都應(yīng)該晚點再做卵牍。

一般就是使用消息隊列將調(diào)用異步化,一個應(yīng)用接一個應(yīng)用的處理數(shù)據(jù)沦泌,上游處理完了丟到下游糊昙,上游無需下游立即甚至壓根不用下游進(jìn)行反饋。

消息隊列的應(yīng)用谢谦,使系統(tǒng)的靈活性大大提高释牺,起到很好的削峰作用萝衩。前面的應(yīng)用將短時間內(nèi)大量的請求存入消息隊列,推遲處理時間没咙,使到后面吃大量內(nèi)存CPU的應(yīng)用不至于被壓垮猩谊。固定的消費(fèi)速率也使數(shù)據(jù)庫服務(wù)器的并發(fā)數(shù)得到控制。

但是祭刚,異步也會帶來很多麻煩的事情牌捷。

由于數(shù)據(jù)操作被異步化了,所以很難確定數(shù)據(jù)究竟處理完了沒有涡驮,也很難保障數(shù)據(jù)的一致性暗甥,前端應(yīng)用認(rèn)為處理完了,后端其實還沒好捉捅,就會出現(xiàn)很多問題撤防,導(dǎo)致數(shù)據(jù)不一致,處理結(jié)果出現(xiàn)異常棒口。這經(jīng)常需要額外的同步操作來進(jìn)行核實數(shù)據(jù)寄月,帶來額外的開銷。

另一個問題是无牵,異步會導(dǎo)致數(shù)據(jù)的更新不及時漾肮,當(dāng)然,這是異步的目的茎毁,同樣也是缺點初橘,看不同的場合。比如每日賣家報表充岛,推遲個幾分鐘再統(tǒng)計出來沒有任何問題,但是像秒殺系統(tǒng)耕蝉,推廣限額系統(tǒng)崔梗,就不能容忍數(shù)據(jù)統(tǒng)計延遲。在應(yīng)用了異步處理的架構(gòu)里垒在,這些需求也就都需要額外處理蒜魄,提供系統(tǒng)的復(fù)雜性。

不是任何網(wǎng)站都需要異步化的场躯,也不是異步架構(gòu)里每個環(huán)節(jié)都需要異步化的谈为。技術(shù)用到正確的地方才是好的技術(shù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末踢关,一起剝皮案震驚了整個濱河市伞鲫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌签舞,老刑警劉巖秕脓,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柒瓣,死亡現(xiàn)場離奇詭異,居然都是意外死亡吠架,警方通過查閱死者的電腦和手機(jī)芙贫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來傍药,“玉大人磺平,你說我怎么就攤上這事」樟桑” “怎么了拣挪?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長薛训。 經(jīng)常有香客問我媒吗,道長,這世上最難降的妖魔是什么乙埃? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任闸英,我火速辦了婚禮,結(jié)果婚禮上介袜,老公的妹妹穿的比我還像新娘甫何。我一直安慰自己,他們只是感情好遇伞,可當(dāng)我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布辙喂。 她就那樣靜靜地躺著,像睡著了一般鸠珠。 火紅的嫁衣襯著肌膚如雪巍耗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天渐排,我揣著相機(jī)與錄音炬太,去河邊找鬼。 笑死驯耻,一個胖子當(dāng)著我的面吹牛亲族,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播可缚,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼霎迫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了帘靡?” 一聲冷哼從身側(cè)響起知给,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎测柠,沒想到半個月后炼鞠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缘滥,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年谒主,在試婚紗的時候發(fā)現(xiàn)自己被綠了朝扼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡霎肯,死狀恐怖擎颖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情观游,我是刑警寧澤搂捧,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站懂缕,受9級特大地震影響允跑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜搪柑,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一聋丝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧工碾,春花似錦弱睦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至旬迹,卻和暖如春火惊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背奔垦。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工矗晃, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宴倍。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像仓技,于是被迫代替她去往敵國和親鸵贬。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,627評論 2 350

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

  • 正確的業(yè)務(wù)架構(gòu)遠(yuǎn)比正確的技術(shù)架構(gòu)重要---- 斯沃.資基索德 經(jīng)驗尚淺脖捻,不敢妄議大神寫的《大型網(wǎng)站技術(shù)架構(gòu)》阔逼,所以...
    謝培陽閱讀 1,195評論 2 21
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)地沮,斷路器嗜浮,智...
    卡卡羅2017閱讀 134,637評論 18 139
  • 1.蔡貴強(qiáng):《房產(chǎn)經(jīng)紀(jì)人》 http://www.reibang.com/p/9c52fe629027?utm_c...
    22QQQQ閱讀 262評論 2 3
  • 首先理解幾個概念1.程序:就是我們?nèi)粘K鶎懙拇a羡亩。2.進(jìn)程:程序在計算機(jī)中運(yùn)行的實體。程序被加載到計算機(jī)內(nèi)存中運(yùn)行...
    RegulusFun閱讀 9,170評論 0 0