一種基于事件驅(qū)動(dòng)的高并發(fā)web流量產(chǎn)生器的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于網(wǎng)絡(luò)軟件技術(shù)領(lǐng)域。涉及一種WEB流量產(chǎn)生器,尤其是一種基于事件驅(qū)動(dòng)的高并發(fā)WEB流量產(chǎn)生器。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)規(guī)模的不斷擴(kuò)大以及基于互聯(lián)網(wǎng)應(yīng)用的多樣性,現(xiàn)有互聯(lián)網(wǎng)的局限性日益突出。為解決當(dāng)前互聯(lián)網(wǎng)存在的問題,目前關(guān)于未來網(wǎng)絡(luò)的相關(guān)研究已成為多國國家戰(zhàn)略的一部分。很多國家或科研機(jī)構(gòu)已經(jīng)建立起用于未來網(wǎng)絡(luò)研究的實(shí)驗(yàn)網(wǎng)絡(luò)。網(wǎng)絡(luò)流量作為互聯(lián)網(wǎng)內(nèi)在的重要組成部分,對(duì)于實(shí)驗(yàn)網(wǎng)同樣如此。因此如何為實(shí)驗(yàn)網(wǎng)提高巨大的背景流量已成為未來網(wǎng)絡(luò)研究中不可或缺的一部分。在互聯(lián)網(wǎng)漫長的發(fā)展過程中,WEB流量一直是網(wǎng)絡(luò)流量的重要組成部分之一。因此,設(shè)計(jì)一個(gè)專門用于產(chǎn)生WEB流量的流量產(chǎn)生器對(duì)未來網(wǎng)絡(luò)的相關(guān)研究領(lǐng)域,如網(wǎng)絡(luò)性能研究、網(wǎng)絡(luò)服務(wù)質(zhì)量研究、新協(xié)議的測(cè)試與部署、網(wǎng)絡(luò)安全性研究等具有重要的意義。
[0003]從并發(fā)角度出發(fā),現(xiàn)有的WEB流量產(chǎn)生器其實(shí)現(xiàn)方法可分為三種:基于多進(jìn)程并發(fā)的WEB流量產(chǎn)生器、基于多線程并發(fā)的WEB流量產(chǎn)生器和基于多進(jìn)程多線程并發(fā)的WEB流量產(chǎn)生器?;诙噙M(jìn)程并發(fā)的WEB流量產(chǎn)生器通常采用進(jìn)程池技術(shù),一個(gè)進(jìn)程對(duì)應(yīng)一個(gè)活躍的HTTP連接,有實(shí)現(xiàn)簡單的特點(diǎn)。但是操作系能夠創(chuàng)建的進(jìn)程數(shù)是有限的,難于實(shí)現(xiàn)活躍連接的高并發(fā)。同時(shí),如果創(chuàng)建過多的進(jìn)程(進(jìn)程數(shù)大于CPU核數(shù))又會(huì)引起進(jìn)程頻繁切換開銷?;诙嗑€程并發(fā)的WEB流量產(chǎn)生器較基于多進(jìn)程并發(fā)的WEB流量產(chǎn)生器雖然可以減小進(jìn)程切換的開銷,但仍存在一個(gè)進(jìn)程中創(chuàng)建的線程數(shù)有限的限制。如果線程數(shù)過多則會(huì)仍存在線程開銷過大的問題?;诙噙M(jìn)程多線程并發(fā)的WEB流量產(chǎn)生器是前兩種方式的結(jié)合,可以在一個(gè)進(jìn)程中創(chuàng)建多個(gè)線程每一個(gè)線程對(duì)應(yīng)一個(gè)活躍的HTTP連接。這類WEB流量產(chǎn)生器較前兩者并發(fā)數(shù)有一定的提升。但是會(huì)存在多進(jìn)程間通信和多線程間同步等一系列問題,使得編程復(fù)雜。同時(shí),也存在大量的切換、同步等開銷。因此,難以在低開銷下有效地實(shí)現(xiàn)活躍HTTP連接的高并發(fā),并對(duì)大量的WEB用戶進(jìn)行模擬。由此可見,目前多進(jìn)程或多線程并發(fā)機(jī)制難于適用于高并發(fā)WEB流量產(chǎn)生器。
【發(fā)明內(nèi)容】
[0004]針對(duì)以上現(xiàn)有的不足,提出了一種提高WEB流量產(chǎn)生器的用戶模擬能力以及活躍HTTP連接并發(fā)數(shù)的基于事件驅(qū)動(dòng)的高并發(fā)WEB流量產(chǎn)生器。本發(fā)明的技術(shù)方案如下:一種基于事件驅(qū)動(dòng)的高并發(fā)WEB流量產(chǎn)生器,其包括:包括控制層,數(shù)據(jù)層和第一事件驅(qū)動(dòng)層、第二事件驅(qū)動(dòng)層,其中第一事件驅(qū)動(dòng)層位于控制層與數(shù)據(jù)層之間,第二事件驅(qū)動(dòng)層位于數(shù)據(jù)層與網(wǎng)絡(luò)之間:控制層負(fù)責(zé)WEB用戶模擬和管理以及工作子進(jìn)程族的管理和負(fù)載均衡;數(shù)據(jù)層主要負(fù)責(zé)網(wǎng)絡(luò)連接的管理、緩存管理、網(wǎng)絡(luò)數(shù)據(jù)的收發(fā)以及流量統(tǒng)計(jì);第一事件驅(qū)動(dòng)層和第二事件驅(qū)動(dòng)層均包括注冊(cè)模塊、監(jiān)聽模塊及分發(fā)模塊,所述注冊(cè)模塊主要負(fù)責(zé)定時(shí)事件、I/O讀寫事件、信號(hào)事件的注冊(cè)。
[0005]進(jìn)一步的,所述控制層包含用戶管理模塊,用戶行為模塊,進(jìn)程管理模塊和負(fù)載均衡模塊,其中用戶管理模塊用于管理模擬的WEB用戶;用戶行為模塊用于控制每個(gè)模擬WEB用戶的行為動(dòng)作;進(jìn)程管理模塊用于管理負(fù)責(zé)數(shù)據(jù)層功能的工作進(jìn)程族;負(fù)載均衡模塊為實(shí)現(xiàn)了基于輪詢機(jī)制和基于目標(biāo)服務(wù)器ip地址機(jī)制的多工作進(jìn)程間的負(fù)載均衡。
[0006]進(jìn)一步的,所述數(shù)據(jù)層包含連接池模塊、緩存管理模塊、流量統(tǒng)計(jì)模塊、發(fā)送模塊和接收模塊,其中連接池模塊用于對(duì)網(wǎng)絡(luò)連接資源進(jìn)行管理;緩存管理模塊用于對(duì)DNS(域名系統(tǒng))和請(qǐng)求URL(統(tǒng)一資源定位符)資源進(jìn)行緩存管理;流量統(tǒng)計(jì)模塊用于對(duì)每次連接流量的統(tǒng)計(jì),并定時(shí)將本地的緩存數(shù)據(jù)發(fā)送到數(shù)據(jù)庫服務(wù)器,以供前臺(tái)分析;發(fā)送模塊負(fù)責(zé)HTTP請(qǐng)求數(shù)據(jù)包的構(gòu)造和發(fā)送;接收模塊負(fù)責(zé)對(duì)HTTP響應(yīng)數(shù)據(jù)的解析、驗(yàn)證和錯(cuò)誤處理。
[0007]進(jìn)一步的,所述WEB流量發(fā)生器采用master進(jìn)程加多個(gè)worker進(jìn)程的實(shí)現(xiàn)方式,其中master進(jìn)程實(shí)現(xiàn)控制層和第一事件驅(qū)動(dòng)層;所有worker進(jìn)程都是master的子進(jìn)程,并實(shí)現(xiàn)數(shù)據(jù)層和第二事件驅(qū)動(dòng)層;此外,這些worker進(jìn)程彼此相互隔離,僅各自與master進(jìn)程之間有基于事件驅(qū)動(dòng)層的通信通道。
[0008]進(jìn)一步的,所述master進(jìn)程中的第一事件驅(qū)動(dòng)層的監(jiān)聽模塊負(fù)責(zé)對(duì)控制層中模擬的大量WEB用戶的用戶行為過程進(jìn)行定時(shí)監(jiān)聽,監(jiān)聽過程如下:
[0009]I)控制層對(duì)每一模擬的WEB用戶,通過調(diào)用用戶行為模塊獲得該用戶進(jìn)入下一個(gè)行為動(dòng)作的時(shí)間值t ime,并設(shè)置用戶下一步的行為函數(shù)handl er ;
[0010]2)根據(jù)time值,控制層通過調(diào)用第一事件驅(qū)動(dòng)層中的注冊(cè)模塊進(jìn)行定時(shí)事件的注冊(cè),并交由監(jiān)聽模塊負(fù)責(zé)事件的監(jiān)聽;
[0011]3)當(dāng)監(jiān)聽到該定時(shí)事件發(fā)生時(shí),通過分發(fā)模塊進(jìn)行分發(fā)處理,然后調(diào)用該用戶之前設(shè)置的行為函數(shù)hand ler;
[0012]4)在用戶行為行為函數(shù)handler中中,首先根據(jù)用戶行為模塊構(gòu)造一個(gè)連接消息,將具體的數(shù)據(jù)交互任務(wù)交由數(shù)據(jù)層處理;
[0013]5)然后根據(jù)用戶管理模塊以及用戶行為模塊得到該用戶的下一個(gè)行為動(dòng)作;
[0014]6)如果用戶的下一個(gè)動(dòng)作為退出,則釋放該用戶占用的資源;
[0015]7)否則,跳轉(zhuǎn)到第I)步。
[0016]本發(fā)明的優(yōu)點(diǎn)及有益效果如下:
[0017]本發(fā)明提供了一種基于事件驅(qū)動(dòng)的用于產(chǎn)生WEB業(yè)務(wù)流量的流量產(chǎn)生器。與傳統(tǒng)的并發(fā)實(shí)現(xiàn)技術(shù)相比,這種基于事件驅(qū)動(dòng)技術(shù)并實(shí)現(xiàn)http連接高并發(fā)處理的WEB流量產(chǎn)生器在同等并發(fā)條件下能夠有效的避免進(jìn)程或線程的頻繁切換以及對(duì)資源同步加鎖的開銷,從而提高用戶的模擬能力并產(chǎn)生巨大的WEB業(yè)務(wù)流量。同時(shí),由于事件驅(qū)動(dòng)層的引入,能夠有效地降低控制層與數(shù)據(jù)層以及數(shù)據(jù)層與網(wǎng)絡(luò)之間的耦合度,使得這種流量產(chǎn)生器更易擴(kuò)展??傊?,這種基于事件驅(qū)動(dòng)的WEB流量產(chǎn)生器具有低耦合,易擴(kuò)展,高并發(fā)等特點(diǎn),能夠更好的適用于需要產(chǎn)生高并發(fā),大流量的應(yīng)用場(chǎng)景,如SDN實(shí)驗(yàn)網(wǎng)等。
【附圖說明】
[0018]圖1是本發(fā)明提供優(yōu)選實(shí)施例模塊結(jié)構(gòu)示意圖;
[0019]圖2是本發(fā)明的進(jìn)程關(guān)系示意圖。
【具體實(shí)施方式】
[0020]以下結(jié)合附圖,對(duì)本發(fā)明作進(jìn)一步說明:
[0021]如圖1所示,實(shí)施例
[0022]本發(fā)明提供了一種基于事件驅(qū)動(dòng)的高并發(fā)WEB流量產(chǎn)生器,如附圖1所示,該種基于事件驅(qū)動(dòng)的高并發(fā)WEB流量產(chǎn)生器包括:控制層、數(shù)據(jù)層和兩個(gè)位于控制層與數(shù)據(jù)層以及數(shù)據(jù)層與網(wǎng)絡(luò)之間的事件驅(qū)動(dòng)層,其中:一種基于事件驅(qū)動(dòng)的高并發(fā)WEB流量產(chǎn)生器,其包括:包括控制層,數(shù)據(jù)層和第一事件驅(qū)動(dòng)層、第二事件驅(qū)動(dòng)層,其中第一事件驅(qū)動(dòng)層位于控制層與數(shù)據(jù)層之間,第二事件驅(qū)動(dòng)層位于數(shù)據(jù)層與網(wǎng)絡(luò)之間:控制層主要包括用戶管理模塊、用戶行為模塊、進(jìn)程管理模塊及負(fù)載均衡模塊,用戶管理模塊用于管理模擬的WEB用戶;用戶行為模塊用于控制每個(gè)模擬WEB用戶的行為動(dòng)作;進(jìn)程管理模塊用于管理負(fù)責(zé)數(shù)據(jù)層功能的工作進(jìn)程族;負(fù)載均衡模塊用于實(shí)現(xiàn)多工作進(jìn)程間的負(fù)載均衡;數(shù)據(jù)層主要負(fù)責(zé)網(wǎng)絡(luò)連接的管理、緩存管理、網(wǎng)絡(luò)數(shù)據(jù)的收發(fā)以及流量統(tǒng)計(jì);第一事件驅(qū)動(dòng)層和第二事件驅(qū)動(dòng)層均包括注冊(cè)模塊、監(jiān)聽模塊及分發(fā)模塊,所述注冊(cè)模塊主要負(fù)責(zé)定時(shí)事件、I/O讀寫事件、信號(hào)事件的注冊(cè)。
[0023]進(jìn)一步的,所述負(fù)載均衡模塊用于實(shí)現(xiàn)基于輪詢機(jī)制和基于目標(biāo)服務(wù)器ip地址機(jī)制的用于完成多工作進(jìn)程間的負(fù)載均衡。
[0024]進(jìn)一步的,所述數(shù)據(jù)層包含連接池模塊、緩存管理模塊、流量統(tǒng)計(jì)模塊、發(fā)送模塊和接收模塊,其中連接池模塊用于對(duì)網(wǎng)絡(luò)連接資源進(jìn)行管理;緩存管理模塊用于對(duì)DNS(域名系統(tǒng))和請(qǐng)求URL(統(tǒng)一資源定位符)資源進(jìn)行緩存管理;流量統(tǒng)計(jì)模塊用于對(duì)每次連接流量的統(tǒng)計(jì),并定時(shí)將本地的緩存數(shù)據(jù)發(fā)送到數(shù)據(jù)庫服務(wù)器,以供前臺(tái)分析;發(fā)送模塊負(fù)責(zé)HTTP請(qǐng)求數(shù)據(jù)包的構(gòu)造和發(fā)送;接收模塊負(fù)責(zé)對(duì)HTTP響應(yīng)數(shù)據(jù)的解析、驗(yàn)證和錯(cuò)誤處理。
[0025]本發(fā)明所涉及的WEB流量發(fā)生器采用主進(jìn)程master加多個(gè)工作進(jìn)程worker的實(shí)現(xiàn)方式,其中:
[0026]Master進(jìn)程負(fù)責(zé)控制層和用于控制層與數(shù)據(jù)層之間的事件驅(qū)動(dòng)層的實(shí)現(xiàn);
[0027]Worker進(jìn)程負(fù)責(zé)數(shù)據(jù)層與用于數(shù)據(jù)層與網(wǎng)絡(luò)之間的事件驅(qū)動(dòng)層的實(shí)現(xiàn)。
[0028]本發(fā)明所涉及的WEB流量發(fā)生器的進(jìn)程關(guān)系如附圖2所示。所有的worker進(jìn)程都是master進(jìn)程的子進(jìn)程,且它們都彼此隔離,僅與m