




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