系統(tǒng)容量預(yù)估

系統(tǒng)容量預(yù)估

業(yè)務(wù)系統(tǒng)往往會被問到一些資源的問題,需要多少機器,機器足不足以支撐當前的業(yè)務(wù)增長等,這些都是系統(tǒng)容量的一些估算問題。

服務(wù)器容量

容量設(shè)計需要考慮的維度:業(yè)務(wù)規(guī)劃 + 架構(gòu)復雜度 + 組件模塊 + 高可用 + 安全 + 存儲復雜度

容量指標:單機QPS,峰值,平均值,用戶數(shù)、并發(fā)、穩(wěn)定性

有多少數(shù)據(jù)量,數(shù)據(jù)維度有哪些,服務(wù)業(yè)務(wù)有哪些,數(shù)據(jù)增長預(yù)想如何等

這里我們只是談?wù)労唵蔚臉I(yè)務(wù)通過單節(jié)點處理的情況(當然接入網(wǎng)關(guān)的處理能力又取決于后端的服務(wù)集群的處理能力這里先忽略)

我們通過案例分析驗算一下

估算案例一:1萬用戶需要多大的并發(fā)數(shù),需要多少臺機器?

8小時總訪問量:1萬用戶 * 10%的常駐訪問率 * 15秒上報周期(每分鐘訪問4次,每天按照8小時計算)得出日訪問量 200萬 ~2000萬 QPS : 200~2000萬 / 8 * 60 * 60 ≈ 100 ~ 700 QPS

并發(fā)數(shù) = QPS * 平均響應(yīng)時間,假設(shè)平均響應(yīng)時間=100ms,那么100~700 * 0.1 ≈ 10 ~ 70

并發(fā)數(shù) =(200~2000萬/ 8 / 3600)* 影響因子(一般為3)來進行估算并發(fā)量?!?200~ 2000

最終得出結(jié)論,1萬量車每15秒上報一次數(shù)據(jù)。只需要支持 100左右并發(fā)處理能力即可了。

如果單節(jié)點服務(wù)器的QPS是1000,那么一臺機器就能滿足 1萬臺車的數(shù)據(jù)上報。

估算案例二:業(yè)務(wù)增長機器能否抗住,需要加多少臺機器,依據(jù)是什么?

常見的容量評估包括數(shù)據(jù)量、并發(fā)量、帶寬、CPU/MEM/DISK等,

以并發(fā)量為例,通過五個步驟,解答業(yè)務(wù)的疑慮。

一、評估總訪問量(時間、用戶訪問量)

對于一個運營活動的訪問量評估,或者一個系統(tǒng)上線后PV的評估,問業(yè)務(wù)部門獲得。 例如一個推送活動:計劃10分鐘,推送1000w用戶,10%的消息點擊率 那么系統(tǒng)的訪問量:1000w * 10% = 100w。10分鐘會有100w的訪問。

二、評估平均訪問量QPS

總量除以總時間,如果按照天評估,白天12小時大概4w秒 100w / 30*60 ≈ 600QPS 說明系統(tǒng)需要支持至少 600QPS的訪問能力持續(xù)10分鐘。

三、評估高峰QPS

業(yè)務(wù)趨勢圖

需要根據(jù)業(yè)務(wù)訪問趨勢圖預(yù)估,可能非常大,暫定為2.5倍

600 * 2.5 = 1500QPS

四、評估系統(tǒng)、單機極限QPS(需要壓測指標數(shù)據(jù))

假設(shè)我們的單節(jié)點訪問能力優(yōu)化到 1000QPS (tomcat壓測單機只能抗住1200的QPS 不能打滿打八折 QPS1000)

五、峰值QPS是1500,單機QPS是1000,那至少需要2~3臺機器。

《互聯(lián)網(wǎng)架構(gòu)設(shè)計如何進行容量評估》

五個確認步驟

  • 一,評估總訪問量:詢問產(chǎn)品、運營;

  • 二,評估平均訪問量:總量除以總時間,一天算4w秒;

  • 三,評估高峰QPS:根據(jù)業(yè)務(wù)曲線圖來;

  • 四,評估系統(tǒng)、單機極限QPS:壓測很重要;

  • 五:根據(jù)線上冗余度解題:估計冗余度與線上冗余度差值;

《場景分析》

這里我們討論個場景問題:如果有如下需求,我們應(yīng)該如何滿足業(yè)務(wù) 一、100萬用戶秒殺10個商品 二、1秒殺支持1000筆交易

首先分析需要考慮的問題維度有哪些

  • 1、瞬時并發(fā):超出系統(tǒng)處理能力的時候,要有對后端服務(wù)的保護機制。不能引起服務(wù)器或者數(shù)據(jù)庫雪崩。

  • 2、庫存超賣:秒殺場景或者并發(fā)場景下,如何保障系統(tǒng)資源的并發(fā)安全問題,需要優(yōu)化和評估當前的技術(shù)方案。

  • 3、資源估算:滿足業(yè)務(wù)場景業(yè)務(wù),需要多少資源合適。彈性如何獲得有效的依據(jù)數(shù)據(jù),假設(shè)我們準備的彈性資源池足夠大。

所以從技術(shù)角度上系統(tǒng)應(yīng)該如何做好限流、并發(fā)安全、資源彈性。就能初步的評估需要多少資源能滿足業(yè)務(wù)了。 那么我們再來分析下上面兩個業(yè)務(wù)需求。 提取下關(guān)鍵信息:100萬用戶、庫存10個商品、業(yè)務(wù)時間要求1秒。 我們可以得出兩個維度的信息

  • 1、10個商品1秒賣完,10QPS。

  • 2、100萬用戶同時購買,100萬QPS。

顯然第二個是不太合適的。因為缺少單位時間的業(yè)務(wù)量,只有用戶數(shù)。所以如果想要完成評估,單位時間的業(yè)務(wù)要求才是基礎(chǔ)考慮要素。 一個簡單的方案:網(wǎng)關(guān)層滿足限流能力,支持10QPS的處理能力,那么需要增加一臺機器即可。剩下的100萬用戶都訪問拒絕,緩沖隊列只支持10個用戶進入。

如有不對歡迎指正,感謝閱讀。


計算公式:
100W個用戶,95%均為日活設(shè)備即95W
9500000.8/(36060)=70/s
.70
5=350 即活躍設(shè)備數(shù)在每秒為350個

100萬個設(shè)備,日活占12.5%,用2/8原則來估算并發(fā)用戶數(shù),即80%的用戶數(shù)會在高峰期點餐,一共5個小時
平均并發(fā)用戶數(shù)C=12500050.8/560=1666
并發(fā)用戶數(shù)峰值C`=1666+3
根號 1666=1788

1)平均并發(fā)用戶數(shù)為 C = nL/T
2)并發(fā)用戶數(shù)峰值 C‘ = C + 3*根號C
C是平均并發(fā)用戶數(shù),n是login session的數(shù)量,L是login session的平均長度,T是值考察的時間長度
C’是并發(fā)用戶數(shù)峰值

QPS和并發(fā)量
QPS(q) :每秒處理的請求數(shù)量 并發(fā)量 (c):同時支持多少個用戶在線。與服務(wù)器的請求處理模型有關(guān),如果是BIO模型,則并發(fā)量就受限于最大能支持多少個線程,如果是NIO模型,則并發(fā)量與socket連接數(shù)相關(guān) 平均響應(yīng)時間(t):單位為毫秒
他們之間的關(guān)系是 q = (1000/t)* c

單臺機器的QPS為1000QPS,并發(fā)為200

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容