[黎偉健 焦容 王鋼]
移動云盤是重資產(chǎn)業(yè)務(wù),消耗大量服務(wù)器、存儲等資源。隨著業(yè)務(wù)的發(fā)展,需要對移動云盤用戶節(jié)點進(jìn)行持續(xù)擴(kuò)容。如何科學(xué)評估用戶節(jié)點擴(kuò)容時所需的服務(wù)器數(shù)量,使得擴(kuò)容工作既能滿足業(yè)務(wù)需求,又能最大程度的節(jié)約成本,是一個重要的課題。本文建立了移動云盤用戶數(shù)與服務(wù)器數(shù)量的數(shù)學(xué)模型,并據(jù)此評估擴(kuò)容所需服務(wù)器數(shù)量。
以移動云盤用戶節(jié)點容量某次擴(kuò)容的案例為例說明所需資源的評估方法。移動云盤用戶節(jié)點可支撐3 000 萬月活用戶,希望擴(kuò)容至5 000 萬月活用戶。月活用戶指移動云盤的安卓端、IOS 端、PC 端、TV 端等各端的每月活躍總數(shù),當(dāng)月某用戶在多個端多次活躍,按活躍一次計算。用戶節(jié)點共有用戶登錄鑒權(quán)服務(wù)(AAS)、對外服務(wù)接口服務(wù)(OSE)、定制業(yè)務(wù)包服務(wù)(SAES)、用戶管理和套餐管理服務(wù)(BMP)、網(wǎng)盤業(yè)務(wù)接口服務(wù)(NDA)、NDMC 等6 個模塊,需要評估每個模塊各擴(kuò)容多少臺服務(wù)器。
凱西·施瓦爾貝[1]說明了帕累托法則的概念,帕累托法則也叫20/80 法則,20%的因素帶來80%的影響。實踐表明,互聯(lián)網(wǎng)產(chǎn)品的資源消耗也遵循20/80 法則,也就是說20%的場景消耗80%的性能?;ヂ?lián)網(wǎng)產(chǎn)品的場景很多,對每個場景都做詳細(xì)的資源測算,是一件十分復(fù)雜且低效的工作。因此識別出產(chǎn)品的20%關(guān)鍵場景后,就可評估整個系統(tǒng)的容量。
顧炯炯[2]提出了云計算系統(tǒng)的總體性能評價維度,包括I/O 吞吐性能、CPU 利用率等。根據(jù)移動云盤的實踐,網(wǎng)盤類互聯(lián)網(wǎng)產(chǎn)品的性能則主要通過接口時延和事務(wù)處理能力(TPS)兩項指標(biāo)來度量。接口時延是指一個請求的平均響應(yīng)時間最長多少是可接受的,事務(wù)處理能力是指在接口時延可接受的情況下,系統(tǒng)每秒最大能處理多少事務(wù)。網(wǎng)盤類產(chǎn)品的大多數(shù)服務(wù)器都是CPU 類型,CPU 利用率是主要的資源指標(biāo)。根據(jù)經(jīng)驗值,一般CPU 利用率達(dá)到50%左右,即表示到達(dá)系統(tǒng)的性能消耗上限,需要擴(kuò)容。因此,依據(jù)接口吞吐量(TPS)和接口時延,在CPU 消耗50%基礎(chǔ)下,可以計算資源消耗,從而得到系統(tǒng)容量。
2.2.1 關(guān)鍵接口識別
每個模塊都可以用20/80 法則識別出關(guān)鍵接口。以移動云盤用戶節(jié)點的AAS 模塊為例,說明如何識別關(guān)鍵接口。AAS 模塊有29 臺16C64G 的虛擬機(jī),有11 個接口。某天平均每臺服務(wù)器最大TPS 取某天每臺服務(wù)器的最大平均TPS 值,每分鐘進(jìn)行一次采樣。如表1 所示。
表1 AAS 所有接口的TPS
根據(jù)某天最大TPS 確定前20%的接口,即選取2 個接口。thirdlogin 與querySpecToken 兩個接口為關(guān)鍵接口。
2.2.2 現(xiàn)網(wǎng)消耗算力
(1)關(guān)鍵接口性能指標(biāo)
AAS 模塊的thirdlogin 與querySpecToken 兩個接口的業(yè)務(wù)性能指標(biāo)如表2 所示。
表2 AAS 模塊的關(guān)鍵接口性能
最大平均TPS 指某天AAS 接口全部29 臺服務(wù)器的最大TPS 值,最大平均TPS=表1 的某天平均每臺服務(wù)器最大TPS*29。移動云盤業(yè)務(wù)每天上午9 時-11 時為業(yè)務(wù)量最大的時間段,因此忙時平均時延指移動云盤業(yè)務(wù)某天這個時間段的接口訪問平均時延。
移動云盤用戶節(jié)點AAS 集群有29 臺服務(wù)器,現(xiàn)網(wǎng)CPU 平均利用率為29.6%。移動云盤用戶節(jié)點可支撐3 000萬活躍用戶,以每臺主機(jī)CPU 利用率50%為性能上限,計算出整個AAS 集群的目標(biāo)集群算力,計算過程如下:
①現(xiàn)網(wǎng)TOP20%接口消耗算力
thirdlogin 接口最大平均TPS * 最大平均時延+querySpecToken 接口最大平均TPS * 最大平均時延=522*569+87*32=299 802
② 每臺服務(wù)器算力值
每臺服務(wù)器算力值=現(xiàn)網(wǎng)消耗算力/服務(wù)器臺數(shù)=299 802/29=10 338
③現(xiàn)網(wǎng)最大算力
如上所述,CPU 利用率50%表示達(dá)到性能極限,現(xiàn)網(wǎng)CPU 平均利用率只有29.6%,因此現(xiàn)網(wǎng)最大算力為:現(xiàn)網(wǎng)最大算力=集群已使用算力*50%/CPU 峰值利用率=299 802*50%/29.6%=506 422
2.2.3 擴(kuò)容方案
如前所述,移動云盤用戶節(jié)點從3 000 萬月活用戶擴(kuò)容至5 000 萬月活用戶,需要擴(kuò)容多少臺服務(wù)器,可按如下方法計算:
(1)目標(biāo)集群算力
目標(biāo)集群算力與目標(biāo)月活用戶數(shù)呈線性關(guān)系,且系統(tǒng)算力需要保留一定的冗余,冗余系數(shù)按90%計算。
目標(biāo)集群算力=現(xiàn)網(wǎng)消耗算力*(目標(biāo)活躍用戶數(shù)/當(dāng)前活躍用戶數(shù))/冗余系數(shù)=299 802*(5 000/3 000)/90%=555 189
(2)需要擴(kuò)容的服務(wù)器數(shù)量
需要擴(kuò)容的服務(wù)器數(shù)量=(目標(biāo)集群算力-現(xiàn)網(wǎng)最大算力)/單臺服務(wù)器算力=(555 189-506422)/10 338=4.72≈5(向上取整)
因此月活用戶數(shù)從當(dāng)前的3 000 萬增加到5 000 萬,移動云盤用戶節(jié)點AAS 部件需要擴(kuò)容5 臺AAS 服務(wù)器。
參照AAS 模塊的評估方法,可以計算出OSE、BMP、NDA、NDMC、SAES 等其余五個模塊的容量從3 000萬月活擴(kuò)容到5 000 萬月活所需要的服務(wù)器臺數(shù)。這些模塊的TPS、接口時延、CPU 峰值利用率均不相同,但評估方法與AAS 模塊相同。用戶節(jié)點擴(kuò)容合計需要擴(kuò)容139臺服務(wù)器,如表3 所示。
表3 用戶節(jié)點擴(kuò)容資源需求
從公開文獻(xiàn)看,幾乎查不到網(wǎng)盤類互聯(lián)網(wǎng)產(chǎn)品的容量評估方法,但可以查到一些其他類型的互聯(lián)網(wǎng)產(chǎn)品容量評估方法,例如滴滴內(nèi)部某業(yè)務(wù)根據(jù)CPU 利用率與業(yè)務(wù)流量的關(guān)系,預(yù)估業(yè)務(wù)流量增長時需要增加的服務(wù)器臺數(shù),系統(tǒng)性能衡量指標(biāo)相對單一。本文提出了網(wǎng)盤類產(chǎn)品的資源評估方法,引入了接口時延、事務(wù)處理能力(TPS)、CPU 利用率等復(fù)合性能指標(biāo)進(jìn)行容量評估,經(jīng)過了多次實踐驗證,效果良好。
本文給出了移動云盤的系統(tǒng)容量的評估方法。經(jīng)過移動云盤用戶節(jié)點多次擴(kuò)容檢驗,通過該評估方法評估出的擴(kuò)容方案,確實能達(dá)到預(yù)期容量值,對網(wǎng)盤類業(yè)務(wù)甚至互聯(lián)網(wǎng)業(yè)務(wù)的系統(tǒng)容量評估方法都有較強的借鑒意義。
隨著用戶行為的變化以及移動云盤技術(shù)的發(fā)展,系統(tǒng)容量的評估方法需要不斷迭代,因此不能一成不變的照搬該評估方法,而是與時俱進(jìn)的進(jìn)行優(yōu)化。