电竞比分网-中国电竞赛事及体育赛事平台

分享

1千用戶與1千萬(wàn)用戶的網(wǎng)站系統(tǒng)架構(gòu)區(qū)別?

 liang1234_ 2019-01-31

軟件外包需求洽談的過(guò)程中,往往需要根據(jù)客戶期望的網(wǎng)站并發(fā)量來(lái)評(píng)估工作量,客戶往往都想要更多的并發(fā)量,更多并發(fā)量也意味著更多的工作量,本文就一步一步告訴大家,1千并發(fā)與1千萬(wàn)并發(fā)的網(wǎng)站系統(tǒng)架構(gòu)有什么區(qū)別?

既然說(shuō)的是大型網(wǎng)站架構(gòu),那么架構(gòu)的背后自然是解決人因面對(duì)大型網(wǎng)站特性而帶來(lái)的問(wèn)題。這樣可以先給大家說(shuō)下大型網(wǎng)站的特性,這些特性帶來(lái)的問(wèn)題就是人要解決的問(wèn)題

  1. 高并發(fā)、大流量:PV 量巨大;

  2. 高可用:7*24 小時(shí)不間斷服務(wù);

  3. 海量數(shù)據(jù):文件數(shù)目分分鐘 xxTB;

  4. 用戶分布廣泛,網(wǎng)絡(luò)情況復(fù)雜:網(wǎng)絡(luò)運(yùn)營(yíng)商;

  5. 安全環(huán)境惡劣:黑客的攻擊;

  6. 需求快速變更,發(fā)布頻繁:快速適應(yīng)市場(chǎng),滿足用戶需求;

  7. 漸進(jìn)式發(fā)展:慢慢地運(yùn)營(yíng)出大型網(wǎng)站;

大型網(wǎng)站目標(biāo)

既然說(shuō)到了大型網(wǎng)站的特性,那么解決這些特性帶來(lái)的問(wèn)題要達(dá)到什么目標(biāo)呢?如下:

一步步帶你,如何網(wǎng)站架構(gòu)

大型網(wǎng)站架構(gòu)目標(biāo)

每個(gè)目標(biāo)背后面臨著技術(shù)、設(shè)計(jì)、維護(hù)等諸多方面的挑戰(zhàn); 而目標(biāo)本身的期望值也會(huì)根據(jù)實(shí)際情況進(jìn)行調(diào)整,這也意味著網(wǎng)站架構(gòu)建設(shè)是個(gè)不斷調(diào)整的過(guò)程。

有了問(wèn)題,也定了偉大的目標(biāo),那么網(wǎng)站在不同階段面對(duì)不同的問(wèn)題,是如何解決的?又是如何一步步成長(zhǎng)為大型網(wǎng)站架構(gòu),實(shí)現(xiàn)這些偉大的目標(biāo)呢?

如何網(wǎng)站架構(gòu)

首先,什么是大型網(wǎng)站架構(gòu)呢?

其實(shí)大型網(wǎng)站架構(gòu)的概念對(duì)于每一個(gè)開(kāi)發(fā)者來(lái)說(shuō)很籠統(tǒng)、很模糊,正如盲人摸象,看到的、了解到的只是很小的一部分,大部分情況下我們只是負(fù)責(zé)架構(gòu)中的一小塊內(nèi)容,所以很難清晰地給出具體定義。這就是所謂“不識(shí)廬山真面目 只緣身在此山中”的尷尬吧。所以我們要跳出來(lái),站在宏觀的角度,從整體到細(xì)節(jié)實(shí)現(xiàn)來(lái)認(rèn)識(shí)大型網(wǎng)站架構(gòu)。

那么從宏觀的角度怎么去認(rèn)識(shí)大型網(wǎng)站架構(gòu)呢?正如前面幾篇《細(xì)品架構(gòu)系列》所描述對(duì)架構(gòu)的認(rèn)識(shí),按照問(wèn)題識(shí)別—>概念認(rèn)知—>架構(gòu)切分的思路,來(lái)分析大型網(wǎng)站架構(gòu)的誕生:

  1. 問(wèn)題識(shí)別:當(dāng)前什么問(wèn)題、誰(shuí)的問(wèn)題、問(wèn)題邊界;

  2. 概念認(rèn)知:通過(guò)分析問(wèn)題,會(huì)產(chǎn)生哪些概念,統(tǒng)一概念認(rèn)知,達(dá)成溝通交流規(guī)范;

  3. 架構(gòu)切分:根據(jù)概念來(lái)解決問(wèn)題,如何架構(gòu)切分,產(chǎn)生哪些架構(gòu),提出具體解決方案;

PS:上面的三個(gè)步驟具體如何識(shí)別、認(rèn)知、切分,請(qǐng)?jiān)敿?xì)參考前面幾篇《細(xì)品架構(gòu)系列》文章,可能使你會(huì)對(duì)架構(gòu)有重新的認(rèn)識(shí)。

在進(jìn)行分析大型網(wǎng)站架構(gòu)的演進(jìn)之路前,首先我們要明確的兩個(gè)價(jià)值觀:

  1. 核心價(jià)值:隨網(wǎng)站所需靈活應(yīng)對(duì);大型網(wǎng)站不是從無(wú)到有一步就搭建好一個(gè)大型網(wǎng)站,而是能夠伴隨小型網(wǎng)站業(yè)務(wù)的漸進(jìn)發(fā)展,慢慢地演化成一個(gè)大型網(wǎng)站;

  2. 驅(qū)動(dòng)力量:網(wǎng)站的業(yè)務(wù)發(fā)展—業(yè)務(wù)成就了技術(shù),事業(yè)成就了人,而不是相反;

還有,大型網(wǎng)站架構(gòu)演進(jìn)必須避免的幾個(gè)誤區(qū):

  1. 一味追隨大公司的解決方案;

  2. 為了技術(shù)而技術(shù)–>常見(jiàn)問(wèn)題;

  3. 企圖用技術(shù)解決所有問(wèn)題:技術(shù)是用來(lái)解決業(yè)務(wù)問(wèn)題的,而業(yè)務(wù)的問(wèn)題,也可以通過(guò)業(yè)務(wù)的手段去解決;

架構(gòu)體系演進(jìn)

單機(jī)時(shí)代

草根時(shí)期,快速開(kāi)發(fā)網(wǎng)站并上線。當(dāng)然,通常只是先試水,用戶規(guī)模也沒(méi)有形成,經(jīng)濟(jì)能力和投入也非常有限。應(yīng)用程序、數(shù)據(jù)庫(kù)、文件等所有資源都集中在一臺(tái) Server上,典型案例:基于 LAMP 架構(gòu)的 PHP 網(wǎng)站;

一步步帶你,如何網(wǎng)站架構(gòu)

單機(jī)時(shí)代(純依賴(lài)RDBMS)

優(yōu)點(diǎn):簡(jiǎn)單、快速迭代達(dá)成業(yè)務(wù)目標(biāo);

缺點(diǎn):存在單點(diǎn)、談不上高可用;

技術(shù)點(diǎn):應(yīng)用設(shè)計(jì)要保證可擴(kuò)展;

緩存出場(chǎng)

有一定的業(yè)務(wù)量和用戶規(guī)模了,想提升網(wǎng)站速度,于是,緩存出場(chǎng)了。

一步步帶你,如何網(wǎng)站架構(gòu)

單機(jī)時(shí)代+緩存出場(chǎng)

優(yōu)點(diǎn):簡(jiǎn)單有效、方便維護(hù);

缺點(diǎn):存在單點(diǎn)、談不上高可用;

技術(shù)點(diǎn):客戶端(瀏覽器)緩存、前端頁(yè)面緩存、頁(yè)面片段緩存、本地?cái)?shù)據(jù)緩存/數(shù)據(jù)庫(kù)緩存、遠(yuǎn)程緩存;

如上圖,緩存可以分為:

  1. 頁(yè)面緩存:客戶端緩存,減少對(duì)網(wǎng)站的訪問(wèn);

  2. 本地緩存:訪問(wèn)速度快,但數(shù)據(jù)量有限,減少對(duì)DB查詢;

  3. 遠(yuǎn)程緩存:遠(yuǎn)程訪問(wèn),可以集群,因此容量不受限制;

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

市場(chǎng)反響還不錯(cuò),用戶量每天在增長(zhǎng),數(shù)據(jù)庫(kù)瘋狂讀寫(xiě),逐漸發(fā)現(xiàn)一臺(tái)服務(wù)器快撐不住了。于是,決定把數(shù)據(jù)服務(wù)和APP做分離。

一步步帶你,如何網(wǎng)站架構(gòu)

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

優(yōu)點(diǎn):簡(jiǎn)單有效、方便維護(hù)、提高不同Server對(duì)硬件資源的利用率;

缺點(diǎn):存在單點(diǎn)、談不上高可用;

技術(shù)點(diǎn):文件服務(wù)器部署、數(shù)據(jù)庫(kù)服務(wù)器,擴(kuò)展數(shù)據(jù)訪問(wèn)模塊;

分離后三臺(tái) Server 對(duì)硬件資源的需求各不相同:

  1. 應(yīng)用服務(wù)器:需要更快更強(qiáng)大的 CPU;

  2. 數(shù)據(jù)庫(kù)服務(wù)器:需要更快的硬盤(pán)和更大的內(nèi)存;

  3. 文件服務(wù)器:需要更大的硬盤(pán);

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

單臺(tái)數(shù)據(jù)庫(kù)也感覺(jué)快撐不住了,一般都會(huì)嘗試做“讀寫(xiě)分離”。由于大部分互聯(lián)網(wǎng)“讀多寫(xiě)少”的特性所決定的。Salve的臺(tái)數(shù),取決于按業(yè)務(wù)評(píng)估的讀寫(xiě)比例。

一步步帶你,如何網(wǎng)站架構(gòu)

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

優(yōu)點(diǎn):簡(jiǎn)單有效、降低數(shù)據(jù)庫(kù)單臺(tái)壓力;

缺點(diǎn):讀寫(xiě)分離,增加程序難度,架構(gòu)變復(fù)雜,維護(hù)難度增加;

技術(shù)點(diǎn):數(shù)據(jù)庫(kù)主從同步部署,擴(kuò)展數(shù)據(jù)訪問(wèn)模塊,實(shí)現(xiàn)讀寫(xiě)分離;

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

數(shù)據(jù)庫(kù)層面是緩解了,但是應(yīng)用程序?qū)用嬉渤霈F(xiàn)了瓶頸,由于訪問(wèn)量增大,加上早期程序員水平有限寫(xiě)的代碼也很爛,人員流動(dòng)性也大,很難去維護(hù)和優(yōu)化。所以,很常用的辦法還是“堆機(jī)器”。

一步步帶你,如何網(wǎng)站架構(gòu)

應(yīng)用出現(xiàn)瓶頸 負(fù)載均衡集群

優(yōu)點(diǎn):增加服務(wù)器和HA機(jī)制,系統(tǒng)性能及可用性得到保證;

缺點(diǎn):應(yīng)用之間緩存、Session一致性問(wèn)題;

技術(shù)點(diǎn):負(fù)載均衡;

通過(guò)集群解決高并發(fā)、海量數(shù)據(jù)問(wèn)題的常用手段,實(shí)現(xiàn)系統(tǒng)的可伸縮性。通過(guò)負(fù)載均衡調(diào)度器,可將用戶訪問(wèn)分發(fā)到集群中的某臺(tái) Server 上,應(yīng)用服務(wù)器的負(fù)載壓力不再成為整個(gè)網(wǎng)站的瓶頸。

集中式緩存、Session集中存儲(chǔ)

加機(jī)器誰(shuí)都會(huì)加,關(guān)鍵是加完之后得有效果,加完之后可能會(huì)引發(fā)一些問(wèn)題。例如非常常見(jiàn)的:集群應(yīng)用之間頁(yè)面輸出緩存和本地緩存一致性的問(wèn)題,Session保存的問(wèn)題……。

一步步帶你,如何網(wǎng)站架構(gòu)

集中式緩存 Session集中存儲(chǔ)

優(yōu)點(diǎn):應(yīng)用之間緩存、Session一致,存儲(chǔ)無(wú)限制,可以擴(kuò)展;

缺點(diǎn):不如本地緩存訪問(wèn)快,緩存服務(wù)器、Session服務(wù)器等仍存在單點(diǎn)問(wèn)題;

技術(shù)點(diǎn):緩存服務(wù)器部署、Session集中存儲(chǔ)方案;

動(dòng)靜分離

動(dòng)靜分離也是提高網(wǎng)站響應(yīng)速度的一種常用方式。將動(dòng)態(tài)請(qǐng)求與靜態(tài)請(qǐng)求分離開(kāi),盡量減少對(duì)應(yīng)用服務(wù)器的壓力。同時(shí),可以再進(jìn)一步對(duì)靜態(tài)請(qǐng)求,進(jìn)行緩存,以加快響應(yīng)速度。可以需要開(kāi)發(fā)人員配合(把靜態(tài)資源放獨(dú)立站點(diǎn)下),也可以不需要開(kāi)發(fā)人員配合(利用7層反向代理來(lái)處理,根據(jù)后綴名等信息來(lái)判斷資源類(lèi)型)。

一步步帶你,如何網(wǎng)站架構(gòu)

使用動(dòng)靜分離

優(yōu)點(diǎn):減輕應(yīng)用負(fù)載壓力,針對(duì)靜態(tài)文件緩存;

缺點(diǎn):靜態(tài)文件緩存更新失效問(wèn)題;

技術(shù)點(diǎn):動(dòng)靜分離、靜態(tài)文件緩存方案;

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

使用反向代理和CDN加速網(wǎng)站響應(yīng):CDN 和反向代理的基本原理都是緩存,區(qū)別在于:

  1. CDN部署在網(wǎng)絡(luò)提供商的機(jī)房;

  2. 反向代理則部署在網(wǎng)站的中心機(jī)房;

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

一步步帶你,如何網(wǎng)站架構(gòu)

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

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多