系統(tǒng)容量預(yù)估
業(yè)務(wù)系統(tǒng)往往會被問到一些資源的問題航夺,需要多少機器澈圈,機器足不足以支撐當(dāng)前的業(yè)務(wù)增長等耿战,這些都是系統(tǒng)容量的一些估算問題姨蝴。
服務(wù)器容量
容量設(shè)計需要考慮的維度:業(yè)務(wù)規(guī)劃 + 架構(gòu)復(fù)雜度 + 組件模塊 + 高可用 + 安全 + 存儲復(fù)雜度
容量指標(biāo):單機QPS,峰值策幼,平均值邑时,用戶數(shù)、并發(fā)特姐、穩(wěn)定性
有多少數(shù)據(jù)量晶丘,數(shù)據(jù)維度有哪些,服務(wù)業(yè)務(wù)有哪些唐含,數(shù)據(jù)增長預(yù)想如何等
這里我們只是談?wù)労唵蔚臉I(yè)務(wù)通過單節(jié)點處理的情況(當(dāng)然接入網(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
需要根據(jù)業(yè)務(wù)訪問趨勢圖預(yù)估削祈,可能非常大翅溺,暫定為2.5倍
600 * 2.5 = 1500QPS
四、評估系統(tǒng)髓抑、單機極限QPS(需要壓測指標(biāo)數(shù)據(jù))
假設(shè)我們的單節(jié)點訪問能力優(yōu)化到 1000QPS (tomcat壓測單機只能抗住1200的QPS 不能打滿打八折 QPS1000)
五咙崎、峰值QPS是1500,單機QPS是1000吨拍,那至少需要2~3臺機器褪猛。
《互聯(lián)網(wǎng)架構(gòu)設(shè)計如何進行容量評估》
五個確認(rèn)步驟
一,評估總訪問量:詢問產(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)化和評估當(dāng)前的技術(shù)方案馋吗。
3焕盟、資源估算:滿足業(yè)務(wù)場景業(yè)務(wù),需要多少資源合適宏粤。彈性如何獲得有效的依據(jù)數(shù)據(jù)脚翘,假設(shè)我們準(zhǔn)備的彈性資源池足夠大。
所以從技術(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
.705=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