本站小編為你精心準(zhǔn)備了銀行集群架構(gòu)非功能測試創(chuàng)新實(shí)踐參考范文,愿這些范文能點(diǎn)燃您思維的火花,激發(fā)您的寫作靈感。歡迎深入閱讀并收藏。
隨著中國光大銀行(以下簡稱“光大銀行”)打造“一流財(cái)富銀行”的戰(zhàn)略目標(biāo)深入落地,高并發(fā)、高吞吐量的應(yīng)用系統(tǒng)越來越多,具備彈性擴(kuò)展能力的大規(guī)模集群化系統(tǒng)也相應(yīng)增多。動輒幾十臺數(shù)量的大規(guī)模集群,不僅給開發(fā)、運(yùn)維帶來巨大壓力,同時也對非功能測試提出了更高的要求。本文以光大銀行某系統(tǒng)非功能測試項(xiàng)目為例,闡述在大規(guī)模集群項(xiàng)目中實(shí)施非功能測試時面臨的挑戰(zhàn)和應(yīng)對方法。
一、項(xiàng)目背景
光大銀行某系統(tǒng)因數(shù)據(jù)庫服務(wù)器容量出現(xiàn)瓶頸,無法滿足業(yè)務(wù)增長需要,需通過對數(shù)據(jù)庫服務(wù)器擴(kuò)容升級以更好地支持業(yè)務(wù)發(fā)展。為此,根據(jù)光大銀行管理要求,項(xiàng)目組提出非功能測試需求,需要通過非功能測試驗(yàn)證升級后的系統(tǒng)容量,以保障擴(kuò)容效果和生產(chǎn)安全。
二、項(xiàng)目特點(diǎn)
1.系統(tǒng)架構(gòu)系統(tǒng)架構(gòu)通過多層負(fù)載均衡,實(shí)現(xiàn)快速橫向擴(kuò)展能力,架構(gòu)節(jié)點(diǎn)包括外部接入層、接入主控層、路由層和應(yīng)用層等,各節(jié)點(diǎn)層均可橫向擴(kuò)容。數(shù)據(jù)庫服務(wù)器采用主備模式,單點(diǎn)提供服務(wù),不具備橫向擴(kuò)展能力。系統(tǒng)物理架構(gòu)如圖1所示。2.傳統(tǒng)測試方案本次測試驗(yàn)證的主要目的是驗(yàn)證升級后系統(tǒng)的最大容量。傳統(tǒng)的測試方法有以下三個步驟:(1)部署與生產(chǎn)環(huán)境一致的測試環(huán)境,包括服務(wù)器數(shù)量、網(wǎng)絡(luò)環(huán)境以及服務(wù)器的主要配置如CPU/內(nèi)存、存儲和數(shù)據(jù)等。(2)考慮到生產(chǎn)節(jié)點(diǎn)部署不是一步到位,因此會增加擴(kuò)展性驗(yàn)證,即獲取單臺服務(wù)器容量后,逐步增加服務(wù)器數(shù)量,驗(yàn)證擴(kuò)展能力(線性程度)。(3)加大壓力,直至獲取到數(shù)據(jù)庫的容量拐點(diǎn),因數(shù)據(jù)庫一般不可橫向擴(kuò)展,因此獲取到數(shù)據(jù)庫容量拐點(diǎn)即意味著獲取到應(yīng)用系統(tǒng)的最大容量。以上測試方法針對的是服務(wù)器數(shù)量在10臺以內(nèi)的傳統(tǒng)架構(gòu),測試環(huán)境的準(zhǔn)備和測試驗(yàn)證過程,風(fēng)險都相對可控,但當(dāng)前該系統(tǒng)采用的是集群架構(gòu),服務(wù)器設(shè)備達(dá)到50臺左右,CPU總核數(shù)達(dá)到400C,量變會產(chǎn)生質(zhì)變,面對新的情況,如果仍然按照傳統(tǒng)測試方法則會面臨一系列的問題和挑戰(zhàn)。3.困難和挑戰(zhàn)由于架構(gòu)變化和集群規(guī)模的擴(kuò)大,非功能測試實(shí)施過程中產(chǎn)生了很多新問題、新挑戰(zhàn),主要體現(xiàn)在以下四個方面:(1)一個系統(tǒng)幾十臺設(shè)備,常備測試環(huán)境無法滿足要求,需要運(yùn)維設(shè)備團(tuán)隊(duì)協(xié)調(diào)資源,但如此大規(guī)模的資源調(diào)配,其難度可想而知。(2)系統(tǒng)使用的服務(wù)器中,除數(shù)據(jù)庫外,基本都是光大銀行私有云虛擬機(jī),測試環(huán)境申請到的虛擬機(jī)無法保證與生產(chǎn)設(shè)備型號完全一致,甚至?xí)町愝^大,對性能有明顯影響。同時,由于私有云特性,CPU和內(nèi)存等基礎(chǔ)資源會根據(jù)運(yùn)行時狀態(tài)進(jìn)行動態(tài)調(diào)整,測試環(huán)境中虛擬機(jī)之間資源爭用往往不期而至,測試結(jié)果分析面臨很大困難。(3)數(shù)據(jù)庫資源配置較高,有限的測試資源無法支撐獲取最大容量的要求。如果要獲取數(shù)據(jù)庫最大容量,則測試工作量巨大,測試周期無法保證,對項(xiàng)目建設(shè)目標(biāo)造成重大影響。(4)由于設(shè)備數(shù)量較多,測試場景復(fù)雜,測試過程需要開發(fā)配合的事項(xiàng)也會比較多,對于本已經(jīng)較為緊張的項(xiàng)目周期來說是一個較重的負(fù)擔(dān)。
“思則變,變則通,通則達(dá)”,面對測試資源不足的客觀條件,光大銀行嘗試轉(zhuǎn)變測試思路和方法,另辟蹊徑,規(guī)避上述難題。首先,對系統(tǒng)架構(gòu)特點(diǎn)進(jìn)行仔細(xì)分析。本次變更業(yè)務(wù)服務(wù)器(含接入、網(wǎng)關(guān)和應(yīng)用)未做調(diào)整,生產(chǎn)運(yùn)行相對穩(wěn)定,而業(yè)務(wù)服務(wù)器出現(xiàn)瓶頸時,均可以通過橫向擴(kuò)展提高平臺處理能力。進(jìn)一步分析可以發(fā)現(xiàn),接入層和網(wǎng)關(guān)層資源消耗都較低,容量風(fēng)險很小,因此重點(diǎn)關(guān)注應(yīng)用服務(wù)器擴(kuò)展能力即可。從整個系統(tǒng)架構(gòu)來看,數(shù)據(jù)庫不能橫向擴(kuò)展,也就是數(shù)據(jù)庫的處理能力決定了系統(tǒng)的最大處理能力。其次,結(jié)合理論和歷史實(shí)踐,若數(shù)據(jù)分布和索引相對合理,數(shù)據(jù)庫服務(wù)器CPU使用率不超過60%時,數(shù)據(jù)庫處理能力應(yīng)該呈線性增長。而各業(yè)務(wù)處理層相對穩(wěn)定,基于負(fù)載均衡集群架構(gòu),橫向擴(kuò)展能力理論上也接近線性。最后,由于業(yè)務(wù)發(fā)展具有不確定性,我們希望本次測試交付的數(shù)據(jù)不僅是一個靜態(tài)的容量數(shù)據(jù),最好能提供動態(tài)的擴(kuò)展配置表,運(yùn)維可以根據(jù)配置表,針對不同的業(yè)務(wù)發(fā)展調(diào)整合理的資源配置。基于以上分析和考慮,新的測試方案確定如下:(1)準(zhǔn)備少量與生產(chǎn)配置相同的應(yīng)用服務(wù)器,驗(yàn)證應(yīng)用擴(kuò)展趨勢以及數(shù)據(jù)庫資源消耗趨勢。(2)準(zhǔn)備盡可能多的應(yīng)用服務(wù)器資源(不要求與生產(chǎn)配置一致,應(yīng)用服務(wù)器資源消耗不作為考察點(diǎn)),盡可能地對數(shù)據(jù)庫施壓,獲取一組實(shí)測的數(shù)據(jù)庫容量數(shù)據(jù),提供給運(yùn)維作為預(yù)警參考。(3)通過線性回歸分析工具,對測試結(jié)果進(jìn)行回歸分析,并預(yù)測隨著業(yè)務(wù)發(fā)展,應(yīng)用服務(wù)器資源配置和數(shù)據(jù)庫資源消耗情況。以上方案在與開發(fā)和運(yùn)維的溝通中獲得了理解和認(rèn)可,我們著手開展測試執(zhí)行。
四、結(jié)果驗(yàn)證
按照新方案,本次測試協(xié)調(diào)了5臺與生產(chǎn)匹配的應(yīng)用服務(wù)器資源,同時準(zhǔn)備了一些異構(gòu)的應(yīng)用服務(wù)器,測試結(jié)果說明如下。1.橫向擴(kuò)展驗(yàn)證應(yīng)用層共驗(yàn)證了5個點(diǎn),按1-2-3-4-5臺擴(kuò)展,獲取不同應(yīng)用服務(wù)器數(shù)量對應(yīng)的TPS和數(shù)據(jù)庫服務(wù)器CPU使用率。橫向擴(kuò)展實(shí)測驗(yàn)證結(jié)果見表1。2.數(shù)據(jù)庫容量驗(yàn)證通過異構(gòu)應(yīng)用服務(wù)器資源,最終實(shí)測驗(yàn)證的數(shù)據(jù)庫容量峰值為4456筆/秒,對應(yīng)的DB-CPU使用率為16.2%。3.容量預(yù)測根據(jù)橫向擴(kuò)展驗(yàn)證的結(jié)果,分別從TPS應(yīng)用服務(wù)器數(shù)量和TPS數(shù)據(jù)庫CPU使用率兩個維度進(jìn)行線性回歸擬合。處理能力與應(yīng)用服務(wù)器數(shù)量擬合效果如圖2所示。處理能力與數(shù)據(jù)庫CPU使用率擬合效果如圖3所示。從擬合結(jié)果看,R2達(dá)到0.995以上,擬合效果比較理想。根據(jù)擬合結(jié)果,我們獲得了兩個線性關(guān)系公式,一個是處理能力與應(yīng)用服務(wù)器的線性公式y(tǒng)=203.2x1.009,另一個是處理能力與數(shù)據(jù)庫CPU使用率的線性公式y(tǒng)=36150x1.126。根據(jù)這兩個公式,我們可以進(jìn)一步獲取更多的預(yù)測數(shù)據(jù),如圖4所示,可以看到預(yù)測數(shù)據(jù)和實(shí)測結(jié)果吻合度還是比較高的。至此,我們本次的測試目的全部達(dá)到,而且為運(yùn)維交付了更為詳細(xì)的動態(tài)容量數(shù)據(jù),可以更好地指導(dǎo)生產(chǎn)運(yùn)維。容量擴(kuò)展預(yù)測數(shù)據(jù)見圖5。
五、項(xiàng)目總結(jié)
1.方法論說明針對本次測試采用的測試方法,為了方便說明和推廣,我們將該方法命名為“驗(yàn)證預(yù)測法”,為了更好地理解,對該方法進(jìn)一步解釋如下:(1)驗(yàn)證點(diǎn)1的目的是獲取處理能力與資源配置的相關(guān)性趨勢,需要硬件配置(CPU、內(nèi)存等)盡可能與生產(chǎn)接近一致,需要獲取多組數(shù)據(jù)(建議不少于5組),是預(yù)測的基礎(chǔ)。(2)驗(yàn)證點(diǎn)2的目的是獲取一組在最大測試環(huán)境下能達(dá)到的實(shí)測容量,為運(yùn)維提供預(yù)警參考,改組數(shù)據(jù)對應(yīng)用服務(wù)器資源配置要求比較寬松,主要是為了盡可能給數(shù)據(jù)庫施壓。(3)根據(jù)驗(yàn)證點(diǎn)1的結(jié)果進(jìn)行回歸擬合,對預(yù)測圖4容量測試驗(yàn)證測試法示意區(qū)1和預(yù)測區(qū)2的數(shù)據(jù)進(jìn)行預(yù)測,為運(yùn)維提供參考,同時通過驗(yàn)證點(diǎn)2對預(yù)測數(shù)據(jù)和實(shí)測數(shù)據(jù)進(jìn)行對比,了解預(yù)測數(shù)據(jù)可信度。2.價值和收益驗(yàn)證預(yù)測法在應(yīng)對大規(guī)模集群架構(gòu)的容量測試中具有明顯的優(yōu)勢。一是能夠有效規(guī)避傳統(tǒng)測試方法對測試資源過度依賴的痛點(diǎn),利用較少的資源達(dá)成測試目標(biāo),大大降低了環(huán)境準(zhǔn)備成本,縮短測試周期。二是可以提供動態(tài)容量數(shù)據(jù),更有效地指導(dǎo)生產(chǎn)。運(yùn)維可以通過查詢預(yù)測數(shù)據(jù)表,根據(jù)業(yè)務(wù)發(fā)展情況動態(tài)配置服務(wù)器資源,既能通過擴(kuò)容來快速應(yīng)對業(yè)務(wù)高峰,又能在業(yè)務(wù)低谷時合理釋放冗余資源,做到高效節(jié)約配置資源。3.局限性由于是實(shí)測驗(yàn)證和預(yù)測相結(jié)合,圖5中驗(yàn)證點(diǎn)2以下囊括的區(qū)域基本是可信的,驗(yàn)證點(diǎn)2之外即預(yù)測區(qū)2的數(shù)據(jù),由于數(shù)據(jù)的不斷積累和更新,有可能存在數(shù)據(jù)熱點(diǎn)、索引失效和sequence不足等引發(fā)的容量問題,須謹(jǐn)慎使用。有條件的情況下可以在預(yù)測區(qū)2中增加驗(yàn)證點(diǎn)進(jìn)行驗(yàn)證。當(dāng)前銀行科技發(fā)展迅猛,各種新技術(shù)、新架構(gòu)不斷出現(xiàn),給非功能測試帶來諸多挑戰(zhàn),如果僅按照傳統(tǒng)的測試方法去思考,很多問題將很棘手且難以解決,而換一種思路或許能夠取得意想不到的效果。
作者:田淵文 雷宏波 單位:中國光大銀行信息科技部