潘 慧,朱信忠,趙建民,徐慧英
(浙江師范大學數(shù)理與信息工程學院,浙江 金華321004)
互聯(lián)網(wǎng)數(shù)據(jù)中心(IDC)研究報告指出,2011年全球被創(chuàng)建和復制的數(shù)據(jù)總量為1.8ZB,預計到2020年將增長50倍[1]。中小型企業(yè)由于軟硬件資源不足無法滿足數(shù)據(jù)量的急劇增長,同時大型企業(yè)因資源服務不均導致大量資源的浪費。為了解決這種矛盾,云計算[2]的概念被提出,其超大規(guī)模、按需服務、極其廉價等特點為各類企業(yè)和行業(yè)應用提供了良好的解決方案。
對于云計算的研究,工業(yè)界各大云計算廠商如Google、IBM、Amazon、惠普(HP)等均推出了各自云的計算產品,如 Google Compute Engine云平臺、IBM SmartCloud云解決方案、Amazon彈性計算云(EC2)、HP CloudSystem融合云等并應用于各行業(yè)中,提出了云測試[3]、云制造[4]、云物流等概念。針對云測試的研究,目前主要集中在平臺架構上[5~7],其關注點集中在基礎設施即服務IaaS和平臺即服務PaaS層,對于軟件即服務SaaS層的云測試體系架構研究較少。針對此問題,本文采用測試即服務 TaaS(Testing as a Service)的服務模式的思想,基于Hadoop云計算架構,設計了云測試體系架構。
由于理解角度不同,云計算定義眾說紛紜。文獻[8~10]分別從系統(tǒng)特性、服務模型和計算模型進行定義,結合IBM對于云計算的定義[11]總結如下:云計算是由虛擬化計算資源組成的并行分布式系統(tǒng),通過利用虛擬化技術構建服務器提供自助接口的計算模型,根據(jù)服務提供商提供一種動態(tài)的、按需訪問的服務模式。
云計算體系架構從物理部署的角度分為基礎設施層、平臺層和應用層。從服務模式角度分為IaaS層、PaaS層和SaaS層。文獻[12,13]對其進行了具體說明,體系架構如圖1所示。
Figure 1 Cloud computing architecture圖1 云計算體系架構
該體系架構通過將計算資源部署在不同類型的云中提供服務和管理。在服務方面,將云計算每層物理架構抽象出來分別提供硬件資源訪問、使用資源管理和一種軟件交付模式。在管理方面,通過云管理層建立完善的數(shù)據(jù)體系和信息共享機制,確保云計算中心的安全穩(wěn)定。
云測試是基于云計算的一種新型測試方案,對于其定義無統(tǒng)一說法,文獻[6,12,14]從不同角度給出了定義。綜合文獻定義如下:云測試是利用云計算環(huán)境模擬現(xiàn)實世界,提供一種新型的云計算模式進行功能、壓力、性能測試等測試方法,服務提供商可提供7*24小時技術支持并支撐不同地域和不同項目并發(fā)的測試服務。
云測試提供多種測試方案以支持各種客戶需求,通常分為基于SaaS的測試、基于云中的測試和基于云應用程序測試三種。基于SaaS的測試由云供應商提供的測試行為,保證所提交的測試在不同的云中保持結果一致性?;谠浦械臏y試用于跨越云之間的測試,通過云技術提供在線跨云端應用程序服務,常用于大規(guī)模并發(fā)訪問測試?;谠茟贸绦虻臏y試是將應用程序部署在不同云中,通過提供端到端服務保證新測試任務質量的測試行為。
對于云測試,不同的云計算廠商對云測試也有各自解決方案,如HP采用CloudSystem融合云平臺支持跨企業(yè)和云環(huán)境的管理服務,借助Quick-Test Professional和LoadRunner提供云端的功能和性能測試,并通過Quality Center測試管理工具提供專業(yè)的測試管理服務,幫助客戶掌控和管理整個測試工作流程。
云測試因基礎架構無關性、測試服務類型廣泛、安全性高等特點為本地測試提供一種新型的解決方案,同時SaaS的思想給云測試帶來測試即服務[15~17]的服務模式。針對 TaaS 架 構的研究,Priyadarsini等[5]構造了TaaS模型,但該模型層次結構劃分比較模糊,姜毅等[16]提出TaaS架構層次模型,但此模型僅從服務質量角度考慮,并未給出一個整體的云測試架構。針對此問題,本文基于TaaS服務模式和Hadoop云計算分層架構的思想,進行了云測試體系架構設計,如圖2所示。
該體系架構分為IaaS服務層、PaaS服務層、TaaS服務層和用戶接口層,下面給出具體說明:
(1)IaaS服務層由服務器集群、數(shù)據(jù)庫、網(wǎng)絡設備組成。通過虛擬化技術將服務器集群虛擬為多機器實現(xiàn)“多租戶”管理。數(shù)據(jù)庫采用關系型和非關系型結構滿足不同類型海量數(shù)據(jù)的存儲。網(wǎng)絡設備實現(xiàn)資源的互聯(lián),以提供虛擬化服務、存儲管理、認證服務等。
(2)為了提供可擴展的測試平臺服務,將PaaS服務層設計為基礎開發(fā)平臺層和測試開發(fā)平臺層?;A開發(fā)平臺通過使用IaaS服務層提供的資源,搭建基礎的云計算平臺,包括分布式數(shù)據(jù)庫、分布式文件系統(tǒng)、統(tǒng)一存儲平臺等。測試開發(fā)平臺通過基礎開發(fā)平臺提供的服務,構造必要的測試服務,如測試執(zhí)行、資源調度、測試分析報告等。該層為用戶提供一個便捷和快速部署應用的平臺,無需考慮用戶軟硬件資源。
Figure 2 Cloud testing architecture圖2 云測試體系架構
(3)TaaS服務層的設計基于SaaS服務模式的思想,是軟件測試走向產品化的一種體現(xiàn)。為了體現(xiàn)標準化和靈活性的特點,分為基礎測試管理服務層和用戶定制測試服務層。基礎測試管理服務層通過使用不同的服務模式,即利用虛擬桌面登錄到測試環(huán)境,提供測試環(huán)境附加服務和專家服務[17],采用自主自測試[18]、測試支持即服務和虛擬感知的自動化測試[19]服務的方式,實現(xiàn)云計算平臺的自部署,提供一種靈活的、免安裝的測試交付模式。用戶定制測試服務層則通過開放相應的應用程序編程接口API,使服務商和客戶以更靈活的方式交付,提供一種自動化的團隊劃分、工作流定制的測試流程,通過彈性資源實現(xiàn)全自動流程的測試。
(4)用戶接口層為用戶使用的終端設備,包括普通電腦、智能手機、平板電腦等不同類型的終端設備。通過TaaS提供的多種靈活的方式在可適配的環(huán)境中實現(xiàn)功能、性能、壓力等測試,同時可通過創(chuàng)建端到端的環(huán)境提供專家測試服務。
分布式文件系統(tǒng)是云測試體系架構的核心,可實現(xiàn)物理資源的靈活存儲和管理。隨著數(shù)據(jù)量急劇增加,分布式文件存儲在可擴展性、容錯性等面臨著極大的挑戰(zhàn)[20]。各大云計算廠商的云存儲產品如IBM Storage云存儲架構、微軟 Windows Az-ure Blob云存儲服務、HP CloudObject等較好地實現(xiàn)了文件的分布式管理,但由于其產品的非開源性,無法進行有效的擴展。針對此問題,本文基于Hadoop分布式文件系統(tǒng)HDFS,設計了集一體化、集中的、以對象存儲為基礎的分布式文件系統(tǒng),以確保提供一個基于云安全協(xié)作的分布式文件系統(tǒng),如圖3所示。
Figure 3 Distributed file system architecture圖3 分布式文件系統(tǒng)架構
分布式文件系統(tǒng)分為存儲層、業(yè)務層和接口層,具體如下:
(1)存儲層包括數(shù)據(jù)庫管理系統(tǒng)DBMS集群和數(shù)據(jù)存儲單元。DBMS集群用于保存文檔的元信息、系統(tǒng)的分類信息、關聯(lián)規(guī)則等信息。采用HDFS主/從(Master/Slave)存儲結構對數(shù)據(jù)進行實時備份,同時保證讀寫文件時系統(tǒng)的負載均衡。數(shù)據(jù)存儲單元通過將數(shù)據(jù)分為元數(shù)據(jù)、塊數(shù)據(jù)和影像數(shù)據(jù)實現(xiàn)數(shù)據(jù)的存儲,并提供容量的彈性擴展。
(2)業(yè)務層包括索引分詞集群和 Web Service集群。索引分詞集群提供對存儲的內容和實際搜索要求進行分詞解析服務,為保證整個系統(tǒng)的精確定位提供基礎,支持對中英文等內容進行高效、精準的詞語解析。Web Service集群,通過標準協(xié)議規(guī)范,提供用戶標準的擴展接口,完成對用戶和管理員等方面觸發(fā)的數(shù)據(jù)管理、數(shù)據(jù)訪問和系統(tǒng)管理請求,包括分類、對象存儲、搜索和統(tǒng)計的模塊,并采用模塊化和分層設計原則,實現(xiàn)了統(tǒng)一監(jiān)控。
(3)接口層包括負載均衡LB(Load Balance)集群和數(shù)據(jù)存儲管理平臺。LB集群通過采用高可用集群/負載均衡集群(HA/LB)保證服務器高效率執(zhí)行的同時,保證系統(tǒng)的負載均衡,通過提供第三方接口或者自帶接口保證集群的高性能和高可靠性。數(shù)據(jù)存儲管理平臺實現(xiàn)對存儲節(jié)點的虛擬管理,通過硬件虛擬化方式將實體機虛擬成若干虛擬機,采用可視化平臺部署方案,實現(xiàn)集群的統(tǒng)一管理(如配置調優(yōu)、系統(tǒng)擴容等)。
統(tǒng)一存儲平臺為云計算資源處理提供一個可控的管理空間。如IBM TotalStorage統(tǒng)一存儲架構實現(xiàn)存儲資源、性能和故障的監(jiān)控與報警;MapReduce并行計算模型解決大規(guī)模數(shù)據(jù)的存儲。但是,對于云測試系統(tǒng)中文件類型的多樣性及復雜性,如MapReduce對象、文件對象和結構對象等,為了滿足不同數(shù)據(jù)類型存儲的需要,采用網(wǎng)絡附屬存儲 NAS(Network Attached Storage)思想并基于Hadoop云計算平臺,設計統(tǒng)一存儲平臺,實現(xiàn)分布式存儲機制,在極大地擴展容量、提高性能的同時保證存儲的可靠性,如圖4所示。
相比NAS方案,該存儲平臺具有如下較明顯的優(yōu)點:
(1)利用模塊化的設計方法,實現(xiàn)按照用戶需求針對既定存儲數(shù)據(jù)進行處理,包括文件對象、結構化數(shù)據(jù)等數(shù)據(jù)。
(2)將數(shù)據(jù)分為三大類別:文件對象、MapReduce對象、結構化對象,各自通過相對穩(wěn)定的訪問接口進行訪問。針對不同類型的數(shù)據(jù),服務端通過選擇一個特定用戶的存儲引擎滿足數(shù)據(jù)的存儲并采用中間件模塊(日志管理、索引管理和查詢過程)與客戶端進行協(xié)作通信。
Figure 4 Uniform storage platform architecture圖4 統(tǒng)一存儲平臺架構
(3)狀態(tài)服務提供索引、統(tǒng)計服務,通過集群控制加速客戶端對數(shù)據(jù)視圖的理解。采用分散控制為每個存儲節(jié)點提供具體存儲數(shù)據(jù)的統(tǒng)計和索引服務,客戶端采用零散信息按照一定規(guī)則整理出整個數(shù)據(jù)的視圖。
云測試的目標是以低成本提供高可靠、高可用的測試服務?;贖adoop云計算平臺較好地實現(xiàn)了虛擬化、海量數(shù)據(jù)處理、資源管理等關鍵技術,但面對大數(shù)據(jù)并發(fā)時,其負載均衡技術無法滿足云測試系統(tǒng)的實際需要,且HDFS在存儲海量小文件時較慢。針對如上兩個問題,基于Hadoop云計算平臺,提出了改進的負載均衡算法和小文件存儲策略。
3.4.1 改進的負載均衡算法
HDFS以超大數(shù)據(jù)處理、流式的數(shù)據(jù)訪問、易于部署在廉價服務器上等特點運用于云測試系統(tǒng)時具有良好的處理能力,但其在做負載均衡時,HDFS采用靜態(tài)負載均衡策略,在系統(tǒng)處理和任務分配時采用固定閾值,以盡可能將數(shù)據(jù)平均分布在集群的各個數(shù)據(jù)節(jié)點[21]。因此,容易引起低使用率磁盤熱點文件被頻繁訪問,當一個節(jié)點遷移了一定量的負載給其他節(jié)點,極有可能發(fā)生負載狀態(tài)的變化引起系統(tǒng)不穩(wěn)定?;诖藛栴},采用動態(tài)負載均衡算法,改進HDFS的負載均衡算法,算法描述如下:
假設有N臺Hadoop子節(jié)點Datanode,節(jié)點的負載均衡率LBR(Load Balance Rate)通過統(tǒng)計節(jié)點的負載均衡信息 LBI(Load Balance Info),并結合對應的權重得出。LBI[i][j][k](1≤i≤n,1≤j≤3,1≤k≤10)分別表示第i臺Datanode在第k時刻的CPU利用率、內存使用率和磁盤I/O訪問率,L[i](1≤i≤3)分別表示對應的權重,則第i臺Datanode的負載均衡率為:
Figure 5 Improved load balance flow chart圖5 改進的負載均衡流程
算法的幾點說明:
(1)通過一次獲取節(jié)點信息不能準確反映節(jié)點的負載狀況,為了更加準確地反映Datanode的實際負載信息,本算法通過10次獲取求出平均節(jié)點負載均衡率。
(2)為了防止低訪問磁盤處理熱點文件引起的不穩(wěn)定現(xiàn)象,采用雙閾值替代固定閾值,當負載均衡率處于正常閾值和最大閾值之間時,將包含熱點的文件遷移到高訪問磁盤。
(3)根據(jù)云測試系統(tǒng)關注點的不同,給CPU利用率、內存使用率和磁盤I/O訪問率設置不同的權重,以更好地關注測試的性能問題,還可以根據(jù)用戶項目的實際需要自行設定。
3.4.2 改進的小文件存儲策略
在文件存儲方面,Hadoop對于大文件的存儲表現(xiàn)出顯著的優(yōu)勢,但存儲小文件時,由于海量小文件的元數(shù)據(jù)信息占用大量的內存空間,HDFS的頻繁訪問引起高訪問成本、大量小文件緩存占用內容空間,造成了極大的負載,存儲速度較慢。HDFS針對小文件存儲自帶了兩種方案:HAR存檔技術和SequenceFile技術,但都存在著一定的缺圖
同時改進HDFS固定閾值策略,設置為雙閾值:正常閾值和最大閾值,正常閾值通常設定為系統(tǒng)能承載一定數(shù)據(jù)的能力,最大閾值設定為系統(tǒng)能承受的最大負載能力,算法流程如圖5所示。陷,HAR存檔技術在創(chuàng)建文件時會創(chuàng)建和存檔文件相同的磁盤空間,且無回收機制進行回收。SequenceFile技術根據(jù)〈Key,value〉鍵值對順序寫入文件,但文件不能追加寫入,適用于一次性大量寫入,對于零散的文件不能很好地支持[22]。因此,通過小文件合并、建立索引、多Namenode等單一的方法解決小文件的問題,對于小文件的類型、訪問頻率未充分考慮,基于此,本文采用緩存置換策略和基于訪問頻率的思想對小文件存儲進行了改進設計,算法流程如圖6所示。
Figure 6 Improved file storage flow chart圖6 改進的文件存儲流程圖
算法的幾點說明:
(1)HDFS由于單Namenode服務器系統(tǒng)架構,一方面極大簡化文件的處理流程,但同時造成節(jié)點負載過重,為了解決這個問題,通過采用緩存機制,將熱點文件寫入Namenode緩存,并通過設置定時器定時將文件寫入Namenode。對于非熱點文件按特征值提取,建立規(guī)則的索引,加快小文件的檢索速度。
(2)在小文件索引時,應用Map/Reduce的思想,在Map模塊建立局部索引,然后在Reduce模塊合并局部索引,構建全局索引,以提高檢索文件的效率,檢索時通過訪問Namenode就可以很方便地找到對應的Datanode。
(3)當Datanode緩存已滿時,采用緩存置換策略,可以更好地減少磁盤的寫次數(shù),采用最近最不可能使用策略,即利用訪問頻率,替換出緩存文件隊列中訪問頻率較低的文件,并將替換的文件寫入HDFS,從而使緩存中頻繁訪問的小文件更快地被讀取。
為了驗證設計體系架構的合理性,本文以IBM經(jīng)典J2EE案例花店(PlantsByWebSphere)的登錄和訂購商品模塊為例進行壓力測試。通過搭建Hadoop環(huán)境,選取性能度量參數(shù)中用戶負載能力及頁面響應時間指標將云測試架構方案與Hadoop集群部署方案進行對比。
通過部署Hadoop集群實現(xiàn)對大數(shù)據(jù)的壓力測試。集群包括8臺Linux工作站(CPU:8核/1.6Hz,內存:24 020MB,硬盤存儲:2 794GB,操作系統(tǒng):Cent OS 5.5Server x86_64)和1臺 Windows工作站(CPU:6核/3.466Hz,內存:16 372 MB,硬盤存儲:556GB,操作系統(tǒng):Windows Server 2008R2x86_64),并部署測試工具IBM Rational Performance v8.2。
在壓力測試中,以PlantsByWebSphere網(wǎng)站為對象,用戶登錄為測試場景,通過多線程的方式來模擬不同虛擬用戶(Virtual Users)進行性能負載測試,本文選擇增量并發(fā)的過程,即讓用戶以一個增長的數(shù)量到達系統(tǒng),對比實際用戶連接數(shù),實驗結果如圖7所示。
Figure 7 Performance and load situation圖7 性能負載變化情況
由于兩種方案基于Hadoop集群,因此在用戶數(shù)為500左右時差別并不明顯且表現(xiàn)較為良好。隨著用戶數(shù)增大,云測試架構實際用戶連接數(shù)較Hadoop集群部署方案有更好的性能,且用戶數(shù)在7 000以上時衰減較為緩慢。
同樣以該網(wǎng)站為對象,以用戶登錄和購物為測試場景進行并發(fā)測試,對比平均頁面響應時間,實驗結果如圖8所示。
ure 8 Different user average response time contrast picture圖8 不同用戶數(shù)并發(fā)平均頁面響應時間對比圖
通過實驗比較,得出Hadoop集群部署方案對于4 000以上并發(fā)用戶數(shù)時,系統(tǒng)的響應時間變得非常慢。在云測試架構方案中,由于采用分布式文件系統(tǒng)和統(tǒng)一的存儲平臺方案,并對負載均衡算法進行改進,因此隨著用戶數(shù)的增長,系統(tǒng)的響應時間呈折線變化,當并發(fā)用戶數(shù)達10 000時,頁面平均響應時間并未發(fā)生明顯慢的情況。
通過如上兩個實驗表明,在用戶數(shù)較少時,Hadoop集群表現(xiàn)出較好的性能,由于云測試架構啟動時有更多的加載項,耗費時間較多,當用戶量增大時,云測試架構對于性能負載和頁面響應時間有了明顯的改進。
通過Hadoop云計算平臺,采用測試即服務的服務模式和云計算分層架構的思想設計了云測試體系架構,并對負載均衡算法和小文件存儲策略進行改進設計。實驗表明,該架構在簡單性能測試場景具有合理性和良好的性能。但是,目前僅對性能測試進行實驗,如何使其適用復雜場景的性能測試、功能測試、兼容測試等更多測試種類,則是下一步工作的方向。
[1] The 2011digital universe study:Extracting value from chaos[EB/OL].[2011-06-01].http:∥www.emc.com/collateral/demos/microsites/emc-digital-universe-2011/index.htm.
[2] Armbrust M,F(xiàn)ox A,Griffith R,et al.A view of cloud computing[J].Communications of the ACM,2010,53(4):50-58.
[3] Yu Lian,Tsai W T,Chen Xiang-ji,et al.Testing as a service over cloud[C]∥Proc of the 5th IEEE International Symposium on Service Oriented System Engineering,2010:181-188.
[4] Xun Xu.From cloud computing to cloud manufacturing[J].Robotics and Computer-Integrated Manufacturing,2012,28(1):75-86.
[5] Priyadarsini K,Balasubramanian V,Karthik S.Cloud testing as a service[J].International Journal of Advanced Engineering Sciences and Technologies,2011,6(2):173-177.
[6] Gao Jerry,Bai Xiao-ying,Tsai Wei-Tek.Cloud testing—issues,challenges,needs and practice[J].Software Engineering:An International Journal(SEIJ),2011,1(1):9-23.
[7] Candea G,Bucur S,Zamfir C.Automated software testing as a service[C]∥Proc of the 1st ACM Symposium on Cloud Computing,2010:155-160.
[8] Buyya R,Yeo C S,Venugopal S.Market-oriented cloud computing:Vision,hype,and reality for delivering it services as computing utilites[C]∥Proc of the 9th IEEE/ACM International Symposium on Cluster Computing and the Grid,2009:1.
[9] Mell P,Grance T.The NIST definition of cloud computing[R].800-145.US:National Institute of Standards and Technology,2011.
[10] Sun Wei-long.Web application technology research based on IaaS cloud computing[D].Nanjing:Nanjing University of Science and Technology,2011.(in Chinese)
[11] IBM.What is cloud computing?[EB/OL].[2013-06-26].http:∥www.ibm.com/developerworks/cloud/newto.html.
[12] Li Qiao,Ke Dong-liang,Wang Xiao-lin.Brief survey on cloud testing[J].Application Research of Computers,2012,29(12),4401-4425.(in Chinese)
[13] Luo Jun-zhou,Jin Jia-hui,Song Ai-bo,et al.Cloud computing:Architecture and key technologies [J].Journal on Communications,2011,32(7):3-21.(in Chinese)
[14] Riung U L M,Taipale O,Smolander K.Research issues for software testing in the cloud[C]∥Proc of the 2nd IEEE International Conference on Cloud Computing Technology and Science,2010:557-564.
[15] Wipro.Testing as a service[EB/OL].[2013-05-25].http:∥taas.wipro.com/index.aspx.
[16] Jiang Yi,Cao Li,Wang Wei-jun.Research on the concept model of testing as a service[J].New Technology of Library and Information Service,2012(11):10-15.(in Chinese).
[17] Banzai T,Koizumi H,Kanbayashi R,et al.D-cloud:Design of a software testing environment for reliable distributed systems using cloud computing technology[C]∥Proc of the 10th International Conference on Cluster,Cloud,and Grid Computing Washington DC:IEEE Computer Society,2010:631-636.
[18] King T M,Ganti A S.Migrating autonomic self—testing to the cloud[C]∥Proc of the 2nd International Workshop on Software Testing in the Cloud(STITC),2010:438-443.
[19] Gaisbauer S,Kirschnick J,Edwards N,et al.VATS:Virtualized-aware automated test service[C]∥Proc of the 5th International Conference on Quantitative Evaluation of Systems(QEST’08),2008:93-102.
[20] Wang Yi-jie,Sun Wei-dong,Zhou Song,et al.Key technologies of distributed storage for cloud computing[J].Journal of Software,2012,23(4):962-986.(in Chinese)
[21] Gu Fang-zhou.Research on load balancing problem in distributed file system in cloud computing environment[D].Beijing:Beijing Jiaotong University,2011.(in Chinese)
[22] Chen Guang-jing.Research and implementation of small file processing techniques in Hadoop[D].Nanjing:Nanjing U-niversity of Posts and Telecommunications,2013.(in Chinese)
附中文參考文獻:
[10] 孫偉龍.基于IaaS云計算的Web應用技術研究[D].南京:南京理工大學,2011.
[12] 李喬,柯棟梁,王小林.云測試研究現(xiàn)狀綜述[J].計算機應用研究,2012,29(12),4401-4425.
[13] 羅軍舟,金嘉暉,宋愛波,等.云計算:體系架構與關鍵技術[J].通信學報,2011,32(7):3-21.
[16] 姜毅,曹麗,王偉軍,等.“測試即服務”概念模型研究[J].現(xiàn)代圖書情報技術,2012(11):10-15.
[20] 王意潔,孫偉東,周松,等.云計算環(huán)境的分布存儲關鍵技術[J].軟件學報,2012,23(4):962-986.
[21] 谷方舟.云計算環(huán)境中分布式文件系統(tǒng)的負載均衡問題研究[D].北京:北京交通大學,2011.
[22] 陳光景.Hadoop小文件處理技術的研究[D].南京:南京郵電大學,2013.