溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Web開發(fā)中怎么提升高并發(fā)的能力

發(fā)布時(shí)間:2022-01-17 10:56:47 來源:億速云 閱讀:152 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹“Web開發(fā)中怎么提升高并發(fā)的能力”,在日常操作中,相信很多人在Web開發(fā)中怎么提升高并發(fā)的能力問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Web開發(fā)中怎么提升高并發(fā)的能力”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

我們說的高并發(fā)是什么?

上面的定義明顯不是我們通常所言的并發(fā),在互聯(lián)網(wǎng)時(shí)代,所講的并發(fā)、高并發(fā),通常是指并發(fā)訪問。也就是在某個(gè)時(shí)間點(diǎn),有多少個(gè)訪問同時(shí)到來。

我看到有人給高并發(fā)下了類似這樣的定義:

高并發(fā)通常是指我們提供的系統(tǒng)服務(wù)能夠同時(shí)并行處理很多請(qǐng)求。

來看看這個(gè)定義,這里首先把并發(fā)給混淆到并行了。關(guān)于并發(fā)并行的區(qū)別看這里(https://laike9m.com/blog/huan-zai-yi-huo-bing-fa-he-bing-xing,61/),我就不多說,繼續(xù)探討并發(fā)。

然后定義又說很多請(qǐng)求?什么叫很多請(qǐng)求?做為中國人,這個(gè)詞讓我想象力一發(fā)不可收拾……好了,拉回來,繼續(xù)本文。

高并發(fā)在網(wǎng)絡(luò)上沒有明確的定義。但根據(jù)我搜索情況,一般都是pv在千萬級(jí)別以上的公司才會(huì)涉及到這個(gè)概念。所以我得出一個(gè)自定義概念:如果某個(gè)系統(tǒng)的日pv在千萬級(jí)別以上,他就可能是一個(gè)高并發(fā)的系統(tǒng)。

為什么說是可能?那是因?yàn)橛械墓就耆蛔呒夹g(shù)路線,全靠機(jī)器堆,這不在我們的討論范圍。為了避免裝逼,我們下面主要講并發(fā)(不談高)

并發(fā)的問題,我們具體該關(guān)心什么?

講真話,高并發(fā)是個(gè)比較抽象的概念。很難有一個(gè)統(tǒng)一的可衡量的標(biāo)準(zhǔn)。哪么有一些其它維度的標(biāo)準(zhǔn)指標(biāo)來衡量系統(tǒng)的性能嗎?搬出以前計(jì)算機(jī)課程里邊的一些指標(biāo)來跟大家聊聊。

先聲明幾個(gè)概念,別打瞌睡。

  • QPS(TPS):每秒鐘 request/事務(wù) 數(shù)量,在互聯(lián)網(wǎng)領(lǐng)域,指每秒響應(yīng)請(qǐng)求數(shù)(指http請(qǐng)求);

  • 吞吐量:?jiǎn)挝粫r(shí)間內(nèi)處理的請(qǐng)求數(shù)量(通常由QPS與并發(fā)數(shù)決定);

  • 響應(yīng)時(shí)間:系統(tǒng)對(duì)一個(gè)請(qǐng)求做出響應(yīng)的平均時(shí)間。例如系統(tǒng)處理一個(gè)HTTP請(qǐng)求需要200ms,這個(gè)200ms就是系統(tǒng)的響應(yīng)時(shí)間(我認(rèn)為這里應(yīng)該僅包含處理時(shí)間,網(wǎng)絡(luò)傳輸時(shí)間忽略)。

這里一定要注意呃,QPS ≠ 并發(fā)數(shù)

并發(fā)是指,某個(gè)時(shí)刻有多少個(gè)訪問同時(shí)到來。QPS是指秒鐘響應(yīng)的請(qǐng)求數(shù)量。那么這里就肯容易推算出一個(gè)公式:

QPS = 并發(fā)數(shù) / 平均響應(yīng)時(shí)間

后面我們的分析都是圍繞這個(gè)公示來進(jìn)行展開,沒明白的再回味一下。

現(xiàn)在我們來假設(shè)一個(gè)場(chǎng)景:既然QPS是每秒鐘處理的http請(qǐng)求數(shù)量。那么1s = 1000ms。假設(shè)我們當(dāng)前一個(gè)http請(qǐng)求服務(wù)器處理完成需要100ms(即那么 平均響應(yīng)時(shí)間 = 100ms )。那么它1s鐘可以處理10個(gè)請(qǐng)求。也就是說 qps = 10。推算出 并發(fā)數(shù) = 10

常常我們被問到高并發(fā)的問題,其實(shí)從某種程度上來說,他們是想問怎么提高現(xiàn)有程序的性能?,F(xiàn)在我們基于上面的假設(shè),來進(jìn)行分析。假設(shè)現(xiàn)在有個(gè)系統(tǒng)性能上就是我們上面的假設(shè),它每天有 300萬pv,運(yùn)行在單機(jī)上(當(dāng)然經(jīng)常宕機(jī)),按照上面的系統(tǒng)性能數(shù)據(jù),給出優(yōu)化解決方案。

提高并發(fā)能力

通過上面的分析,要提升并發(fā)能力,我們就需要提升我們的qps(其實(shí)這里并不完全正確,為了說明問題,我們先放棄一部分正確性

最快速解決方案,就是增加機(jī)器。我們根據(jù)以上情況來實(shí)際計(jì)算一下。

  • 訪問量:200w pv

  • QPS:10

根據(jù)日常經(jīng)驗(yàn),80% 的訪問量集中在 20%的時(shí)間,算一下這 200w pv實(shí)際需要機(jī)器達(dá)到多少qps才能滿足。

qps = (200w * 0.8) / (24 * 3600 * 0.3)

qps = 61.7

實(shí)際上如果在單機(jī)上,要求我們每秒鐘處理請(qǐng)求必須達(dá)到 61.7 以上才行,而實(shí)際上我們當(dāng)前系統(tǒng)的qps是 10。那么怎么解決?

方案一:上機(jī)器

個(gè)人的能力是有限的,團(tuán)隊(duì)的力量是無窮的。既然一臺(tái)機(jī)器搞不定,我們就多上幾臺(tái)機(jī)器。這就涉及到db主從、讀寫分離、負(fù)載均衡等技術(shù)。

它的原理就是分流,把以前集中的壓力分散開來。改方案見效快,靈活,實(shí)踐起來也更快。

方案二:增加單機(jī)性能

單機(jī)到底性能能夠增加到一個(gè)什么程度,這取決于你的機(jī)器配置,也取決于你的服務(wù)到底有多復(fù)雜。

ps: 寫到這里突然有點(diǎn)能夠理解為什網(wǎng)上對(duì)高并發(fā)都是講很多請(qǐng)求,沒有具體數(shù)據(jù)了,因?yàn)檫@真的只能針對(duì)業(yè)務(wù)來講,100個(gè)并發(fā)對(duì)靜態(tài)網(wǎng)頁來說根本沒有的事兒,但是對(duì)于某些密集計(jì)算型的估計(jì)…

那么常見的單機(jī)如何提升性能?比如:增加不常變化數(shù)據(jù)的緩存,開啟php的opcache,優(yōu)化代碼(如:n+1問題、多重嵌套循環(huán)、深層遞歸等),db表優(yōu)化等等。

到此,關(guān)于“Web開發(fā)中怎么提升高并發(fā)的能力”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI