上一篇寫到了架構在規劃時,應該做哪些?當項目啟動後,資源的需求就會提上議程,包括人力資源、項目所需的軟件資源、硬件資源以及其他資源。而今天想探讨的是很少被觸及的硬件資源。因為硬件資源的規劃往往都是經驗值的積累,根據之前的項目能很快的提交一版資源清冊,然而問其原因大家就隻能我看看你,你看看我了。
我們通常提供的硬件資源清單中,主要包含的就是CPU、内存、存儲、網絡等基礎資源、以及服務器的個數。
在探讨硬件資源之前,我們需要知道用戶量、項目類型都是影響這些的主要因素。
一、用戶量
用戶量指系統、程序、網站等的用戶數量,通常用于衡量其在市場上的曝光和活躍程度。從應用角度來講,用戶量分為注冊用戶量、活躍用戶量、并發用戶量。
注冊用戶量,指的是軟件系統截止到某一時刻所擁有的已注冊的用戶總量。
活躍用戶量,也稱為在線用戶量,指的是軟件系統在某一時間段所擁有的正在使用此系統的注冊用戶量。
并發用戶量,指的是在同一時刻與服務器進行了交互的在線用戶量。這些用戶的最大特徵是和服務器産生了交互,這種交互既可以是單向的傳輸數據,也可以是雙向的傳輸數據。并發主要是針對服務器而言,是否并發的關鍵是看用戶操作是否對服務器産生了影響。
測算資源的時候通常采用活躍用戶量,計算峰值時通常使用的是并發用戶量。
在讨論用戶量時,除了要考慮當下的用戶量, 同時,也要考慮用戶的持續增長率,以便了解系統上線後未來幾年的承載情況。
目前,假定架構規劃中的活躍用戶量約為10000人,活躍用戶量的活躍增長率為每年10%,後續的計算将以該數字作為計算依據。
二、業務量
業務量分析是衡量系統吞吐量和處理能力的基礎,業務量是在做業務架構的時候可以預估出來的,依據業務架構推導出來的功能架構會清晰的描繪出用戶在每個月,根據業務特點,在什麽時間段業務存在高峰期。根據業務特點可計算出各類業務在這個時間段内發生的比例。
随着系統不斷的完善,在未來的幾年中,功能也會不斷的增加,我們也能假定業務增長率也是每年10%。
通常情況下峰值業務量為平均業務量的5倍,計算峰值時需要放大5倍。
業務量的估算公式是:
(1)當前業務月發生總量 = 用戶當前數量 × 用戶月平均訪問數
(2)當前主要業務月發生總量 =當前業務月發生總量× 比例係數
(3)當前月高峰期N天中主要業務總量 = 當前主要業務月發生總量×N天發生的比例
(4)當前月高峰期每秒處理量=當前月高峰期N天中主要業務總量 ×M小時發生的比例/N天/ M小時/60分鐘/60秒
(5)當前月峰值業務量 =當前月高峰期每秒鐘處理量×5倍
(6)L年高峰期每分鐘處理量=當前月高峰期每秒處理量×用戶量增長率×業務量增長率
(7)L年峰值業務量= L年高峰期每秒鐘處理量×5倍
舉個例子:
如果系統平均每戶每月完成相關業務所産生的請求數約為80個,主要業務的比例是70%,高峰期在每周四、周五合計每月8天比例為80%,時間是9點-11點 ,13-17點合計6個小時比例為70%,測算五年後的峰值
(1)當前業務月發生總量 = 用戶當前數量 × 用戶月平均訪問數 = 10000 * 80 = 800000
(2)當前主要業務月發生總量 =當前業務月發生總量× 比例係數 = 80000 * 70% = 560000
(3)當前月高峰期N天中主要業務總量 = 當前主要業務月發生總量×N天發生的比例 = 560000 * 80% = 44800
(4)當前月高峰期每秒處理量=當前月高峰期N天中主要業務總量 ×M小時發生的比例/N天/ M小時/60分鐘/60秒 = 44800 *70 % /8 / 6 /60 / 60 = 0.18
(5)當前月峰值業務量 =當前月高峰期每秒鐘處理量×5倍 = 0.18 * 5 = 0.9
(6)5年高峰期每分鐘處理量=當前月高峰期每秒處理量×用戶量增長率×業務量增長率 = 0.9 * 1.1^4 * 1.1^4 = 1.93
(7)5年峰值業務量= L年高峰期每秒鐘處理量×5倍 = 1.93 *5 = 9.65
三、CPU個數的評估
行業标準:CPU個數x利用率/輸送量=CPU個數x利用率/(交易筆數/秒)=CPU個數x利用率x秒/交易筆數=每筆交易消耗的CPU持續了一秒鐘。
CPU個數 =每筆交易消耗的CPU持續了一秒鐘 *(交易筆數/秒)/利用率=每筆交易消耗的CPU持續了一秒鐘 *(L年每月峰值業務量 )/利用率
依照上例:5年峰值業務量= 9.65個,假定每筆交易消耗的CPU持續了一秒鐘 = 0.25,CPU利用率為50%
CPU個數 =每筆交易消耗的CPU持續了一秒鐘 *(L年每月峰值業務量)/利用率=0.25 * (9.65) / 50% = 4.825
因此,使用5C的CPU即可。
四、數據庫存儲的評估
數據量分析是衡量系統存儲系統和備份系統容量的基礎。用戶每月存儲數據量為NKB,業務的年數據增量(GB)=(用戶每月存儲數據量N×用戶數×12)÷(1024×1024)。
根據上面的數據量計算公式,可以推算出系統上線開始每個月的數據量增長情況,結合用戶每年增長比例,可以計算出系統中每年數據量的增長情況,依此類推,可以計算未來3-5年内系統中業務資料的總容量,為系統的基礎設施設計提供參考依據。
依照上例:用戶年數據增長率為10%。用戶每月存儲數據量N = 54K
業務的年數據增量(GB)=(用戶每月存儲數據量N×用戶數×12)÷(1024×1024)= 54 * 10000 * 12 /(1024*1024)=6.18G
以此類推:
磁盤佔用率不高于60% =37.74 / 0.6 = 22.644
如果是oracle采用Raid10造成了50%的磁盤利用率,因此,磁盤申請不低于22.644*2=45.288G
四、内存的測算
方法一:根據标準化設計,将内存容量(單位為G)和CPU的核心的數量的比例按照4:1配置,一個CPU的核心對應4G内存。
服務器配置兩個5核CPU則建議配置10G内存。
方法二: 原理介紹:服務器的内存主要包括:操作系統佔用内存、應用系統佔用内存、應用并發網絡連接佔用内存等。按照經驗,Windows平台内存佔用率不超過55%、Unix(或Linux)平台内存佔用率不超過80%時,不會影響系統的性能。
計算公式:
服務器(Windows平台)内存= (操作系統佔用内存 應用佔用内存 應用并發網絡連接佔用内存 其他軟件佔用内存)/ 55%
服務器(Unix或Linux平台)内存= (操作系統佔用内存 應用佔用内存 應用并發網路連接佔用内存 其他軟件佔用内存)/ 60%(前置條件:操作系統佔用内存 應用佔用内存 應用併發網絡連接佔用内存 其他軟體佔用内存≤4G)
服務器(Unix或Linux平台)内存= (操作系統佔用内存 應用佔用内存 應用并發網絡連接佔用内存 其他軟件佔用内存)/ 80%(前置條件:操作系統佔用内存 應用佔用内存 應用并發網絡連接佔用内存 其他軟件佔用内存>4G)
方法二過于複雜,一般采用第一種測算即可,這裡不再計算方法二。
五、網絡帶寬
首先普及一下基礎,
一兆帶寬= 1Mb/s;
1Mb=1024Kb=1024*1024bit = 1024*1024 / 8 = 131072 Byte
1KB=1024Byte
1Mb/s = 131072 Byte/s (位字節) = 131072/1024 = 128KB/s
常說的帶寬,其實在每秒下載的字節大小為128KB/s ,但是這是理論上的速度,實際要扣除12%的信息頭标識等各種控制信号,所以1Mb/s =128K*88%= 112.64KB/s:
穩定的網絡使用率大約是70% :
因此1Mb/s = 112.64KB/s * 0.7 = 78.848 KB/s。可以把這個值作為一個常量即可。
并發量 =當前月高峰期每秒鐘處理量
并發量峰值 =并發量 * 5
按照每個請求所産生的字節為NKB計算
帶寬 = NKB * 并發量峰值 / 78.848 KB/s
如有文件下載、傳輸,另外再疊加帶寬。
OGG數據實時同步帶寬,計算方法為高峰期每小時歸檔日志大小/3600/8(壓縮比率)*8(每字節8位) 冗馀帶寬。
依照上面的例子,5年峰值業務量= L年高峰期每秒鐘處理量×5倍 = 1.93 *5 = 9.65
按照每個請求所産生的字節15KB,所需要的帶寬至少為 : 帶寬=NKB * 并發量峰值 / 78.848 KB/s = 15 * 9.65/ 78.848 = 1.84Mb/s
靜态資源下載(圖片、js腳本、web控制項安裝包等等)所需帶寬約為 1M。
總體必需的最小公網帶寬為 1.84 1 = 2.84。
如果是大型互聯網系統,多運營商也是必要的。
六、其他因素
硬件的資源也 會随着用戶的要求,發生變化。例如網絡安全要求,如果有内外網的需求,處理内外網數據的傳遞也是需要硬件資源作為支撐的,但是峰值可以作為每一個節點參考的依據。容災的要求,這樣勢必需要将單節點擴展為多服務器的備份,而每一個機器都需要保障能獨立支撐系統的運轉。 當然還有其他因素制約這裡就不再贅述了。
總結:
硬件資源的測算是需要對系統的架構設計有深層次的理解,同時也需要對使用技術路線的有明确認識,資源雖然可以在系統上線後進行調優,在售前和規劃階段,必要的硬件測算會影響成本的付出,負責任的系統需要對資源做出明确的測算。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!