一種反向代理nginx測(cè)試系統(tǒng)及方法
【專利摘要】本發(fā)明提供一種反向代理nginx測(cè)試系統(tǒng)及方法,該系統(tǒng)包括:測(cè)試執(zhí)行器,向反向代理nginx服務(wù)器、kv存儲(chǔ)服務(wù)器、Http服務(wù)器分別發(fā)送Http請(qǐng)求;kv存儲(chǔ)服務(wù)器確定所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn);反向代理nginx服務(wù)器從所述kv存儲(chǔ)服務(wù)器中獲取所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn),向Http服務(wù)器發(fā)送Http請(qǐng)求,獲取測(cè)試結(jié)果反饋給測(cè)試執(zhí)行器;Http服務(wù)器,接收反向代理nginx服務(wù)器發(fā)送的Http請(qǐng)求,反饋測(cè)試結(jié)果給反向代理nginx服務(wù)器;并接收測(cè)試執(zhí)行器直接發(fā)送的Http請(qǐng)求,反饋直接結(jié)果給該測(cè)試執(zhí)行器;測(cè)試執(zhí)行器,還用于對(duì)比測(cè)試結(jié)果和直接結(jié)果。本技術(shù)能夠減少反向代理服務(wù)器及模塊測(cè)試的前期準(zhǔn)備以及后期維護(hù)的復(fù)雜度,同時(shí)解除測(cè)試執(zhí)行端與被測(cè)反向代理服務(wù)器部署在同一實(shí)體機(jī)上的限制。
【專利說(shuō)明】
一種反向代理ngi nx測(cè)試系統(tǒng)及方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種反向代理nginx測(cè)試系統(tǒng)及方法。
【背景技術(shù)】
[0002]反向代理:反向代理是指用反向代理服務(wù)器來(lái)接收internet(互聯(lián)網(wǎng))上的連接請(qǐng)求,然后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給internet上請(qǐng)求連接的客戶端。
[0003]反向代理測(cè)試:限定于常用的反向代理nginx(是一款輕量級(jí)的Web服務(wù)器/反向代理服務(wù)器及電子郵件(MAP/P0P3)代理服務(wù)器,并在一個(gè)BSD-1ike協(xié)議下發(fā)行)的測(cè)試。反向代理的測(cè)試需要不同的被代理節(jié)點(diǎn)返回不同的信息,依據(jù)返回不同的結(jié)果來(lái)進(jìn)行驗(yàn)證代理功能是否正常。通常的操作為修改代理服務(wù)器的配置文件指定代理節(jié)點(diǎn),啟動(dòng)代理服務(wù),發(fā)送請(qǐng)求,請(qǐng)求由代理服務(wù)器轉(zhuǎn)發(fā)至相應(yīng)后端,響應(yīng)返回,結(jié)果驗(yàn)證,本次測(cè)試執(zhí)行結(jié)束關(guān)閉服務(wù)器。為了方便修改配置文件,其部署方式通常是測(cè)試執(zhí)行器與反向代理服務(wù)器部署到同一臺(tái)實(shí)體機(jī)上,而網(wǎng)絡(luò)上真實(shí)環(huán)境則是分屬于不同實(shí)體機(jī)上,目前條件無(wú)法做到。同部署在一臺(tái)實(shí)體機(jī)上的一次case(事件)執(zhí)行的測(cè)試執(zhí)行器基本操作流程為:修改配置文件-啟動(dòng)代理服務(wù)-發(fā)送請(qǐng)求-驗(yàn)證響應(yīng)結(jié)果-停止服務(wù)。
[0004]Httpserver (Http服務(wù)器):根據(jù)指定要求能夠返回指定結(jié)果或響應(yīng)的一系列Http(HyperText Transfer Protocol,超文本傳輸協(xié)議)服務(wù)器。測(cè)試過(guò)程中,對(duì)于Httpserver的安排有兩種:
[0005]1.Httpserver同反向代理nginx同一臺(tái)物理機(jī)部署,節(jié)省資源,但服務(wù)部署混亂。
[0006]2.Httpserver同反向代理nginx分別部署在不同的物理機(jī)上,服務(wù)分離,多數(shù)采用此方法部署。
[0007]這兩種方法都可用于反向代理不同功能的測(cè)試,由于反向代理服務(wù)與反向代理后端節(jié)點(diǎn)多數(shù)采用分開(kāi)部署的方式,第2種方法,更能模擬真實(shí)使用情況。
[0008]測(cè)試執(zhí)行器:根據(jù)被測(cè)反向代理組織的一系列操作集合,本文統(tǒng)稱測(cè)試執(zhí)行器。測(cè)試過(guò)程中,對(duì)于測(cè)試執(zhí)行器和被測(cè)反向代理nginx的部署方式有兩種:
[0009]1.同物理機(jī)部署,便于操作,將配置文件的反向代理節(jié)點(diǎn)設(shè)定好,通過(guò)測(cè)試執(zhí)行器操作反向代理nginx配置變更切換代理后端節(jié)點(diǎn)。
[0010]2.不同物理機(jī)部署,在不借用外來(lái)服務(wù)條件下無(wú)法實(shí)現(xiàn)被測(cè)反向代理的配置變更。
[0011]因此,多數(shù)被測(cè)反向代理與測(cè)試執(zhí)行器的部署方式多為同物理機(jī)部署。
[0012]現(xiàn)有技術(shù)反向代理nginx測(cè)試方法的缺點(diǎn)有:
[0013]缺點(diǎn)一:雖然都可以通過(guò)Http協(xié)議請(qǐng)求nginx,根據(jù)實(shí)際結(jié)果與預(yù)期結(jié)果進(jìn)行對(duì)比驗(yàn)證模塊的正確性,但是其后端節(jié)點(diǎn)存在的多樣性,需根據(jù)不同服務(wù)測(cè)試不同功能,此時(shí)需要頻繁變更配置文件來(lái)滿足此項(xiàng)要求;
[0014]缺點(diǎn)二:根據(jù)功能進(jìn)行代理節(jié)點(diǎn)切換時(shí)需提前準(zhǔn)備變更的配置文件,此時(shí)的自動(dòng)化用例需要維護(hù)大量的配置文件,測(cè)試維護(hù)代價(jià)較高。
[0015]缺點(diǎn)三:目前測(cè)試反向代理時(shí)的部署方式為測(cè)試執(zhí)行器需與被測(cè)代理部署在同一臺(tái)機(jī)器,無(wú)法實(shí)現(xiàn)異地部署,不能夠更好的模擬線上真實(shí)環(huán)境。
[0016]綜上可見(jiàn),如何解決反向代理測(cè)試過(guò)程中的配置文件量大而復(fù)雜的技術(shù)問(wèn)題,這是本領(lǐng)域的技術(shù)人員亟待解決的一個(gè)技術(shù)難題。
【發(fā)明內(nèi)容】
[0017]本發(fā)明實(shí)施例提供一種反向代理nginx測(cè)試系統(tǒng)及方法,以解決測(cè)試過(guò)程中切換反向代理節(jié)點(diǎn)時(shí)造成的配置文件頻繁變更導(dǎo)致nginx服務(wù)頻繁重啟問(wèn)題,以及因此產(chǎn)生的大量配置文件維護(hù)繁重的問(wèn)題,同時(shí)還可解決測(cè)試過(guò)程中對(duì)測(cè)試執(zhí)行器與被測(cè)反向代理部署在同一臺(tái)實(shí)體機(jī)的限制問(wèn)題。
[0018]一方面,本發(fā)明實(shí)施例提供了一種反向代理nginx測(cè)試系統(tǒng)組成結(jié)構(gòu)示意圖,所述系統(tǒng)包括:測(cè)試執(zhí)行器、反向代理nginx服務(wù)器、kv存儲(chǔ)服務(wù)器、Http服務(wù)器,其中:
[0019]測(cè)試執(zhí)行器,用于向反向代理nginx服務(wù)器、kv存儲(chǔ)服務(wù)器、Http服務(wù)器分別發(fā)送Http請(qǐng)求;
[°02°] kv存儲(chǔ)服務(wù)器,用于根據(jù)從測(cè)試執(zhí)行器接收到的Http請(qǐng)求,確定所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn);
[0021]反向代理nginx服務(wù)器,用于從所述kv存儲(chǔ)服務(wù)器中獲取所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn),根據(jù)從測(cè)試執(zhí)行器接收到的Http請(qǐng)求、以及獲取到的所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn),向Http服務(wù)器發(fā)送Http請(qǐng)求,獲取測(cè)試結(jié)果反饋給測(cè)試執(zhí)行器;
[0022]Http服務(wù)器,用于接收反向代理nginx服務(wù)器發(fā)送的Http請(qǐng)求,反饋測(cè)試結(jié)果給反向代理nginx服務(wù)器;并接收測(cè)試執(zhí)行器直接發(fā)送的Http請(qǐng)求,反饋直接結(jié)果給該測(cè)試執(zhí)行器;
[0023]測(cè)試執(zhí)行器,還用于對(duì)比所述測(cè)試結(jié)果和所述直接結(jié)果,進(jìn)行反向代理nginx測(cè)試驗(yàn)證。
[0024]另一方面,本發(fā)明實(shí)施例提供了一種反向代理nginx測(cè)試方法,所述方法應(yīng)用的反向代理nginx測(cè)試系統(tǒng)包括:測(cè)試執(zhí)行器、反向代理nginx服務(wù)器、kv存儲(chǔ)服務(wù)器、Http服務(wù)器,所述方法包括:
[0025]通過(guò)測(cè)試執(zhí)行器向反向代理nginx服務(wù)器、kv存儲(chǔ)服務(wù)器、Http服務(wù)器分別發(fā)送Http請(qǐng)求;
[0026]利用kv存儲(chǔ)服務(wù)器,根據(jù)從測(cè)試執(zhí)行器接收到的Http請(qǐng)求,確定所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn);
[0027]利用反向代理nginx服務(wù)器,從所述kv存儲(chǔ)服務(wù)器中獲取所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn),根據(jù)從測(cè)試執(zhí)行器接收到的Http請(qǐng)求、以及獲取到的所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn),向Http服務(wù)器發(fā)送Http請(qǐng)求,獲取測(cè)試結(jié)果反饋給測(cè)試執(zhí)行器;
[0028]利用Http服務(wù)器接收反向代理nginx服務(wù)器發(fā)送的Http請(qǐng)求,反饋測(cè)試結(jié)果給反向代理nginx服務(wù)器;并接收測(cè)試執(zhí)行器直接發(fā)送的Http請(qǐng)求,反饋直接結(jié)果給該測(cè)試執(zhí)行器;
[0029]利用測(cè)試執(zhí)行器對(duì)比所述測(cè)試結(jié)果和所述直接結(jié)果,進(jìn)行反向代理nginx測(cè)試驗(yàn)證。
[0030]上述技術(shù)方案具有如下有益效果:使用kv存儲(chǔ)服務(wù)器、被測(cè)反向代理nginx服務(wù)器、nginx-upsync-module模塊以及Httpserver構(gòu)建反向代理nignx服務(wù)器測(cè)試的新方法及系統(tǒng),kv存儲(chǔ)服務(wù)器存儲(chǔ)反向代理的后端節(jié)點(diǎn)信息,nginx-upsync-module模塊用于更新反向代理服務(wù)器的后端節(jié)點(diǎn)、Httpserver用于模擬一系列Http協(xié)議的Webserver。本技術(shù)能夠減少反向代理服務(wù)器及模塊測(cè)試的前期準(zhǔn)備以及后期維護(hù)的復(fù)雜度,同時(shí)解除測(cè)試執(zhí)行端與被測(cè)反向代理服務(wù)器部署在同一實(shí)體機(jī)上的限制。
【附圖說(shuō)明】
[0031]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0032]圖1為本發(fā)明實(shí)施例一種反向代理nginx測(cè)試系統(tǒng)組成結(jié)構(gòu)示意圖;
[0033]圖2為本發(fā)明實(shí)施例一種反向代理nginx測(cè)試方法流程圖;
[0034]圖3為本發(fā)明應(yīng)用實(shí)例反向代理nginx測(cè)試方法示意圖。
【具體實(shí)施方式】
[0035]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0036]如圖1所示,為本發(fā)明實(shí)施例一種反向代理nginx測(cè)試系統(tǒng)組成結(jié)構(gòu)示意圖,所述系統(tǒng)包括:測(cè)試執(zhí)行器11、反向代理nginx服務(wù)器12、kv(key-value,鍵值)存儲(chǔ)服務(wù)器13、Http服務(wù)器14,其中:
[0037]測(cè)試執(zhí)行器11,用于向反向代理nginx服務(wù)器12、kv存儲(chǔ)服務(wù)器13、Http服務(wù)器14分別發(fā)送Http請(qǐng)求;
[0038]kv存儲(chǔ)服務(wù)器13,用于根據(jù)從測(cè)試執(zhí)行器11接收到的Http請(qǐng)求,確定所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn);
[0039]反向代理nginx服務(wù)器12,用于從所述kv存儲(chǔ)服務(wù)器13中獲取所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn),根據(jù)從測(cè)試執(zhí)行器接收到的Http請(qǐng)求、以及獲取到的所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn),向Http服務(wù)器14發(fā)送Http請(qǐng)求,獲取測(cè)試結(jié)果反饋給測(cè)試執(zhí)行器11;
[°04°] Http服務(wù)器14,用于接收反向代理nginx服務(wù)器12發(fā)送的Http請(qǐng)求,反饋測(cè)試結(jié)果給反向代理nginx服務(wù)器12;并接收測(cè)試執(zhí)行器11直接發(fā)送的Http請(qǐng)求,反饋直接結(jié)果給該測(cè)試執(zhí)行器11;
[0041]測(cè)試執(zhí)行器11,還用于對(duì)比所述測(cè)試結(jié)果和所述直接結(jié)果,進(jìn)行反向代理nginx測(cè)試驗(yàn)證。
[0042]優(yōu)選地,所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn)為可調(diào)用的應(yīng)用程序編程接口 API。
[0043]優(yōu)選地,所述反向代理nginx服務(wù)器12,具體用于根據(jù)從測(cè)試執(zhí)行器接收到的Http請(qǐng)求,利用nginx-upsync-module模塊從所述kv存儲(chǔ)服務(wù)器中獲取所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn)。
[0044]優(yōu)選地,所述反向代理nginx服務(wù)器12,進(jìn)一步具體用于根據(jù)從測(cè)試執(zhí)行器接收到的Http請(qǐng)求,利用nginx-upsync-module模塊定期查詢所述kv存儲(chǔ)服務(wù)器中所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn)是否變更,若所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn)有變更,則從所述kv存儲(chǔ)服務(wù)器中獲取所述Http請(qǐng)求對(duì)應(yīng)的最新的后端節(jié)點(diǎn)。
[0045]優(yōu)選地,所述反向代理nginx服務(wù)器12,具體用于根據(jù)所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn),通過(guò)哈希hash策略向Http服務(wù)器發(fā)送Http請(qǐng)求,獲取測(cè)試結(jié)果反饋給測(cè)試執(zhí)行器。
[0046]對(duì)應(yīng)于上述系統(tǒng)所述實(shí)施例,如圖2所示,為本發(fā)明實(shí)施例一種反向代理nginx測(cè)試方法流程圖,所述方法應(yīng)用的反向代理nginx測(cè)試系統(tǒng)包括:測(cè)試執(zhí)行器、反向代理nginx服務(wù)器、kv存儲(chǔ)服務(wù)器、Ht tp服務(wù)器,所述方法包括:
[0047]201、通過(guò)測(cè)試執(zhí)行器向反向代理nginx服務(wù)器、kv存儲(chǔ)服務(wù)器、Http服務(wù)器分別發(fā)送Http請(qǐng)求;
[0048]202、利用kv存儲(chǔ)服務(wù)器,根據(jù)從測(cè)試執(zhí)行器接收到的Http請(qǐng)求,確定所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn);
[0049]203、利用反向代理nginx服務(wù)器,從所述kv存儲(chǔ)服務(wù)器中獲取所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn),根據(jù)從測(cè)試執(zhí)行器接收到的Http請(qǐng)求、以及獲取到的所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn),向Http服務(wù)器發(fā)送Http請(qǐng)求,獲取測(cè)試結(jié)果反饋給測(cè)試執(zhí)行器;
[°05°] 204、利用Http服務(wù)器接收反向代理nginx服務(wù)器發(fā)送的Http請(qǐng)求,反饋測(cè)試結(jié)果給反向代理nginx服務(wù)器;并接收測(cè)試執(zhí)行器直接發(fā)送的Http請(qǐng)求,反饋直接結(jié)果給該測(cè)試執(zhí)行器;
[0051]205、利用測(cè)試執(zhí)行器對(duì)比所述測(cè)試結(jié)果和所述直接結(jié)果,進(jìn)行反向代理nginx測(cè)試驗(yàn)證。
[0052]優(yōu)選地,所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn)為可調(diào)用的應(yīng)用程序編程接口 API。
[0053]優(yōu)選地,利用反向代理nginx服務(wù)器,根據(jù)從測(cè)試執(zhí)行器接收到的Http請(qǐng)求,利用nginx-upsync-module模塊從所述kv存儲(chǔ)服務(wù)器中獲取所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn)。
[0054]優(yōu)選地,利用反向代理nginx服務(wù)器,根據(jù)從測(cè)試執(zhí)行器接收到的Http請(qǐng)求,利用nginx-upsync-module模塊定期查詢所述kv存儲(chǔ)服務(wù)器中所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn)是否變更,若所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn)有變更,則從所述kv存儲(chǔ)服務(wù)器中獲取所述Http請(qǐng)求對(duì)應(yīng)的最新的后端節(jié)點(diǎn)。
[0055]優(yōu)選地,利用反向代理nginx服務(wù)器根據(jù)所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn),通過(guò)哈希hash策略向Http服務(wù)器發(fā)送Http請(qǐng)求,獲取測(cè)試結(jié)果反饋給測(cè)試執(zhí)行器。
[0056]上述技術(shù)方案具有如下有益效果:使用kv存儲(chǔ)服務(wù)器、被測(cè)反向代理nginx服務(wù)器、nginx-upsync-module模塊以及Httpserver構(gòu)建反向代理nignx服務(wù)器測(cè)試的新方法及系統(tǒng),kv存儲(chǔ)服務(wù)器存儲(chǔ)反向代理的后端節(jié)點(diǎn)信息,nginx-upsync-module模塊用于更新反向代理服務(wù)器的后端節(jié)點(diǎn)、Httpserver用于模擬一系列Http協(xié)議的Webserver。本技術(shù)能夠減少反向代理服務(wù)器及模塊測(cè)試的前期準(zhǔn)備以及后期維護(hù)的復(fù)雜度,同時(shí)解除測(cè)試執(zhí)行端與被測(cè)反向代理服務(wù)器部署在同一實(shí)體機(jī)上的限制。
[0057]以下結(jié)合應(yīng)用實(shí)例對(duì)本發(fā)明實(shí)施例上述技術(shù)方案進(jìn)行詳細(xì)說(shuō)明:
[0058]本發(fā)明應(yīng)用實(shí)例動(dòng)態(tài)變更反向代理節(jié)點(diǎn)功能:針對(duì)反向代理nginx功能模塊,目前有微博開(kāi)發(fā)的nginx-upsync-module模塊,可同kv(鍵值)存儲(chǔ)服務(wù)器進(jìn)行交互拉取最新配置文件并更新反向代理后端節(jié)點(diǎn)信息。該模塊作為nginx開(kāi)發(fā)的模塊,使用-add-module進(jìn)行添加編譯,協(xié)同kv存儲(chǔ)服務(wù)器與nginx交互動(dòng)態(tài)變更nginx的反向代理節(jié)點(diǎn)。
[0059]kv存儲(chǔ)服務(wù)器:支持key-value (鍵值)對(duì)存儲(chǔ)的服務(wù),同時(shí)提供完整的API(Applicat1n Programming Interface,應(yīng)用程序編程接口)可供調(diào)用,如consul、etcd等服務(wù)。
[0060]測(cè)試執(zhí)行器:根據(jù)被測(cè)功能進(jìn)行錄入,其可能執(zhí)行的操作有,更改配置文件、啟動(dòng)反向代理服務(wù)、發(fā)送請(qǐng)求、請(qǐng)求驗(yàn)證,關(guān)閉反向代理服務(wù)等。
[0061]本發(fā)明應(yīng)用實(shí)例在解決測(cè)試過(guò)程中切換反向代理節(jié)點(diǎn)時(shí)造成的配置文件頻繁變更導(dǎo)致nginx服務(wù)頻繁重啟問(wèn)題、以及因此產(chǎn)生的大量配置文件維護(hù)繁重的問(wèn)題,同時(shí)還可解決測(cè)試過(guò)程中對(duì)測(cè)試執(zhí)行器與被測(cè)反向代理nginx服務(wù)器部署在同一臺(tái)實(shí)體機(jī)的限制問(wèn)題。
[0062]本發(fā)明應(yīng)用實(shí)例包含:測(cè)試執(zhí)行器、kv存儲(chǔ)服務(wù)器(etccUconsul等)、反向代理nginx月艮務(wù)器、nginx—upsync—module 模塊、Httpserver:
[0063]kv存儲(chǔ)服務(wù)器:kv存數(shù)服務(wù)器(如consuUetcd等)提供可調(diào)用的API,可用于對(duì)節(jié)點(diǎn)的增刪改查操作,如下圖所示,本文以consul為例進(jìn)行說(shuō)明,可使用consul的API接口對(duì)后端節(jié)點(diǎn)進(jìn)行操作,存儲(chǔ)依據(jù)反向代理的節(jié)點(diǎn)作為key Jnupstream/ test/127.0.0.1:1234,value為該節(jié)點(diǎn)的屬性等信息,如權(quán)重,失敗次數(shù)等。通過(guò)其API可實(shí)時(shí)對(duì)各反向代理節(jié)點(diǎn)進(jìn)行增刪改查操作。
[0064]反向代理nginx服務(wù)器及模塊使用原理:通過(guò)使用-add-module = nginx-upsync-moduIe將動(dòng)態(tài)模塊添加到本次編譯的nginx服務(wù)器內(nèi)部,該模塊定期同kv存儲(chǔ)服務(wù)器(consul)進(jìn)行交互來(lái)確定當(dāng)前反向代理業(yè)務(wù)下是否有節(jié)點(diǎn)變動(dòng),若節(jié)點(diǎn)有更新,則將變動(dòng)信息同步到反向代理nginx后端,進(jìn)行實(shí)時(shí)更新。當(dāng)有請(qǐng)求訪問(wèn)nginx時(shí),nginx根據(jù)url反向代理至相關(guān)節(jié)點(diǎn),再根據(jù)hash(哈希)策略轉(zhuǎn)發(fā)至指定Httpserver端。
[0065]Httpserver:即返回指定內(nèi)容的一系列Hhttpserver,通常可根據(jù)反向代理功能準(zhǔn)備不同Httpserver,通過(guò)其返回結(jié)果查看內(nèi)容是否一致,也可通過(guò)Httpserver模擬網(wǎng)絡(luò)延遲等操作。
[ΟΟ??] nginx-upsync-module作為反向代理nginx服務(wù)器的nginx模塊,可向kv存儲(chǔ)服務(wù)器發(fā)送請(qǐng)求并驗(yàn)證key是否變更功能。如圖3所示,為本發(fā)明應(yīng)用實(shí)例反向代理nginx測(cè)試方法示意圖,內(nèi)置有nginx-upsync-module模塊的反向代理nginx服務(wù)器,根據(jù)所述Http請(qǐng)求,利用nginx-upsync-module模塊定期查詢所述kv存儲(chǔ)服務(wù)器中所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn)是否變更,若所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn)有變更,則從所述kv存儲(chǔ)服務(wù)器中獲取對(duì)應(yīng)key的value,即獲取所述Http請(qǐng)求對(duì)應(yīng)的最新的后端節(jié)點(diǎn);若未變更,貝Ij周期性詢問(wèn)kv存儲(chǔ)服務(wù)器。
[0067]舉例說(shuō)明:
[0068]現(xiàn)對(duì)某一個(gè)反向代理業(yè)務(wù)可能返回的不同結(jié)果以及不同結(jié)果的組合進(jìn)行測(cè)試,該業(yè)務(wù)連接超時(shí)、響應(yīng)超時(shí)、返回亂碼、返回空、返回正確的結(jié)果、返回失敗的結(jié)果等。通過(guò)API接口,將指定功能的Httpserver添加到kv存儲(chǔ)服務(wù)器,如將返回亂碼結(jié)果的Httpserver添加到kv存儲(chǔ)服務(wù)器。通過(guò)反向代理nginx服務(wù)器發(fā)送Http請(qǐng)求到Httpserver獲取測(cè)試結(jié)果。另外,直接發(fā)送Http請(qǐng)求到Httpserver獲取直接結(jié)果。最后,將測(cè)試結(jié)果與直接結(jié)果進(jìn)行對(duì)比驗(yàn)證。
[0069]與最接近的現(xiàn)有技術(shù)相比:現(xiàn)有技術(shù)測(cè)試中,假設(shè)可能出現(xiàn)的結(jié)果為n,通過(guò)η條結(jié)果可能產(chǎn)生的不同組合為2η-1,那么就需要準(zhǔn)備以上組合數(shù)量的配置文件,測(cè)試前期準(zhǔn)備復(fù)雜,測(cè)試維護(hù)繁重。而本發(fā)明應(yīng)用實(shí)例還可解決測(cè)試環(huán)部署方式的限制,原有部署方式為測(cè)試執(zhí)行端與被測(cè)反向代理服務(wù)器部署在同一實(shí)體機(jī)上,本方法打破此限制,可隨意部署。本技術(shù)使用kv存儲(chǔ)服務(wù)器、被測(cè)反向代理nginx服務(wù)器、nginx-upsync-module模塊以及Httpserver構(gòu)建反向代理nignx服務(wù)器測(cè)試的新方法及系統(tǒng),kv存儲(chǔ)服務(wù)器存儲(chǔ)反向代理節(jié)點(diǎn)信息,nginx-upsync-module用于更新反向代理服務(wù)器的節(jié)點(diǎn)、Httpserver用于模擬一系列Http協(xié)議的Webserver。本技術(shù)能夠減少反向代理服務(wù)器及模塊測(cè)試的前期準(zhǔn)備以及后期維護(hù)的復(fù)雜度,同時(shí)解除測(cè)試執(zhí)行端與被測(cè)反向代理服務(wù)器部署在同一實(shí)體機(jī)上的限制。根據(jù)以上操作可在一份配置文件的基礎(chǔ)上隨意組合測(cè)試條件,不需要重啟nginx。
[0070]應(yīng)該明白,公開(kāi)的過(guò)程中的步驟的特定順序或?qū)哟问鞘纠苑椒ǖ膶?shí)例?;谠O(shè)計(jì)偏好,應(yīng)該理解,過(guò)程中的步驟的特定順序或?qū)哟慰梢栽诓幻撾x本公開(kāi)的保護(hù)范圍的情況下得到重新安排。所附的方法權(quán)利要求以示例性的順序給出了各種步驟的要素,并且不是要限于所述的特定順序或?qū)哟巍?br>[0071]在上述的詳細(xì)描述中,各種特征一起組合在單個(gè)的實(shí)施方案中,以簡(jiǎn)化本公開(kāi)。不應(yīng)該將這種公開(kāi)方法解釋為反映了這樣的意圖,即,所要求保護(hù)的主題的實(shí)施方案需要比清楚地在每個(gè)權(quán)利要求中所陳述的特征更多的特征。相反,如所附的權(quán)利要求書(shū)所反映的那樣,本發(fā)明處于比所公開(kāi)的單個(gè)實(shí)施方案的全部特征少的狀態(tài)。因此,所附的權(quán)利要求書(shū)特此清楚地被并入詳細(xì)描述中,其中每項(xiàng)權(quán)利要求獨(dú)自作為本發(fā)明單獨(dú)的優(yōu)選實(shí)施方案。
[0072]為使本領(lǐng)域內(nèi)的任何技術(shù)人員能夠?qū)崿F(xiàn)或者使用本發(fā)明,上面對(duì)所公開(kāi)實(shí)施例進(jìn)行了描述。對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō);這些實(shí)施例的各種修改方式都是顯而易見(jiàn)的,并且本文定義的一般原理也可以在不脫離本公開(kāi)的精神和保護(hù)范圍的基礎(chǔ)上適用于其它實(shí)施例。因此,本公開(kāi)并不限于本文給出的實(shí)施例,而是與本申請(qǐng)公開(kāi)的原理和新穎性特征的最廣范圍相一致。
[0073]上文的描述包括一個(gè)或多個(gè)實(shí)施例的舉例。當(dāng)然,為了描述上述實(shí)施例而描述部件或方法的所有可能的結(jié)合是不可能的,但是本領(lǐng)域普通技術(shù)人員應(yīng)該認(rèn)識(shí)到,各個(gè)實(shí)施例可以做進(jìn)一步的組合和排列。因此,本文中描述的實(shí)施例旨在涵蓋落入所附權(quán)利要求書(shū)的保護(hù)范圍內(nèi)的所有這樣的改變、修改和變型。此外,就說(shuō)明書(shū)或權(quán)利要求書(shū)中使用的術(shù)語(yǔ)“包含”,該詞的涵蓋方式類似于術(shù)語(yǔ)“包括”,就如同“包括,”在權(quán)利要求中用作銜接詞所解釋的那樣。此外,使用在權(quán)利要求書(shū)的說(shuō)明書(shū)中的任何一個(gè)術(shù)語(yǔ)“或者”是要表示“非排它性的或者”。
[0074]本領(lǐng)域技術(shù)人員還可以了解到本發(fā)明實(shí)施例列出的各種說(shuō)明性邏輯塊(illustrative logical block),單元,和步驟可以通過(guò)電子硬件、電腦軟件,或兩者的結(jié)合進(jìn)行實(shí)現(xiàn)。為清楚展示硬件和軟件的可替換性(:^丨6代1^1^6313;[1;^7),上述的各種說(shuō)明性部件(illustrative components),單元和步驟已經(jīng)通用地描述了它們的功能。這樣的功能是通過(guò)硬件還是軟件來(lái)實(shí)現(xiàn)取決于特定的應(yīng)用和整個(gè)系統(tǒng)的設(shè)計(jì)要求。本領(lǐng)域技術(shù)人員可以對(duì)于每種特定的應(yīng)用,可以使用各種方法實(shí)現(xiàn)所述的功能,但這種實(shí)現(xiàn)不應(yīng)被理解為超出本發(fā)明實(shí)施例保護(hù)的范圍。
[0075]本發(fā)明實(shí)施例中所描述的各種說(shuō)明性的邏輯塊,或單元都可以通過(guò)通用處理器,數(shù)字信號(hào)處理器,專用集成電路(ASIC),現(xiàn)場(chǎng)可編程門陣列或其它可編程邏輯裝置,離散門或晶體管邏輯,離散硬件部件,或上述任何組合的設(shè)計(jì)來(lái)實(shí)現(xiàn)或操作所描述的功能。通用處理器可以為微處理器,可選地,該通用處理器也可以為任何傳統(tǒng)的處理器、控制器、微控制器或狀態(tài)機(jī)。處理器也可以通過(guò)計(jì)算裝置的組合來(lái)實(shí)現(xiàn),例如數(shù)字信號(hào)處理器和微處理器,多個(gè)微處理器,一個(gè)或多個(gè)微處理器聯(lián)合一個(gè)數(shù)字信號(hào)處理器核,或任何其它類似的配置來(lái)實(shí)現(xiàn)。
[0076]本發(fā)明實(shí)施例中所描述的方法或算法的步驟可以直接嵌入硬件、處理器執(zhí)行的軟件模塊、或者這兩者的結(jié)合。軟件模塊可以存儲(chǔ)于RAM存儲(chǔ)器、閃存、ROM存儲(chǔ)器、EPROM存儲(chǔ)器、EEPROM存儲(chǔ)器、寄存器、硬盤、可移動(dòng)磁盤、CD-ROM或本領(lǐng)域中其它任意形式的存儲(chǔ)媒介中。示例性地,存儲(chǔ)媒介可以與處理器連接,以使得處理器可以從存儲(chǔ)媒介中讀取信息,并可以向存儲(chǔ)媒介存寫(xiě)信息??蛇x地,存儲(chǔ)媒介還可以集成到處理器中。處理器和存儲(chǔ)媒介可以設(shè)置于ASIC中,ASIC可以設(shè)置于用戶終端中??蛇x地,處理器和存儲(chǔ)媒介也可以設(shè)置于用戶終端中的不同的部件中。
[0077]在一個(gè)或多個(gè)示例性的設(shè)計(jì)中,本發(fā)明實(shí)施例所描述的上述功能可以在硬件、軟件、固件或這三者的任意組合來(lái)實(shí)現(xiàn)。如果在軟件中實(shí)現(xiàn),這些功能可以存儲(chǔ)與電腦可讀的媒介上,或以一個(gè)或多個(gè)指令或代碼形式傳輸于電腦可讀的媒介上。電腦可讀媒介包括電腦存儲(chǔ)媒介和便于使得讓電腦程序從一個(gè)地方轉(zhuǎn)移到其它地方的通信媒介。存儲(chǔ)媒介可以是任何通用或特殊電腦可以接入訪問(wèn)的可用媒體。例如,這樣的電腦可讀媒體可以包括但不限于RAM、R0M、EEPR0M、⑶-ROM或其它光盤存儲(chǔ)、磁盤存儲(chǔ)或其它磁性存儲(chǔ)裝置,或其它任何可以用于承載或存儲(chǔ)以指令或數(shù)據(jù)結(jié)構(gòu)和其它可被通用或特殊電腦、或通用或特殊處理器讀取形式的程序代碼的媒介。此外,任何連接都可以被適當(dāng)?shù)囟x為電腦可讀媒介,例如,如果軟件是從一個(gè)網(wǎng)站站點(diǎn)、服務(wù)器或其它遠(yuǎn)程資源通過(guò)一個(gè)同軸電纜、光纖電纜、雙絞線、數(shù)字用戶線(DSL)或以例如紅外、無(wú)線和微波等無(wú)線方式傳輸?shù)囊脖话谒x的電腦可讀媒介中。所述的碟片(disk)和磁盤(disc)包括壓縮磁盤、錫射盤、光盤、DVD、軟盤和藍(lán)光光盤,磁盤通常以磁性復(fù)制數(shù)據(jù),而碟片通常以激光進(jìn)行光學(xué)復(fù)制數(shù)據(jù)。上述的組合也可以包含在電腦可讀媒介中。
[0078]以上所述的【具體實(shí)施方式】,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說(shuō)明,所應(yīng)理解的是,以上所述僅為本發(fā)明的【具體實(shí)施方式】而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種反向代理nginx測(cè)試系統(tǒng),其特征在于,所述系統(tǒng)包括:測(cè)試執(zhí)行器、反向代理nginx服務(wù)器、kv存儲(chǔ)服務(wù)器、Http服務(wù)器,其中: 測(cè)試執(zhí)行器,用于向反向代理nginx服務(wù)器、kv存儲(chǔ)服務(wù)器、Http服務(wù)器分別發(fā)送Http請(qǐng)求; kv存儲(chǔ)服務(wù)器,用于根據(jù)從測(cè)試執(zhí)行器接收到的Http請(qǐng)求,確定所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn); 反向代理nginx服務(wù)器,用于從所述kv存儲(chǔ)服務(wù)器中獲取所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn),根據(jù)從測(cè)試執(zhí)行器接收到的Http請(qǐng)求、以及獲取到的所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn),向Http服務(wù)器發(fā)送Http請(qǐng)求,獲取測(cè)試結(jié)果反饋給測(cè)試執(zhí)行器; Http服務(wù)器,用于接收反向代理nginx服務(wù)器發(fā)送的Http請(qǐng)求,反饋測(cè)試結(jié)果給反向代理nginx服務(wù)器;并接收測(cè)試執(zhí)行器直接發(fā)送的Http請(qǐng)求,反饋直接結(jié)果給該測(cè)試執(zhí)行器; 測(cè)試執(zhí)行器,還用于對(duì)比所述測(cè)試結(jié)果和所述直接結(jié)果,進(jìn)行反向代理nginx測(cè)試驗(yàn)證。2.如權(quán)利要求1所述反向代理nginx測(cè)試系統(tǒng),其特征在于,所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn)為可調(diào)用的應(yīng)用程序編程接口 API。3.如權(quán)利要求1所述反向代理nginx測(cè)試系統(tǒng),其特征在于,所述反向代理nginx服務(wù)器,具體用于根據(jù)從測(cè)試執(zhí)行器接收到的Http請(qǐng)求,利用nginx-upsync-module模塊從所述kv存儲(chǔ)服務(wù)器中獲取所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn)。4.如權(quán)利要求3所述反向代理nginx測(cè)試系統(tǒng),其特征在于,所述反向代理nginx服務(wù)器,進(jìn)一步具體用于根據(jù)從測(cè)試執(zhí)行器接收到的Http請(qǐng)求,利用nginx-upsync-module模塊定期查詢所述kv存儲(chǔ)服務(wù)器中所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn)是否變更,若所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn)有變更,則從所述kv存儲(chǔ)服務(wù)器中獲取所述Http請(qǐng)求對(duì)應(yīng)的最新的后端節(jié)點(diǎn)。5.如權(quán)利要求1所述反向代理nginx測(cè)試系統(tǒng),其特征在于,所述反向代理nginx服務(wù)器,具體用于根據(jù)所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn),通過(guò)哈希hash策略向Http服務(wù)器發(fā)送Http請(qǐng)求,獲取測(cè)試結(jié)果反饋給測(cè)試執(zhí)行器。6.一種反向代理nginx測(cè)試方法,其特征在于,所述方法應(yīng)用的反向代理nginx測(cè)試系統(tǒng)包括:測(cè)試執(zhí)行器、反向代理nginx服務(wù)器、kv存儲(chǔ)服務(wù)器、Http服務(wù)器,所述方法包括: 通過(guò)測(cè)試執(zhí)行器向反向代理nginx服務(wù)器、kv存儲(chǔ)服務(wù)器、Http服務(wù)器分別發(fā)送Http請(qǐng)求; 利用kv存儲(chǔ)服務(wù)器,根據(jù)從測(cè)試執(zhí)行器接收到的Http請(qǐng)求,確定所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn); 利用反向代理nginx服務(wù)器,從所述kv存儲(chǔ)服務(wù)器中獲取所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn),根據(jù)從測(cè)試執(zhí)行器接收到的Http請(qǐng)求、以及獲取到的所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn),向Http服務(wù)器發(fā)送Http請(qǐng)求,獲取測(cè)試結(jié)果反饋給測(cè)試執(zhí)行器; 利用Http服務(wù)器接收反向代理nginx服務(wù)器發(fā)送的Http請(qǐng)求,反饋測(cè)試結(jié)果給反向代理nginx服務(wù)器;并接收測(cè)試執(zhí)行器直接發(fā)送的Http請(qǐng)求,反饋直接結(jié)果給該測(cè)試執(zhí)行器; 利用測(cè)試執(zhí)行器對(duì)比所述測(cè)試結(jié)果和所述直接結(jié)果,進(jìn)行反向代理nginx測(cè)試驗(yàn)證。7.如權(quán)利要求6所述反向代理nginx測(cè)試方法,其特征在于,所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn)為可調(diào)用的應(yīng)用程序編程接口 API。8.如權(quán)利要求6所述反向代理nginx測(cè)試方法,其特征在于,利用反向代理nginx服務(wù)器,根據(jù)從測(cè)試執(zhí)行器接收到的Http請(qǐng)求,利用nginx-upsync-module模塊從所述kv存儲(chǔ)服務(wù)器中獲取所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn)。9.如權(quán)利要求8所述反向代理nginx測(cè)試方法,其特征在于,利用反向代理nginx服務(wù)器,根據(jù)從測(cè)試執(zhí)行器接收到的Http請(qǐng)求,利用nginx-upsync-module模塊定期查詢所述kv存儲(chǔ)服務(wù)器中所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn)是否變更,若所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn)有變更,則從所述kv存儲(chǔ)服務(wù)器中獲取所述Http請(qǐng)求對(duì)應(yīng)的最新的后端節(jié)點(diǎn)。10.如權(quán)利要求6所述反向代理nginx測(cè)試方法,其特征在于,利用反向代理nginx服務(wù)器根據(jù)所述Http請(qǐng)求對(duì)應(yīng)的后端節(jié)點(diǎn),通過(guò)哈希hash策略向Http服務(wù)器發(fā)送Http請(qǐng)求,獲取測(cè)試結(jié)果反饋給測(cè)試執(zhí)行器。
【文檔編號(hào)】H04L29/08GK105959179SQ201610403938
【公開(kāi)日】2016年9月21日
【申請(qǐng)日】2016年6月8日
【發(fā)明人】劉羽, 王駿, 姜韜
【申請(qǐng)人】微夢(mèng)創(chuàng)科網(wǎng)絡(luò)科技(中國(guó))有限公司