1. 程式人生 > >高併發高可用(一)概念和技術架構雜談

高併發高可用(一)概念和技術架構雜談

1.1 系統吞度量要素

   一個系統的吞度量(承壓能力系統在單位時間內處理請求的數量,體現系統整體處理能力)與requestCPU的消耗、外部介面、IO等等緊密關聯。單個requestCPU消耗越高,外部系統介面、IO影響速度越慢,系統吞吐能力越低,反之越高吞度量常用量化指標有每秒事務數TPS每秒查詢率QPS每秒HTTP請求數HPS

   系統吞吐量幾個重要引數:每秒查詢率QPS、併發數、響應時間RT

   每秒查詢率 QPS:對一個特定的查詢伺服器在規定時間內所處理流量多少的衡量標準,在因特網上,作為域名系統伺服器的機器的效能經常用每秒查詢率來衡量。對應fetches/sec,即每秒的響應請求數,也即是最大吞吐能力。

   併發數:指系統可以同時承載的正常使用系統功能的使用者的數量 對於網站系統我們會有三個關於使用者數的統計數字:註冊使用者數、線上使用者數和同時發請求使用者數。由於註冊使用者可能長時間不登陸網站,使用註冊使用者數作為效能指標會造成很大的誤差。而線上使用者數和同發請求使用者數都可以作為效能指標。相比而言,以線上使用者作為效能指標更直觀些,而以同時發請求使用者數作為效能指標更準確些。

   響應時間:  系統對請求作出響應的時間,一般取平均響應時間。如:網路傳輸時間 N1+N2+N3+N4;應用伺服器處理時 間 A1+A3;資料庫伺服器處理時間 A2; 響應時間 N1+N2+N3+N4+A1+A3+A2;

        PV(page view)即頁面瀏覽量使用者每1次訪問網頁均被記錄1次。

1.2 計算公式

  同時線上使用者數是指在一定的時間範圍內,最大的同時線上使用者數量。
  同時線上使用者數=每秒請求數RPS(吞吐量)+ 併發連線數/平均使用者思考時間

     1平均併發使用者數C=nL / T

        n是平均每天訪問使用者數(login session),L是一天內使用者從登入到退出的平均時間(login session的平均時間),T是考察時間長度(一天內多長時間有使用者使用系統)

     2併發使用者數峰值≈C + 3 *根號C 

   舉例假設系統A,該系統有3000個使用者,平均每天大概有

400個使用者要訪問該系統(可以從系統日誌從獲得),對於一個典型使用者來說,一天之內使用者從登陸到退出的平均時間為4小時,而在一天之內,使用者只有在8小時之內會使用該系統。

     平均併發使用者數為:C = 400*4/8 = 200

     併發使用者數峰值為:≈200 + 3*根號200 ≈ 200 + 3*14.1≈ 242

     3吞吐量指單位時間內系統處理使用者的請求數

  從業務角度看,吞吐量可以用:請求數/秒、頁面數/秒、人數/天或處理業務數/小時等單位來衡量從網路角度看,吞吐量

可以用:位元組/秒來衡量對於互動式應用來說,吞吐量指標反映的是伺服器承受的壓力,他能夠說明系統的負載能力

  當沒有遇到效能瓶頸的時候,吞吐量與虛擬使用者數之間存在一定的聯絡,可以採用以下公式計算:

    TPS=(虛擬使用者個數VU * 每個虛擬使用者發出的請求數R )/效能測試所用的時間T

    TPS=每個虛擬使用者發出的請求數R × 系統的併發使用者數C

    4思考時間的計算公式

    Think Time,從業務角度指使用者進行操作時每個請求之間的時間間隔,在做效能測試時,模擬這樣的時間間隔,更加真實的

模擬使用者的操作。

  每個虛擬使用者發出的請求數R = 效能測試所用的時間T / 思考時間TT

2 軟體效能關注點

2.1不同角色關注點

    1使用者關注的是使用者操作的相應時間。

    2管理員的角度考慮需要關注的效能點。

    相應時間、伺服器資源使用情況是否合理、

    應用伺服器和資料庫資源使用是否合理、系統能否實現擴充套件、

    系統最多支援多少使用者訪問、系統最大業務處理量是多少、

    系統性能可能存在的瓶頸在哪裡、 更換那些裝置可以提高效能、

    系統能否支援7×24小時的業務訪問

    3開發(設計)人員角度去考慮。

    架構設計是否合理、 資料庫設計是否合理、

    程式碼是否存在效能方面的問題、 系統中是否有不合理的記憶體使用方式、

    系統中是否存在不合理的執行緒同步方式、系統中是否存在不合理的資源競爭

3高併發實時後臺服務技術架構雜談

    1)流控後臺服務可以支撐的最大併發量,雖然理論上可以通過新增節點(機器)的方法橫向擴充套件,即擴容,但考慮到成本通常後臺服務都會存在一個預估的能力上限。後臺服務的最大支撐能力低於了實際使用者的請求量,那麼後臺系統造成的影響可能就如同DDOS攻擊,嚴重的話整個後臺服務都會出現不可用根據業務場景定製合理的流控策略

    2)負載均衡閘道器層除了流控功能外還有一個重要的Balance Load的作用。將大量使用者的請求通過負載均衡策略合理地分發給後端節點。每個節點分配不同的權重

    3)接入層通過閘道器層執行一些基礎的流控策略,然後再由閘道器層將請求轉發給後端的接入層。接入層主要實現一些業務層面的基本校驗功能,比如登入態校驗。可過濾大部分非法請求,為合法的使用者請求留出有限的後臺資源。通常接入層都是無狀態的,可橫向擴充套件。

    4)邏輯層:根據前輕後重的原則,接入層一般只執行一些輕量的業務邏輯,真正核心的業務邏輯放在邏輯層來實現。邏輯層是真正核心處理的模組,它的處理能力決定了整個服務的質量,因此邏輯層的設計非常重要。設計原則:縮短關鍵業務流程降低單個介面處理時耗同步變非同步隔離

    5)儲存層儲存層主要解決的是資料快速訪問,大資料量如何儲存,以及資料一致性安全問題。對應的解決方案分別是快取,分庫分表,資料如何同步備份。