【成爲架構師2-1】容量設計:流量高低,對架構究竟有什麼影響

系列文章是博主對沈劍的《架構師訓練營》分享內容的個人筆記總結,原內容公衆號“成爲架構師”。

1 何時需要進行容量評估

  1. 容量有質變性增長
  2. 臨時運營活動
  3. 新系統上線

兩個場景例子:

  1. 要做雙十一促銷活動,那麼機器能不能抗住,扛不住有需要加幾臺
  2. 新系統上線,數據庫需不需要分庫,如果需要,那麼分幾個庫

技術上來說,這些都是系統容量預估問題,容量設計是架構師的必備技能。

2 哪些指標需要進行容量預估

看具體業務側的主要矛盾是什麼:

  1. 數據量 (通常有用戶發佈行爲的,如帖子)
  2. 併發量、吞吐量 (搶票、秒殺)
  3. 帶寬(音視頻)
  4. CPU/MEM/DISK等(計算需求、IO密集)

3 架構設計的容量評估步驟(吞吐量爲例)

1 評估總訪問量

方式: 詢問產品、運營的預期訪問量是多少
Q: 一個App-push的運營活動,計劃在30min內完成5000w用戶的push推送,預計push點擊率爲10%,那麼push落地頁的總訪問量是多少?
A: 5000w * 10% = 500w

2 評估平均訪問量

QPS的計算方式爲:總量 / 時間,若以一天計,則當作爲4w秒。
QPS、併發、吞吐等的理解可以參考這篇文章:QPS、TPS、吞吐量等性能指標的理解

Q: push落地頁系統30min的訪問量爲500w,平均QPS爲多少?
A: 500w / (30 * 60)

Q: 某信息分類網站的日均PV約8000w,平均QPS是多少?
A: 一天按照4w秒計算,8000w / 4w = 2000

3 評估高峯QPS

方式

  1. 根據業務的訪問曲線圖來,按照比例計算峯值QPS
  2. 沒有曲線圖則根據82原則計算,認爲80%的請求落在20%的時間裏,即(總量*0.8)/ (總時間*0.2)

訪問曲線圖:
在這裏插入圖片描述
若日均QPS爲2000,則根據圖中得到平均和峯值的比例關係爲1:2.5,那麼峯值的QPS可以估計爲500

4 評估系統、單機極限QPS

方式: 進行壓力測試
舉例,以App-push運營活動落地頁爲例(日均2000QPS,峯值5000QPS)假設系統的架構如下:
在這裏插入圖片描述

  1. 訪問端是APP
  2. 活動的落地頁是一個H5
  3. H5的數據大部分來自cache(99%),少數來自db(1%)

通過壓力測試發現,web層是瓶頸,tomcat的壓測只能抗住1200QPS

5 根據線上冗餘度做決策

經過上面4個步驟的計算,已經得到了需求的容量大小,再根據線上已經有的,就可以判斷出是否需要能夠滿足需求,以及擴容到什麼程度。

舉例: 若線上有兩臺web服務器,那麼爲了滿足需求應至少再增加三臺,四臺更爲保險。

在上述的五個步驟中,只有第四步壓力測試是需要提前準備的,其它四步驟都是臨時計算得到的。


下一篇要討論的是快速解決單機資源瓶頸的實踐方案,僞分佈式與垂直拆分,以及它們又引入了什麼新問題。

上一篇回顧:【成爲架構師1-2】技術選型:框架組件要不要自研,何時自研
下一篇更精彩:【成爲架構師2-2】僞分佈式與垂直拆分:快速解決單機性能問題的實踐方案

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章