小白看大型網(wǎng)站架構(gòu)設(shè)計(jì)方案
時(shí)間:2023-09-30 07:24:01 | 來源:網(wǎng)站運(yùn)營
時(shí)間:2023-09-30 07:24:01 來源:網(wǎng)站運(yùn)營
小白看大型網(wǎng)站架構(gòu)設(shè)計(jì)方案:
大型網(wǎng)站的架構(gòu)設(shè)計(jì)一般與小型的網(wǎng)站差別很大,考慮的技術(shù)點(diǎn)也是不一樣的
01 前言
最近對(duì)大型網(wǎng)站的架構(gòu)比較感興趣,就看了一本關(guān)于架構(gòu)的書籍,順便記錄一下自己的所思所想。
我們知道想淘寶、微博、12306等的軟件設(shè)計(jì),必然與我們平時(shí)使用的軟件設(shè)計(jì)不同,原因是前者涉及到大量的數(shù)據(jù)存儲(chǔ),大量的用戶訪問,還有就是高并發(fā)量(瞬間訪問量)。假如有其中的一個(gè)環(huán)節(jié)沒有做好的話肯定是影響整體的性能,因此就會(huì)出現(xiàn)短板效應(yīng)。
我們看到的例如準(zhǔn)點(diǎn)搶票、雙十一搶購、微博熱搜等都可能會(huì)導(dǎo)致服務(wù)器宕機(jī),網(wǎng)絡(luò)癱瘓等結(jié)果,一方面可能是網(wǎng)絡(luò)擁擠,但是更重要的是網(wǎng)站的架構(gòu)設(shè)計(jì),是否能夠滿足高并發(fā)、高可用(7*24小時(shí))的狀態(tài)。下面就看一下大型網(wǎng)站的架構(gòu)設(shè)計(jì)是怎么一步步實(shí)現(xiàn)的。
02 網(wǎng)站特點(diǎn)
我們從表面上看到的特點(diǎn)就是這兩個(gè),網(wǎng)站訪問量大,網(wǎng)站并發(fā)量高。除此之外,我們就不會(huì)關(guān)心其他的事情了,這是用戶能想到的,也是用戶最想解決的兩個(gè)迫切的問題。但是在開發(fā)的技術(shù)人員看來,卻要考慮很多的因素,總的來說有以下幾點(diǎn):
網(wǎng)站要承受一瞬間訪問的量是多少,比如雙十一的搶購并發(fā)量可以達(dá)到億的級(jí)別,這么高的并發(fā)是普通網(wǎng)站根本承受不了的壓力,不僅僅是服務(wù)器多少的問題,還要考慮服務(wù)器之間的設(shè)計(jì)方案等因素。
一開始我也不懂什么是高可用,簡單來說就是7*24小時(shí)保持服務(wù)正常。因?yàn)槟悴荒鼙WC用戶在大半夜會(huì)不會(huì)瀏覽你的網(wǎng)站,所以我們要保證服務(wù)是一直正常的。通常來說,一些小型的網(wǎng)站或者系統(tǒng)會(huì)在晚上0點(diǎn)就進(jìn)行更新操作,限制人員的訪問。
涉及到大型網(wǎng)站,一般用戶都是海量的,需要考慮如何存儲(chǔ)用戶數(shù)據(jù)、用戶瀏覽信息等。比如我們每天用的微信,每天發(fā)布的朋友圈以及聊天的信息都是海量的,存儲(chǔ)在騰訊專門的服務(wù)器集群(很多服務(wù)器)。
不可否認(rèn)我們每天都會(huì)涉及一些銀行交易,微信轉(zhuǎn)賬或者支付寶轉(zhuǎn)賬等操作,其實(shí)你想一下你的現(xiàn)金變化只是一個(gè)數(shù)字的改變而已,想想都覺得令人擔(dān)憂。比如你的支付寶余額僅僅是一個(gè)數(shù)字躺在那里,錢已經(jīng)被支付寶用于其他途徑了,但是你提現(xiàn)等操作又會(huì)調(diào)度回來。這其中的種種過程都要保證安全才可以。
因?yàn)楹笈_(tái)會(huì)收集用戶的一些信息用來改善產(chǎn)品功能和產(chǎn)品的體驗(yàn),或是用戶希望增加某一種功能。這時(shí)候就會(huì)有用戶需求,需要更新產(chǎn)品功能。每一款軟件的發(fā)展都是滿足一種功能,然后不斷更新迭代發(fā)展的。
無論多大的網(wǎng)站都是從很小的開始,無論多大的高樓都是一磚一瓦構(gòu)成。漸進(jìn)式發(fā)展與傳統(tǒng)的軟件開發(fā)與設(shè)計(jì)不一樣,沒有軟件完整的期望與功能整體的預(yù)見性,都是在不斷發(fā)展中完善自我。通過對(duì)產(chǎn)品的不斷運(yùn)行,適應(yīng)用戶需求,適應(yīng)時(shí)代的潮流。
03 設(shè)計(jì)演化
不知道大家是否聽過“LAMP”這個(gè)詞語,這就是早期的網(wǎng)站設(shè)計(jì)方案,只適用于小型的網(wǎng)站,如今是肯定不行的。由于開始的數(shù)據(jù)量不大,一臺(tái)服務(wù)器足以支撐真?zhèn)€網(wǎng)站的運(yùn)行,操作系統(tǒng)使用Linux,服務(wù)器用Apache,數(shù)據(jù)庫使用mysql還有語言使用PHP開發(fā)。
網(wǎng)站經(jīng)過業(yè)務(wù)的發(fā)展,不斷改進(jìn)、不斷演化,形成了一個(gè)有章可循的技術(shù)方案。經(jīng)歷的每一個(gè)階段都是由業(yè)務(wù)的驅(qū)動(dòng),假如你的網(wǎng)站沒有這種需求,程序員是不是搞這些大的設(shè)計(jì)方案的。正如書中所說的,是業(yè)務(wù)成就了技術(shù),是事業(yè)成就了人。
初始發(fā)展階段
業(yè)務(wù)需求量不高,使用簡單的配置,免費(fèi)開源的軟件就可以搭起一套系統(tǒng)。
應(yīng)用數(shù)據(jù)與服務(wù)數(shù)據(jù)分離
隨著業(yè)務(wù)的發(fā)展,網(wǎng)站的性能必然下降,所以這時(shí)候就可以把服務(wù)進(jìn)行分離。
使用緩存
參考二八法則,我們知道80%的用戶訪問網(wǎng)站20%的功能,所以我們只需要把用戶最需要的功能做好,那么我們就可以用到緩存的技術(shù),能夠及時(shí)快速地把用戶需要的資源返回給用戶。
應(yīng)用服務(wù)器集群
隨著你的業(yè)務(wù)量的增加,以及功能的不斷增加,一臺(tái)服務(wù)器的處理可能會(huì)頂不住,那這樣的話我們就放多臺(tái)服務(wù)器同時(shí)處理這個(gè)業(yè)務(wù)。就比如把用戶的請(qǐng)求交給多個(gè)人去做一樣,性能肯定會(huì)提升。
數(shù)據(jù)庫讀寫分離
不僅是應(yīng)用層面,數(shù)據(jù)的操作也是同樣重要的,我們知道數(shù)據(jù)不是讀就是寫,一般來說用戶讀操作比較多。所以我們就把數(shù)據(jù)庫讀寫分離,一臺(tái)數(shù)據(jù)庫提供數(shù)據(jù),另一臺(tái)寫入用戶的數(shù)據(jù),然后中間進(jìn)行數(shù)據(jù)同步(主從備份)。
負(fù)載均衡與CDN
對(duì)于業(yè)務(wù)量比較大的網(wǎng)站,如遍布全國乃至全球的,就需要使用CDN了。因?yàn)槟戏降挠脩粼L問北方的服務(wù)器,中間也會(huì)有延遲;或者美國的用戶訪問中國,那么延遲就更大了。CDN的就是內(nèi)容分發(fā)網(wǎng)絡(luò),離用戶最近的服務(wù)器就會(huì)直接返回?cái)?shù)據(jù),這樣就快很多了。
還有就是負(fù)載均衡,加入CDN的數(shù)據(jù)過期,用戶需要訪問數(shù)據(jù)中心的時(shí)候就會(huì)先到負(fù)載均衡服務(wù)器,這里也有緩存,如果沒有命中就統(tǒng)一把你的請(qǐng)求分發(fā)給壓力比較小的應(yīng)用服務(wù)器。總的來說,CDN與負(fù)載均衡服務(wù)器的原理就是利用了緩存技術(shù)。
分布式文件系統(tǒng)與分布式數(shù)據(jù)庫系統(tǒng)
分布式其實(shí)就是對(duì)原來的數(shù)據(jù)存儲(chǔ)再進(jìn)行拆分,把不同業(yè)務(wù)的數(shù)據(jù)存儲(chǔ)到不同的服務(wù)器當(dāng)中,減少其余服務(wù)器的壓力。舉個(gè)例子,可以把用戶的訂單數(shù)據(jù)存儲(chǔ)到A數(shù)據(jù)庫服務(wù)器,用戶的信息放到B數(shù)據(jù)庫服務(wù)器。
NoSQL和搜索引擎
搜索引擎是為了應(yīng)對(duì)網(wǎng)站的搜索功能。
業(yè)務(wù)拆分
把一個(gè)網(wǎng)站拆分成多個(gè)不同的應(yīng)用,每個(gè)應(yīng)用獨(dú)立部署和維護(hù)。比如可以把某個(gè)功能獨(dú)立出去,提供接口嵌入網(wǎng)站里面,本身的邏輯處理是在別的服務(wù)器。
分布式服務(wù)
把公共的業(yè)務(wù)提取出來,然后獨(dú)立部署,通過分布式服務(wù)調(diào)用共用服務(wù)完成具體業(yè)務(wù)操作。
04 小結(jié)
我們可以看一下當(dāng)前的互聯(lián)網(wǎng)公司,能稱得上BAT級(jí)別的也就是這么幾個(gè),畢竟大部分都是小公司,正在逐步發(fā)展屬于自己的業(yè)務(wù)。他不可能每一個(gè)領(lǐng)域都有時(shí)間和精力去研究、去開發(fā)。但是一般的公司都會(huì)有自己的專業(yè)點(diǎn),你只要把自己的業(yè)務(wù)發(fā)展好,服務(wù)好我們的用戶足矣,有時(shí)候搞很多花里胡哨的東西反而沒有益處。
小型網(wǎng)站最需要做的就是為用戶提供好的服務(wù)來創(chuàng)造價(jià)值,得到用戶的認(rèn)可,活下去,野蠻生長?!钪腔邸洞笮途W(wǎng)站技術(shù)架構(gòu)》
有的公司因?yàn)榭吹阶罱鲁隽撕芏嗉夹g(shù),所以也想把自己的架構(gòu)改造一下,這就是為了技術(shù)而技術(shù)。有時(shí)候自己的出發(fā)點(diǎn)是好的,但是也有可能帶來壞的結(jié)果,沒有順應(yīng)自己的業(yè)務(wù)發(fā)展趨勢(shì)。還有也不要盲目模仿大公司的技術(shù)方案,要發(fā)展自己的獨(dú)立業(yè)務(wù),發(fā)展自己的獨(dú)立技術(shù)。
總的來說,現(xiàn)在每個(gè)公司都有自己的一套技術(shù)方案,是否重構(gòu)你的技術(shù)方案或者是否改變你的服務(wù)器分布等都取決于你是否有這個(gè)需要。不過現(xiàn)在互聯(lián)網(wǎng)技術(shù)發(fā)展越發(fā)成熟,有一些資源你都可以付費(fèi)購買,像阿里云、騰訊云等都可以使用,而且技術(shù)穩(wěn)定,質(zhì)量過關(guān)。畢竟是大公司。你要多優(yōu)質(zhì)的資源,取決于的錢給多少,非常簡單,沒有后顧之憂(已經(jīng)幫你決解好了)。
最后也向大家推薦一下這本書《大型網(wǎng)站技術(shù)架構(gòu):核心原理與案例分析》,本書作者的技術(shù)非常好,分析獨(dú)到,值得深入閱讀。
參考文章
- 李智慧 《大型網(wǎng)站技術(shù)架構(gòu):核心原理與案例分析》
關(guān)鍵詞:設(shè)計(jì),方案,大型