
響應(yīng)式網(wǎng)站開(kāi)發(fā)



高并發(fā)是指系統(tǒng)在短時(shí)間內(nèi)同時(shí)處理大量請(qǐng)求的能力,比如:大家熟知的阿里雙11,?一秒峰值完成58.3萬(wàn)筆訂單,這就是典型的高并發(fā)場(chǎng)景。
這可能包括多個(gè)用戶同時(shí)發(fā)送請(qǐng)求、多個(gè)客戶端同時(shí)連接到服務(wù)器、或者同時(shí)進(jìn)行大量的事務(wù)處理。
"多大算高并發(fā)"是一個(gè)常見(jiàn)的問(wèn)題,我們可以通過(guò)考慮一些關(guān)鍵指標(biāo)來(lái)判斷何時(shí)可以將一個(gè)系統(tǒng)視為高并發(fā)系統(tǒng)。
比如:通過(guò)QPS來(lái)計(jì)算具體的數(shù)據(jù)標(biāo)志。
QPS是Query Per Second的縮寫(xiě),即每秒查詢率,是衡量系統(tǒng)、服務(wù)或數(shù)據(jù)庫(kù)每秒能夠處理的查詢請(qǐng)求數(shù)量。
QPS 通常用于衡量數(shù)據(jù)庫(kù)、Web 服務(wù)器、API 等系統(tǒng)的性能。
QPS 的計(jì)算方式很簡(jiǎn)單,就是統(tǒng)計(jì)系統(tǒng)在每秒內(nèi)處理的查詢請(qǐng)求數(shù)量。
通常情況下,QPS在幾千到幾萬(wàn)以上的范圍內(nèi)可以被認(rèn)為是高并發(fā)。
比如:QPS 在 1000 到 10000 之間,通常屬于較為繁忙的系統(tǒng),就屬于有一定的并發(fā)量了。
如果超過(guò) 10,000...QPS 甚至到數(shù)十萬(wàn)、上百萬(wàn) QPS 的級(jí)別,也就是非常高的并發(fā)場(chǎng)景。
這類(lèi)系統(tǒng)往往依賴于復(fù)雜的架構(gòu),如:多級(jí)緩存、負(fù)載均衡、數(shù)據(jù)庫(kù)分庫(kù)分表、消息隊(duì)列...等來(lái)解決。
多級(jí)緩存
多級(jí)緩存,就會(huì)涉及到:
客戶端緩存:例如:瀏覽器緩存,減少服務(wù)器壓力...等等;
CDN(內(nèi)容分發(fā)網(wǎng)絡(luò)):CDN也就緩存的一大利器,一般都會(huì)采用:把靜態(tài)資源緩存到距離用戶最近的邊緣節(jié)點(diǎn);
本地緩存:以及還會(huì)涉及到本地緩存,比如:將熱點(diǎn)數(shù)據(jù)緩存到應(yīng)用服務(wù)器內(nèi)存,如:Guava、Ehcache...等等都是使用較多的本地緩存。
分布式緩存:通過(guò) Redis、Memcached ...等技術(shù)實(shí)現(xiàn)多級(jí)緩存,支持水平擴(kuò)展、和高可用。
負(fù)載均衡
負(fù)載均衡,也是高并發(fā)的常見(jiàn)手段。
常見(jiàn)的負(fù)載均衡,有硬件的負(fù)載均衡、以及軟件的負(fù)載均衡。
比如:
硬件負(fù)載均衡器:如 F5、A10 ...等,硬件的效果更好,但是就是比較貴。
軟件負(fù)載均衡:如 Nginx、LVS、HAProxy ...等,軟件負(fù)載均衡相對(duì)硬件效果差一點(diǎn),但是省錢(qián)啊。
分庫(kù)分表
當(dāng)數(shù)據(jù)量比較大的時(shí)候,都會(huì)考慮到“分庫(kù)分表”,這里就會(huì)涉及到:垂直拆分、和水平拆分...等等拆分方式。
垂直分庫(kù):按業(yè)務(wù)模塊拆分,例如將用戶表、訂單表分到不同的數(shù)據(jù)庫(kù)。
水平分庫(kù):將同一張表的數(shù)據(jù)按一定規(guī)則(如用戶 ID)分到不同的數(shù)據(jù)庫(kù)實(shí)例上。
分表:將數(shù)據(jù)按一定規(guī)則分成多個(gè)表存儲(chǔ),減少單表的數(shù)據(jù)量和索引壓力。
消息中間件
如果數(shù)據(jù)庫(kù)壓力大,你肯定想到緩存,除此之外,就會(huì)涉及到消息中間件,這也是一大利器。
通過(guò)消息隊(duì)列進(jìn)行異步處理,解耦系統(tǒng)組件,避免高峰期的請(qǐng)求壓力直接傳遞到數(shù)據(jù)庫(kù)、或后端系統(tǒng)。
比如:高并發(fā)最典型的場(chǎng)景,就是:異步處理、削峰填谷、...等等。
削峰填谷:是高并發(fā)系統(tǒng)中常用的一種架構(gòu)設(shè)計(jì)模式,主要用于平衡系統(tǒng)在高并發(fā)場(chǎng)景下的負(fù)載壓力。
它的核心思想:削峰、和填谷。
削峰
什么是削峰呢?削峰就是:在并發(fā)請(qǐng)求達(dá)到峰值時(shí),系統(tǒng)無(wú)法在短時(shí)間內(nèi)處理所有請(qǐng)求,可以通過(guò)一些手段將請(qǐng)求削減,或者暫時(shí)存儲(chǔ)起來(lái),這就是削峰。
當(dāng)請(qǐng)求量過(guò)大時(shí),生產(chǎn)者(發(fā)起請(qǐng)求的一方)會(huì)將請(qǐng)求寫(xiě)入消息隊(duì)列,消費(fèi)者(處理請(qǐng)求的一方)則以相對(duì)較慢的速度從隊(duì)列中讀取數(shù)據(jù)并處理,這樣系統(tǒng)不至于在短時(shí)間內(nèi)被大量請(qǐng)求壓垮。
通過(guò)“削峰”的方式,可以避免系統(tǒng)在短時(shí)間內(nèi)被巨量的請(qǐng)求壓垮。
填谷
填谷就是:當(dāng)系統(tǒng)處于較低負(fù)載時(shí),可以從之前存儲(chǔ)的請(qǐng)求中逐步取出,充分利用系統(tǒng)的剩余資源來(lái)處理這些積壓的任務(wù)或請(qǐng)求。
比如:當(dāng)請(qǐng)求量減少時(shí),消費(fèi)者繼續(xù)從隊(duì)列中獲取消息處理,保證資源充分利用,不會(huì)因?yàn)檎?qǐng)求量減少而讓資源閑置。
最典型的場(chǎng)景:就是秒殺活動(dòng),通常會(huì)產(chǎn)生大量瞬時(shí)請(qǐng)求,系統(tǒng)往往無(wú)法在同一時(shí)間處理所有請(qǐng)求。
可以使用消息隊(duì)列對(duì)請(qǐng)求進(jìn)行緩沖,后臺(tái)逐步處理訂單,避免系統(tǒng)崩潰。
【版權(quán)聲明】:本站內(nèi)容來(lái)自于與互聯(lián)網(wǎng)(注明原創(chuàng)稿件除外),供訪客免費(fèi)學(xué)習(xí)需要。如文章或圖像侵犯到您的權(quán)益,請(qǐng)及時(shí)告知,我們第一時(shí)間刪除處理!謝謝!
響應(yīng)式網(wǎng)站開(kāi)發(fā)
售后服務(wù):13534259410 (7×24小時(shí))
在線 Q Q:253849310 (售前咨詢)
深圳無(wú)雙科技,專(zhuān)注于深圳網(wǎng)站建設(shè)、深圳網(wǎng)站設(shè)計(jì)、深圳網(wǎng)站制作。
服務(wù)客戶超3000家,一站式網(wǎng)站建設(shè)及推廣營(yíng)銷(xiāo)解決方案提供商。
我們的價(jià)值觀:誠(chéng)信、坦誠(chéng)、盡責(zé)、創(chuàng)新。期待與您合作!