zz?https://www.cnblogs.com/yiwd/p/3711677.html
評價一個網(wǎng)站的“大小”,處于視角的不同,有很多種衡量的方法,類似文章數(shù),頁面數(shù)之類的數(shù)據(jù)非常明顯,也沒有什么可以爭議的。但對于并發(fā)來說,爭議非常之多,這里就從一個技術(shù)的角度開始,談?wù)剮讉€Web網(wǎng)站的數(shù)量級。
相信很多人談?wù)撘粋€網(wǎng)站的熱度,總免不了會詢問日均PV,同時在線人數(shù)、注冊用戶數(shù)等運營數(shù)據(jù),說實話從技術(shù)角度來說,這幾個數(shù)值沒有一個可以放在一起比較的——一個靜態(tài)網(wǎng)站的PV跟一個SNS類/Web Game網(wǎng)站的PV根本就不是一回事。由于互聯(lián)網(wǎng)有一個傳說中的“3秒定律”,可能當下更多的網(wǎng)站技術(shù)指標要求1.5秒以內(nèi)加載整頁,或者至少可以達到閱讀的標準。如果要較真什么“同時在線”,毫不客氣的說,對于HTTP這類短鏈接的網(wǎng)絡(luò)協(xié)議來說,在WebSocket還不普及的時代,能統(tǒng)計在線純屬扯淡,唯一能做的只是取個時間段,計算下訪問用戶而已。這些依然可以換算成QPS(Quest Per Second每秒請求數(shù))。就并發(fā)而言,我唯一推崇的只有理論最大QPS和悲觀QPS。
這里就大致根據(jù)理論最大QPS,給網(wǎng)站做幾個分類
50QPS以下——小網(wǎng)站
沒什么好說的,簡單的小網(wǎng)站而已,就如同本站這樣,你可以用最簡單的方法快速搭建,短期沒有太多的技術(shù)瓶頸,只要服務(wù)器不要太爛就好。
50~100QPS——DB極限型
大部分的關(guān)系型數(shù)據(jù)庫的每次請求大多都能控制在0.01秒左右,即便你的網(wǎng)站每頁面只有一次DB請求,那么頁面請求無法保證在1秒鐘內(nèi)完成100個請求,這個階段要考慮做Cache或者多DB負載。無論那種方案,網(wǎng)站重構(gòu)是不可避免的。
300~800QPS——帶寬極限型
目前服務(wù)器大多用了IDC提供的“百兆帶寬”,這意味著網(wǎng)站出口的實際帶寬是8M Byte左右。假定每個頁面只有10K Byte,在這個并發(fā)條件下,百兆帶寬已經(jīng)吃完。首要考慮是CDN加速/異地緩存,多機負載等技術(shù)。
500~1000QPS——內(nèi)網(wǎng)帶寬極限+Memcache極限型
由于Key/value的特性,每個頁面對memcache的請求遠大于直接對DB的請求,Memcache的悲觀并發(fā)數(shù)在2w左右,看似很高,但事實上大多數(shù)情況下,首先是有可能在次之前內(nèi)網(wǎng)的帶寬就已經(jīng)吃光,接著是在8K QPS左右的情況下,Memcache已經(jīng)表現(xiàn)出了不穩(wěn)定,如果代碼上沒有足夠的優(yōu)化,可能直接將壓力轉(zhuǎn)嫁到了DB層上,這就最終導(dǎo)致整個系統(tǒng)在達到某個閥值之上,性能迅速下滑。
1000~2000QPS——FORK/SELECT,鎖模式極限型
好吧,一句話:線程模型決定吞吐量。不管你系統(tǒng)中最常見的鎖是什么鎖,這個級別下,文件系統(tǒng)訪問鎖都成為了災(zāi)難。這就要求系統(tǒng)中不能存在中央節(jié)點,所有的數(shù)據(jù)都必須分布存儲,數(shù)據(jù)需要分布處理??傊P(guān)鍵詞:分布
2000QPS以上——C10K極限
盡管現(xiàn)在很多應(yīng)用已經(jīng)實現(xiàn)了C25K,但短板理論告訴我們,決定網(wǎng)站整體并發(fā)的永遠是最低效的那個環(huán)節(jié)。我承認我生涯中從未遇到過2000QPS以上,甚至1.5K以上的網(wǎng)站,希望有此經(jīng)驗的哥們可以一起交流下