午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

一種分布式壓力測(cè)試方法和系統(tǒng)與流程

文檔序號(hào):11154836閱讀:483來(lái)源:國(guó)知局
一種分布式壓力測(cè)試方法和系統(tǒng)與制造工藝

本發(fā)明涉及壓力測(cè)試領(lǐng)域,尤其涉及一種分布式壓力測(cè)試方法和系統(tǒng)。



背景技術(shù):

隨著互聯(lián)網(wǎng)的興起與發(fā)展,WEB(網(wǎng)頁(yè))類(lèi)系統(tǒng)或者接口需提供給越來(lái)越多的用戶(hù)訪(fǎng)問(wèn),不斷增長(zhǎng)的用戶(hù)訪(fǎng)問(wèn)需求對(duì)系統(tǒng)的并發(fā)量和承載能力提出了越來(lái)越高的要求,因此對(duì)系統(tǒng)進(jìn)行壓力測(cè)試的必要性也越來(lái)越高。

壓力測(cè)試通過(guò)模擬實(shí)際應(yīng)用的軟硬件環(huán)境及用戶(hù)使用過(guò)程的系統(tǒng)負(fù)荷,長(zhǎng)時(shí)間或超大負(fù)荷地運(yùn)行測(cè)試軟件,來(lái)測(cè)試被測(cè)系統(tǒng)的性能、可靠性、穩(wěn)定性等。目前,有很多的方法可以對(duì)系統(tǒng)進(jìn)行壓力測(cè)試,主要有利用壓測(cè)工具(如loadrunner、JMeter、Grinder等等)和通過(guò)編程實(shí)現(xiàn)兩種方法。但是,現(xiàn)有的絕大部分壓測(cè)工具僅能在本地的單臺(tái)壓測(cè)機(jī)器上運(yùn)行,測(cè)試工具的選擇比較復(fù)雜和多樣化,每個(gè)測(cè)試人員可能都需要搭建一個(gè)壓力測(cè)試工具的使用環(huán)境,造成了資源的浪費(fèi),缺乏統(tǒng)一的集中管理。同時(shí),單臺(tái)機(jī)器可能不能滿(mǎn)足大量的壓測(cè)任務(wù),只能手動(dòng)地將不同的壓測(cè)任務(wù)分配到不同的機(jī)器上執(zhí)行,效率較低。而通過(guò)編程實(shí)現(xiàn)則需要采用多線(xiàn)程或多進(jìn)程的方式生成大量的并發(fā)請(qǐng)求來(lái)模擬用戶(hù)行為,對(duì)被測(cè)系統(tǒng)進(jìn)行訪(fǎng)問(wèn),對(duì)測(cè)試人員的編程能力及技術(shù)功底有較高要求,并且需要耗費(fèi)大量的時(shí)間去設(shè)計(jì)實(shí)現(xiàn),同時(shí)實(shí)現(xiàn)的測(cè)試方法往往僅適用于單個(gè)系統(tǒng),可復(fù)用度較低,測(cè)試結(jié)果的可信度需要驗(yàn)證,工具的學(xué)習(xí)成本往往較高。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明實(shí)施例的目的在于提供一種分布式壓力測(cè)試方法和系統(tǒng),對(duì)壓力測(cè)試任務(wù)進(jìn)行集群化的統(tǒng)一管理,實(shí)現(xiàn)分布式的壓力測(cè)試,減少資源浪費(fèi)、降低壓力測(cè)試成本、提高壓力測(cè)試效率。

為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供了一種分布式壓力測(cè)試系統(tǒng),包括控制服務(wù)器和由至少兩個(gè)測(cè)試機(jī)組成的測(cè)試集群;

所述測(cè)試機(jī)包括負(fù)載均衡模塊;

所述負(fù)載均衡模塊,用于采集所述測(cè)試機(jī)的資源使用情況,根據(jù)所述資源使用情況得到所述測(cè)試機(jī)的加權(quán)優(yōu)先級(jí),并將所述測(cè)試機(jī)的IP地址和對(duì)應(yīng)的加權(quán)優(yōu)先級(jí)反饋給所述控制服務(wù)器;

所述控制服務(wù)器包括第一消息處理模塊;

所述第一消息處理模塊,用于根據(jù)各個(gè)測(cè)試機(jī)的加權(quán)優(yōu)先級(jí)和對(duì)應(yīng)的IP地址,將任務(wù)類(lèi)消息分發(fā)給加權(quán)優(yōu)先級(jí)最高的測(cè)試機(jī);

所述測(cè)試機(jī)還包括第二消息處理模塊和壓測(cè)引擎模塊;

所述第二消息處理模塊,用于接收所述控制服務(wù)器發(fā)送來(lái)的任務(wù)類(lèi)消息,從所述任務(wù)類(lèi)消息中解析出對(duì)應(yīng)的壓力測(cè)試任務(wù),并將所述壓力測(cè)試任務(wù)發(fā)送給所述壓測(cè)引擎模塊;

所述壓測(cè)引擎模塊,用于執(zhí)行所述壓力測(cè)試任務(wù)。

優(yōu)選地,所述第一消息處理模塊,還用于將配置類(lèi)消息廣播給所有測(cè)試機(jī);

所述第二消息處理模塊,還用于接收所述控制服務(wù)器發(fā)送來(lái)的配置類(lèi)消息,從所述配置類(lèi)消息中解析出對(duì)應(yīng)的配置操作任務(wù),并將所述配置操作任務(wù)發(fā)送給所述壓測(cè)引擎模塊;

所述壓測(cè)引擎模塊,還用于執(zhí)行所述配置操作任務(wù)。

進(jìn)一步地,所述控制服務(wù)還包括UI模塊;

所述UI模塊,用于根據(jù)用戶(hù)的UI操作生成所述任務(wù)類(lèi)消息或所述配置類(lèi)消息。

優(yōu)選地,所述分布式壓力測(cè)試系統(tǒng)還包括數(shù)據(jù)庫(kù);

所述數(shù)據(jù)庫(kù),用于存儲(chǔ)所述負(fù)載均衡模塊反饋的IP和對(duì)應(yīng)的加權(quán)優(yōu)先級(jí);

所述負(fù)載均衡模塊包括采集單元,用于采集測(cè)試集群中各個(gè)測(cè)試機(jī)的資源使用情況,根據(jù)所述資源使用情況得到所述測(cè)試機(jī)的加權(quán)優(yōu)先級(jí),并將所述測(cè)試機(jī)的IP地址和對(duì)應(yīng)的加權(quán)優(yōu)先級(jí)以心跳的方式上傳到數(shù)據(jù)庫(kù);

所述第一消息處理模塊包括獲取單元,用于當(dāng)所述控制服務(wù)器生成所述任務(wù)類(lèi)消息后,從所述數(shù)據(jù)庫(kù)中讀取所有測(cè)試機(jī)的加權(quán)優(yōu)先級(jí)和對(duì)應(yīng)的IP地址。

優(yōu)選地,所述資源使用情況包括CPU使用率、內(nèi)存使用率、磁盤(pán)使用率、網(wǎng)絡(luò)使用率以及接收到的請(qǐng)求量中的一種或多種組合。

相應(yīng)地,本發(fā)明實(shí)施例還提供了一種分布式壓力測(cè)試方法,包括:

采集測(cè)試集群中各個(gè)測(cè)試機(jī)的資源使用情況,根據(jù)所述資源使用情況得到所述測(cè)試機(jī)的加權(quán)優(yōu)先級(jí),并將所述測(cè)試機(jī)的IP地址和對(duì)應(yīng)的加權(quán)優(yōu)先級(jí)反饋給控制服務(wù)器;

所述控制服務(wù)器根據(jù)各個(gè)測(cè)試機(jī)的加權(quán)優(yōu)先級(jí)和對(duì)應(yīng)的IP地址,將任務(wù)類(lèi)消息分發(fā)給加權(quán)優(yōu)先級(jí)最高的測(cè)試機(jī);

所述測(cè)試機(jī)接收所述控制服務(wù)器發(fā)送來(lái)的任務(wù)類(lèi)消息,從所述任務(wù)類(lèi)消息中解析出對(duì)應(yīng)的壓力測(cè)試任務(wù),并執(zhí)行所述壓力測(cè)試任務(wù)。

優(yōu)選地,在所述采集測(cè)試集群中各個(gè)測(cè)試機(jī)的資源使用情況,根據(jù)所述資源使用情況得到所述測(cè)試機(jī)的加權(quán)優(yōu)先級(jí),并將所述測(cè)試機(jī)的IP地址和對(duì)應(yīng)的加權(quán)優(yōu)先級(jí)反饋給控制服務(wù)器之前,還包括:

所述控制服務(wù)器將配置類(lèi)消息廣播給所有測(cè)試機(jī);

所述測(cè)試機(jī)接收所述控制服務(wù)器發(fā)送來(lái)的配置類(lèi)消息,從所述配置類(lèi)消息中解析出對(duì)應(yīng)的配置操作任務(wù),并執(zhí)行所述配置操作任務(wù)。

進(jìn)一步地,在所述控制服務(wù)器將配置類(lèi)消息廣播給所有測(cè)試機(jī)之前,還包括:

所述控制服務(wù)器根據(jù)用戶(hù)的UI操作生成所述任務(wù)類(lèi)消息或所述配置類(lèi)消息。

優(yōu)選地,所述采集測(cè)試集群中各個(gè)測(cè)試機(jī)的資源使用情況,根據(jù)所述資源使用情況得到所述測(cè)試機(jī)的加權(quán)優(yōu)先級(jí),并將所述測(cè)試機(jī)的IP地址和對(duì)應(yīng)的加權(quán)優(yōu)先級(jí)反饋給控制服務(wù)器,包括:

采集測(cè)試集群中各個(gè)測(cè)試機(jī)的資源使用情況,根據(jù)所述資源使用情況得到所述測(cè)試機(jī)的加權(quán)優(yōu)先級(jí),并將所述測(cè)試機(jī)的IP地址和對(duì)應(yīng)的加權(quán)優(yōu)先級(jí)以心跳的方式上傳到數(shù)據(jù)庫(kù);

當(dāng)所述控制服務(wù)器生成所述任務(wù)類(lèi)消息后,從所述數(shù)據(jù)庫(kù)中讀取所有測(cè)試機(jī)的加權(quán)優(yōu)先級(jí)和對(duì)應(yīng)的IP地址。

優(yōu)選地,所述資源使用情況包括CPU使用率、內(nèi)存使用率、磁盤(pán)使用率、網(wǎng)絡(luò)使用率以及接收到的請(qǐng)求量中的一種或多種組合。

本發(fā)明通過(guò)分布式化的壓力測(cè)試系統(tǒng)使得測(cè)試人員可以同時(shí)運(yùn)行大量壓測(cè)任務(wù),有利于提高壓測(cè)效率。通過(guò)采集測(cè)試集群中各個(gè)測(cè)試機(jī)的資源使用情況,得到測(cè)試機(jī)的加權(quán)優(yōu)先級(jí),將壓力測(cè)試任務(wù)分發(fā)給加權(quán)優(yōu)先級(jí)最高的測(cè)試機(jī)去執(zhí)行,實(shí)現(xiàn)負(fù)載均衡,有利于提高資源利用率。

進(jìn)一步地,本發(fā)明通過(guò)壓測(cè)引擎模塊可以將壓測(cè)工具統(tǒng)一部署到測(cè)試機(jī),并對(duì)配置、測(cè)例、測(cè)試結(jié)果、測(cè)試報(bào)告等進(jìn)行統(tǒng)一管理,減少環(huán)境成本和維護(hù)成本,提高測(cè)試效率。

附圖說(shuō)明

圖1是本發(fā)明提供的分布式壓力測(cè)試系統(tǒng)的一個(gè)實(shí)施例的結(jié)構(gòu)圖;

圖2是如圖1所示實(shí)施例提供的消息處理架構(gòu)的一個(gè)實(shí)施例的架構(gòu)圖;

圖3是本發(fā)明提供的分布式壓力測(cè)試方法的一個(gè)實(shí)施例的流程圖。

具體實(shí)施方式

下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

參見(jiàn)圖1,是本發(fā)明提供的分布式壓力測(cè)試系統(tǒng)的一個(gè)實(shí)施例的結(jié)構(gòu)圖。

如圖1所示,所述分布式壓力測(cè)試系統(tǒng)包括控制服務(wù)器(Master)10和由至少兩個(gè)測(cè)試機(jī)(Slave-1~n)200組成的測(cè)試集群20;所述控制服務(wù)器10為系統(tǒng)的控制端,負(fù)責(zé)將壓測(cè)任務(wù)及配置信息發(fā)送至測(cè)試機(jī)并接收處理結(jié)果。所述測(cè)試機(jī)200為系統(tǒng)的被控端,設(shè)置有壓測(cè)引擎模塊,負(fù)責(zé)接收壓測(cè)任務(wù)和配置并對(duì)被測(cè)服務(wù)器進(jìn)行壓力測(cè)試。

所述測(cè)試機(jī)200包括負(fù)載均衡模塊201;

所述負(fù)載均衡模塊201,用于采集所述測(cè)試機(jī)200的資源使用情況,根據(jù)所述資源使用情況得到所述測(cè)試機(jī)200的加權(quán)優(yōu)先級(jí),并將所述測(cè)試機(jī)200的IP地址和對(duì)應(yīng)的加權(quán)優(yōu)先級(jí)反饋給所述控制服務(wù)器10;

在一種優(yōu)選的實(shí)施方式當(dāng)中,所述資源使用情況包括CPU、內(nèi)存、磁盤(pán)和網(wǎng)絡(luò)中的一種或多種資源的使用情況,加權(quán)優(yōu)先級(jí)(Weight)的計(jì)算方法如下:

其中,CPUp、MEMp、DISKp、NETp為各指標(biāo)的資源使用率,各指標(biāo)的加權(quán)系數(shù)K1~K4的大小可根據(jù)壓測(cè)引擎對(duì)資源的消耗程度設(shè)置,在一種優(yōu)選的實(shí)施方式當(dāng)中,K1=0.4,K2=0.3,K3=0.2,K4=0.1。當(dāng)CPU、內(nèi)存、磁盤(pán)、網(wǎng)絡(luò)中任何一個(gè)資源使用率大于90%(本領(lǐng)域技術(shù)人員可根據(jù)實(shí)際需要對(duì)該值進(jìn)行調(diào)整)時(shí),將該Slave節(jié)點(diǎn)從可用節(jié)點(diǎn)中移除(將其加權(quán)優(yōu)先值設(shè)為-1),直至該節(jié)點(diǎn)資源恢復(fù)可用狀態(tài)(資源使用率小于90%)。

在另一種優(yōu)選的實(shí)施方式當(dāng)中,所述資源使用情況包括測(cè)試機(jī)接收到的請(qǐng)求量,通過(guò)LVS-NAT等負(fù)載均衡方案計(jì)算所述測(cè)試機(jī)的加權(quán)優(yōu)先級(jí),以達(dá)到類(lèi)似的目的。與前述實(shí)施方式相比,本實(shí)施方式通過(guò)請(qǐng)求量來(lái)進(jìn)行負(fù)載均衡,前述實(shí)施方式則通過(guò)收集Slave節(jié)點(diǎn)的真實(shí)資源使用情況并計(jì)算加權(quán)優(yōu)先級(jí)進(jìn)行負(fù)載均衡,前者更能反映測(cè)試機(jī)的空閑狀態(tài)。

所述控制服務(wù)器10包括第一消息處理模塊101;

所述第一消息處理模塊101,用于根據(jù)各個(gè)測(cè)試機(jī)200的加權(quán)優(yōu)先級(jí)和對(duì)應(yīng)的IP地址,將任務(wù)類(lèi)消息分發(fā)給加權(quán)優(yōu)先級(jí)最高的測(cè)試機(jī)200;

所述測(cè)試機(jī)200還包括第二消息處理模塊202和壓測(cè)引擎模塊203;

所述第二消息處理模塊202,用于接收所述控制服務(wù)器10發(fā)送來(lái)的任務(wù)類(lèi)消息,從所述任務(wù)類(lèi)消息中解析出對(duì)應(yīng)的壓力測(cè)試任務(wù),并將所述壓力測(cè)試任務(wù)發(fā)送給所述壓測(cè)引擎模塊203;

所述壓測(cè)引擎模塊203,用于執(zhí)行所述壓力測(cè)試任務(wù)。所述壓測(cè)引擎模塊203是一個(gè)專(zhuān)門(mén)負(fù)責(zé)壓測(cè)任務(wù)執(zhí)行的模塊,負(fù)責(zé)接收壓測(cè)任務(wù)、構(gòu)造并發(fā)送請(qǐng)求對(duì)被測(cè)服務(wù)器進(jìn)行壓力測(cè)試。

在具體實(shí)施當(dāng)中,所述第一消息處理模塊101,還用于將配置類(lèi)消息廣播給所有測(cè)試機(jī)200;

所述第二消息處理模塊202,還用于接收所述控制服務(wù)器10發(fā)送來(lái)的配置類(lèi)消息,從所述配置類(lèi)消息中解析出對(duì)應(yīng)的配置操作任務(wù),并將所述配置操作任務(wù)發(fā)送給所述壓測(cè)引擎模塊203;

所述壓測(cè)引擎模塊203,還用于執(zhí)行所述配置操作任務(wù)。

本發(fā)明通過(guò)配置類(lèi)消息的廣播和執(zhí)行,可對(duì)slave節(jié)點(diǎn)進(jìn)行統(tǒng)一的部署和配置,保證所有分布式slave節(jié)點(diǎn)數(shù)據(jù)的完整性和一致性。

具體地,所述第二消息處理模塊202用于接收控制服務(wù)10發(fā)送來(lái)的消息(包括任務(wù)類(lèi)消息和配置類(lèi)消息),解析消息內(nèi)容,根據(jù)消息內(nèi)容產(chǎn)生對(duì)應(yīng)的處理任務(wù)(包括壓力測(cè)試任務(wù)和配置操作任務(wù)),并將處理任務(wù)交給壓測(cè)引擎模塊203執(zhí)行,并根據(jù)任務(wù)的執(zhí)行結(jié)果生成響應(yīng)消息返回給控制服務(wù)器10。所述壓測(cè)引擎模塊203負(fù)責(zé)執(zhí)行slave節(jié)點(diǎn)中第二消息處理模塊202接收到的任務(wù)(包括壓力測(cè)試任務(wù)和配置操作任務(wù)),主要包括壓測(cè)任務(wù)的配置文件生成、測(cè)例代碼生成、任務(wù)執(zhí)行和測(cè)試報(bào)告生成等。

在一種優(yōu)選的實(shí)施方式當(dāng)中,所述分布式壓力測(cè)試系統(tǒng)還包括數(shù)據(jù)庫(kù)(Mysql)30;

所述數(shù)據(jù)庫(kù)30,用于存儲(chǔ)所述負(fù)載均衡模塊201反饋的IP和對(duì)應(yīng)的加權(quán)優(yōu)先級(jí);

所述負(fù)載均衡模塊201包括采集單元,用于采集測(cè)試集群中各個(gè)測(cè)試機(jī)的資源使用情況,根據(jù)所述資源使用情況得到所述測(cè)試機(jī)的加權(quán)優(yōu)先級(jí),并將所述測(cè)試機(jī)的IP地址和對(duì)應(yīng)的加權(quán)優(yōu)先級(jí)以心跳的方式上傳到數(shù)據(jù)庫(kù)。

所述第一消息處理模塊包括獲取單元,用于當(dāng)所述控制服務(wù)器10生成所述任務(wù)類(lèi)消息后,從所述數(shù)據(jù)庫(kù)30中讀取所有測(cè)試機(jī)的加權(quán)優(yōu)先級(jí)和對(duì)應(yīng)的IP地址,以獲取加權(quán)優(yōu)先級(jí)最高的測(cè)試機(jī)的IP地址。

此外,壓測(cè)引擎模塊200還可進(jìn)一步將測(cè)試結(jié)果和被測(cè)系統(tǒng)所在服務(wù)器資源使用數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)中以供控制服務(wù)器10中UI模塊查詢(xún)和展示。

本實(shí)施方式當(dāng)中,負(fù)載均衡模塊201會(huì)以心跳的方式將其所在測(cè)試機(jī)的IP地址和加權(quán)優(yōu)先級(jí)存入數(shù)據(jù)庫(kù)30中。當(dāng)控制服務(wù)器10產(chǎn)生一個(gè)任務(wù)類(lèi)消息時(shí),會(huì)從數(shù)據(jù)庫(kù)30中讀取測(cè)試集群20的所有可用測(cè)試機(jī)節(jié)點(diǎn)的IP地址和加權(quán)優(yōu)先級(jí),并將該任務(wù)類(lèi)消息發(fā)送給較為空閑(加權(quán)優(yōu)先級(jí)最高)的機(jī)器。通過(guò)數(shù)據(jù)庫(kù)30作為數(shù)據(jù)傳輸?shù)拇鎯?chǔ)和中轉(zhuǎn),可根據(jù)壓測(cè)需求動(dòng)態(tài)的調(diào)整Slave節(jié)點(diǎn)的數(shù)量(只需在數(shù)據(jù)庫(kù)的Slave信息表中注冊(cè)添加測(cè)試機(jī)IP,并在該節(jié)點(diǎn)以其IP作為routing_key運(yùn)行第二消息處理模塊和壓測(cè)引擎模塊即可,無(wú)需重啟服務(wù))。

進(jìn)一步地,如圖1所示,所述控制服務(wù)還包括UI模塊102;

所述UI(User Interface,用戶(hù)界面)模塊102,用于根據(jù)用戶(hù)的UI操作生成所述任務(wù)類(lèi)消息或所述配置類(lèi)消息。

UI模塊102為用戶(hù)提供簡(jiǎn)便操作,這些操作可分為兩種類(lèi)型:任務(wù)類(lèi)操作和配置類(lèi)操作。任務(wù)類(lèi)操作是指只需在單臺(tái)slave節(jié)點(diǎn)執(zhí)行的操作,此類(lèi)操作不會(huì)破壞Slave節(jié)點(diǎn)數(shù)據(jù)的完整性和一致性,一般包括信息讀取和壓測(cè)任務(wù)執(zhí)行,如申請(qǐng)測(cè)例錄制代理、啟動(dòng)測(cè)例錄制、停止測(cè)例錄制、預(yù)覽測(cè)例代碼、啟動(dòng)測(cè)試任務(wù)、獲取任務(wù)log(日志)信息等。配置類(lèi)操作是指需在所有slave節(jié)點(diǎn)執(zhí)行的操作,這些操作必須保證所有分布式slave節(jié)點(diǎn)數(shù)據(jù)的完整性和一致性,一般包括任務(wù)創(chuàng)建編輯和配置下發(fā),如創(chuàng)建任務(wù)、編輯任務(wù)、刪除任務(wù)、任務(wù)配置、測(cè)例代碼保存等。

在一種優(yōu)選的實(shí)施方式當(dāng)中,所述控制服務(wù)器10中的第一消息處理模塊101和所述測(cè)試機(jī)200中的第二消息處理模塊202之間使用RabbitMQ作為消息系統(tǒng)媒介。RabbitMQ是一個(gè)消息代理,它可以為你的應(yīng)用提供一個(gè)通用的消息發(fā)送和接收平臺(tái),并且保證消息在傳輸過(guò)程中的安全。

在具體實(shí)施當(dāng)中,第一消息處理模塊101和第二消息處理模塊202集成RabbitMQ負(fù)責(zé)生成、發(fā)送、接收任務(wù)消息。Master節(jié)點(diǎn)的第一消息處理模塊101主要負(fù)責(zé)解析用戶(hù)在UI上的操作并將這些操作生成對(duì)應(yīng)的消息,然后通過(guò)RabbitMQ將消息發(fā)送給指定Slave節(jié)點(diǎn),并接收Slave節(jié)點(diǎn)通過(guò)RabbitMQ返回的響應(yīng)消息。Slave節(jié)點(diǎn)的第二消息處理模塊202則負(fù)責(zé)接收Master節(jié)點(diǎn)通過(guò)RabbitMQ發(fā)出的消息,并解析消息內(nèi)容生成對(duì)應(yīng)任務(wù)交給壓測(cè)引擎模塊執(zhí)行,并根據(jù)任務(wù)的執(zhí)行結(jié)果生成響應(yīng)消息通過(guò)RabbitMQ返回給Master。

消息處理架構(gòu)如圖2所示,整個(gè)架構(gòu)中有faout和direct兩種類(lèi)型的交換機(jī)(exchange),名稱(chēng)分別為config(配置)和task(任務(wù)),Slave節(jié)點(diǎn)的消息模塊啟動(dòng)時(shí)會(huì)聲明一個(gè)消息隊(duì)列(queue)。所有Slave節(jié)點(diǎn)的消息隊(duì)列會(huì)綁定(binding)到config交換機(jī),同時(shí)會(huì)將該消息隊(duì)列以Slave節(jié)點(diǎn)的IP作為綁定鍵(routing_key)綁定到task交換機(jī)。

Master發(fā)送消息時(shí)會(huì)聲明回調(diào)隊(duì)列(reply_to)和關(guān)聯(lián)標(biāo)識(shí)(correlation_id),關(guān)聯(lián)標(biāo)識(shí)為請(qǐng)求的uuid,當(dāng)Slave節(jié)點(diǎn)收到Master發(fā)送的消息并處理后會(huì)產(chǎn)生響應(yīng)消息,該響應(yīng)消息會(huì)通過(guò)回調(diào)隊(duì)列發(fā)送給Master。

當(dāng)Master產(chǎn)生配置類(lèi)消息時(shí),會(huì)將該消息發(fā)送給config交換機(jī),config交換機(jī)會(huì)將收到的消息廣播至所有與之綁定的Slave節(jié)點(diǎn)的消息隊(duì)列,從而達(dá)到配置分發(fā)和數(shù)據(jù)一致性的目的。當(dāng)Master產(chǎn)生任務(wù)類(lèi)消息時(shí),首先會(huì)從數(shù)據(jù)庫(kù)中讀取所有Slave節(jié)點(diǎn)的加權(quán)優(yōu)先級(jí)并獲取最為空閑(加權(quán)優(yōu)先級(jí)最高)的Slave節(jié)點(diǎn)的IP地址,然后將該IP地址作為routing_key并將該任務(wù)類(lèi)消息發(fā)送給task交換機(jī),task交換機(jī)會(huì)根據(jù)消息的routing_key將該消息路由到對(duì)應(yīng)Slave節(jié)點(diǎn)的消息隊(duì)列中,從而達(dá)到負(fù)載均衡的目的。

如圖2所示,假如測(cè)試集群中有IP為192.168.44.16和192.168.44.17兩臺(tái)Slave(測(cè)試機(jī))A和B,并且其負(fù)載均衡加權(quán)優(yōu)先級(jí)分別為50.0和60.0。當(dāng)用戶(hù)在UI上進(jìn)行配置類(lèi)操作(如配置保存)產(chǎn)生配置類(lèi)消息時(shí),Master便會(huì)將該消息發(fā)送給config交換機(jī),并通過(guò)config交換機(jī)將該消息廣播至A、B兩臺(tái)測(cè)試機(jī)。當(dāng)用戶(hù)在UI上進(jìn)行任務(wù)類(lèi)操作(如執(zhí)行測(cè)試任務(wù))產(chǎn)生任務(wù)類(lèi)消息時(shí),Master會(huì)從數(shù)據(jù)庫(kù)中讀取A、B兩臺(tái)Slave節(jié)點(diǎn)的加權(quán)優(yōu)先級(jí)并獲取最為空閑的B節(jié)點(diǎn)的IP地址192.168.44.17,然后將192.168.44.17作為routing_key并將該任務(wù)類(lèi)消息發(fā)送給task交換機(jī),task交換機(jī)便會(huì)將該消息只轉(zhuǎn)發(fā)給B節(jié)點(diǎn)。

本實(shí)施方式中消息處理采用異步通訊方式的RabbitMQ,可以減少用戶(hù)等待時(shí)間,進(jìn)一步提高壓測(cè)的效率。應(yīng)當(dāng)說(shuō)明的是,上述實(shí)施方式僅為本發(fā)明的一種優(yōu)選實(shí)施方式,本領(lǐng)域技術(shù)人員也可根據(jù)實(shí)際需要,采用其他方式以實(shí)現(xiàn)消息模塊之間的通訊,如作為一種次選的實(shí)施方式,也可通過(guò)API(Application Programming Interface,應(yīng)用程序編程接口)的方式進(jìn)行同步通訊,實(shí)現(xiàn)消息模塊之間的信息交互。

本發(fā)明為壓力測(cè)試提供一種分布式化及負(fù)載均衡的解決方案,主要解決以下問(wèn)題:壓測(cè)工具選取多樣、復(fù)雜問(wèn)題:本發(fā)明的壓測(cè)引擎模塊集成一種通用的壓力測(cè)試工具,所有的壓測(cè)引擎統(tǒng)一部署到測(cè)試集群的各個(gè)節(jié)點(diǎn)上,無(wú)需測(cè)試人員單獨(dú)搭建壓測(cè)工具的使用環(huán)境,所有測(cè)例的編寫(xiě)方式統(tǒng)一;任務(wù)、測(cè)例、結(jié)果分散問(wèn)題:測(cè)試人員生成的測(cè)試任務(wù)、配置、測(cè)例、測(cè)試結(jié)果、報(bào)告等由系統(tǒng)統(tǒng)一進(jìn)行管理;單臺(tái)機(jī)器不能滿(mǎn)足多任務(wù)、多系統(tǒng)壓測(cè)需求問(wèn)題:本發(fā)明提供負(fù)載均衡解決方案,可以根據(jù)測(cè)試集群中每個(gè)節(jié)點(diǎn)的資源使用情況將測(cè)試任務(wù)分配給測(cè)試集群中較為空閑的機(jī)器。

參見(jiàn)圖3,是本發(fā)明提供的分布式壓力測(cè)試方法的一個(gè)實(shí)施例的流程圖。本實(shí)施例的基本原理與圖1所示實(shí)施例一致,本實(shí)施例中未詳述之處可參見(jiàn)圖1所示實(shí)施例中的相關(guān)描述。

如圖2所示,所述分布式壓力測(cè)試方法,包括:

S1,采集測(cè)試集群中各個(gè)測(cè)試機(jī)的資源使用情況,根據(jù)所述資源使用情況得到所述測(cè)試機(jī)的加權(quán)優(yōu)先級(jí),并將所述測(cè)試機(jī)的IP地址和對(duì)應(yīng)的加權(quán)優(yōu)先級(jí)反饋給控制服務(wù)器;

S2,所述控制服務(wù)器根據(jù)各個(gè)測(cè)試機(jī)的加權(quán)優(yōu)先級(jí)和對(duì)應(yīng)的IP地址,將任務(wù)類(lèi)消息分發(fā)給加權(quán)優(yōu)先級(jí)最高的測(cè)試機(jī);

S3,所述測(cè)試機(jī)接收所述控制服務(wù)器發(fā)送來(lái)的任務(wù)類(lèi)消息,從所述任務(wù)類(lèi)消息中解析出對(duì)應(yīng)的壓力測(cè)試任務(wù),并執(zhí)行所述壓力測(cè)試任務(wù)。

其中,所述資源使用情況包括CPU使用率、內(nèi)存使用率、磁盤(pán)使用率、網(wǎng)絡(luò)使用率以及接收到的請(qǐng)求量中的一種或多種組合。

在具體實(shí)施當(dāng)中,在所述步驟S1之前,還包括:

S21,所述控制服務(wù)器將配置類(lèi)消息廣播給所有測(cè)試機(jī);

S22,所述測(cè)試機(jī)接收所述控制服務(wù)器發(fā)送來(lái)的配置類(lèi)消息,從所述配置類(lèi)消息中解析出對(duì)應(yīng)的配置操作任務(wù),并執(zhí)行所述配置操作任務(wù)。

進(jìn)一步地,在所述步驟S21之前,還包括:

S20,所述控制服務(wù)器根據(jù)用戶(hù)的UI操作生成所述任務(wù)類(lèi)消息或所述配置類(lèi)消息。

在一種優(yōu)選的實(shí)施方式當(dāng)中,所述步驟S1具體包括:

S11,采集測(cè)試集群中各個(gè)測(cè)試機(jī)的資源使用情況,根據(jù)所述資源使用情況得到所述測(cè)試機(jī)的加權(quán)優(yōu)先級(jí),并將所述測(cè)試機(jī)的IP地址和對(duì)應(yīng)的加權(quán)優(yōu)先級(jí)以心跳的方式上傳到數(shù)據(jù)庫(kù);

S12,當(dāng)所述控制服務(wù)器生成所述任務(wù)類(lèi)消息后,從所述數(shù)據(jù)庫(kù)中讀取所有測(cè)試機(jī)的加權(quán)優(yōu)先級(jí)和對(duì)應(yīng)的IP地址。

綜上所述,本發(fā)明通過(guò)分布式化的壓力測(cè)試系統(tǒng)使得測(cè)試人員可以同時(shí)運(yùn)行大量壓測(cè)任務(wù),有利于提高壓測(cè)效率。通過(guò)采集測(cè)試集群中各個(gè)測(cè)試機(jī)的資源使用情況,得到測(cè)試機(jī)的加權(quán)優(yōu)先級(jí),將壓力測(cè)試任務(wù)分發(fā)給加權(quán)優(yōu)先級(jí)最高的測(cè)試機(jī)去執(zhí)行,實(shí)現(xiàn)負(fù)載均衡,有利于提高資源利用率。本發(fā)明通過(guò)壓測(cè)引擎模塊可以將壓測(cè)工具統(tǒng)一部署到測(cè)試機(jī),并對(duì)配置、測(cè)例、測(cè)試結(jié)果、測(cè)試報(bào)告等進(jìn)行統(tǒng)一管理,減少環(huán)境成本和維護(hù)成本,提高測(cè)試效率。

需說(shuō)明的是,以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。另外,本發(fā)明提供的裝置實(shí)施例附圖中,模塊之間的連接關(guān)系表示它們之間具有通信連接,具體可以實(shí)現(xiàn)為一條或多條通信總線(xiàn)或信號(hào)線(xiàn)。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。

通過(guò)以上的實(shí)施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)專(zhuān)用硬件包括專(zhuān)用集成電路、專(zhuān)用CPU、專(zhuān)用存儲(chǔ)器、專(zhuān)用元器件等來(lái)實(shí)現(xiàn)。一般情況下,凡由計(jì)算機(jī)程序完成的功能都可以很容易地用相應(yīng)的硬件來(lái)實(shí)現(xiàn),而且,用來(lái)實(shí)現(xiàn)同一功能的具體硬件結(jié)構(gòu)也可以是多種多樣的,例如模擬電路、數(shù)字電路或?qū)S秒娐返?。但是,?duì)本發(fā)明而言更多情況下軟件程序?qū)崿F(xiàn)是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在可讀取的存儲(chǔ)介質(zhì)中,如計(jì)算機(jī)的軟盤(pán),U盤(pán)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤(pán)等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。

以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1