專利名稱:基于esb的流量控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種基于ESB的流量控制的方法。
背景技術(shù):
ESB(Enterprise Service Bus,企業(yè)服務(wù)總線)作為 SOA(Service-orientedarchitecture,面向服務(wù)架構(gòu))落地平臺(tái)在企業(yè)中的應(yīng)用越來越多,ESB作為服務(wù)提供者和服務(wù)消費(fèi)者之間的中介將企業(yè)中各種各樣的應(yīng)用集成一起來。企業(yè)應(yīng)用作為ESB服務(wù)一旦發(fā)布到ESB后,可供企業(yè)內(nèi)所有其他應(yīng)用調(diào)用,此時(shí),服務(wù)質(zhì)量控制的問題就突出出來。為了保證服務(wù)的質(zhì)量,通過流量控制的機(jī)制來保證服務(wù) 請(qǐng)求不會(huì)在單位時(shí)間內(nèi)產(chǎn)生過多請(qǐng)求,影響服務(wù)提供方對(duì)其他應(yīng)用系統(tǒng)提供服務(wù)。同時(shí)隨著接入的服務(wù)越來越多,企業(yè)不希望某個(gè)特定的實(shí)時(shí)性要求不高的服務(wù)由于突發(fā)的大交易量,導(dǎo)致影響其他服務(wù)的服務(wù)質(zhì)量。所以需要對(duì)此類服務(wù)進(jìn)行流量控制。例如一個(gè)數(shù)據(jù)備份服務(wù),通常此類服務(wù)的實(shí)時(shí)性要求不高,但可能會(huì)占用較多的CPU或網(wǎng)絡(luò)資源,從而導(dǎo)致生產(chǎn)環(huán)境中其他應(yīng)用的服務(wù)質(zhì)量下降。再例如一個(gè)接入到ESB的企業(yè)舊有的CRM(客戶關(guān)系管理)系統(tǒng),其本身設(shè)計(jì)或運(yùn)行環(huán)境由于初期的規(guī)劃并沒有預(yù)見到接入ESB后的訪問量,所以必須將其單位時(shí)間內(nèi)訪問量控制在可接受的閥值內(nèi),從而避免由于過多的訪問導(dǎo)致CRM系統(tǒng)崩潰。同時(shí),ESB作為企業(yè)信息系統(tǒng)中的服務(wù)提供者和服務(wù)消費(fèi)者之間的中介,本身也是一個(gè)軟件。隨著時(shí)間的推移,ESB集成的應(yīng)用會(huì)越來越多,本身占用系統(tǒng)資源也會(huì)越來越多,如果有其他系統(tǒng)和ESB平臺(tái)運(yùn)行在同一環(huán)境中,ESB平臺(tái)占用過多資源會(huì)對(duì)其他系統(tǒng)正常運(yùn)行造成影響,為了避免這種情況的出現(xiàn),需要對(duì)ESB平臺(tái)進(jìn)行全局流量控制。通常的流量控制方法都會(huì)為服務(wù)設(shè)定一個(gè)閥值,在服務(wù)提供者被請(qǐng)求服務(wù)時(shí),ESB查看服務(wù)提供者在本周期內(nèi)是否已經(jīng)達(dá)到了預(yù)定閥值,如果已經(jīng)達(dá)到預(yù)定閥值則會(huì)阻塞本次服務(wù)請(qǐng)求或告知服務(wù)消費(fèi)者服務(wù)提供者繁忙。另外,現(xiàn)有流量控制方法通常是當(dāng)服務(wù)接受訪問時(shí),ESB通過查看服務(wù)提供者的服務(wù)歷史記錄,來計(jì)算當(dāng)前周期內(nèi)該服務(wù)流量是否達(dá)到預(yù)定閥值,這種計(jì)算方法首先要求每次服務(wù)調(diào)用都要記錄本次調(diào)用時(shí)間,以便再次調(diào)用時(shí)作為計(jì)算流量是否達(dá)到預(yù)定閥值的依據(jù)。這種方法有兩個(gè)缺點(diǎn)1)計(jì)算方法復(fù)雜,尤其服務(wù)并發(fā)的情況下的計(jì)算更加復(fù)雜,計(jì)算本身也占用時(shí)間,很難達(dá)到精確流量控制的效果,經(jīng)常和預(yù)定閥值有誤差;2)由于要記錄歷史記錄,復(fù)雜的計(jì)算會(huì)相對(duì)增加對(duì)系統(tǒng)資源的占用。
發(fā)明內(nèi)容
(一 )要解決的技術(shù)問題本發(fā)明要解決的技術(shù)問題是提高流量控制的精確度,并且減少流量控制過程中對(duì)系統(tǒng)資源的占用。( 二 )技術(shù)方案
為了解決上述技術(shù)問題,本發(fā)明提供了一種基于ESB的流量控制方法,該方法包括以下步驟SI、定期向信號(hào)池發(fā)放流量控制信號(hào),以保證信號(hào)池中有預(yù)設(shè)數(shù)量的信號(hào),所述信號(hào)池包括全局信號(hào)池和服務(wù)信號(hào)池,所述全局信號(hào)池中存儲(chǔ)全局流量控制信號(hào),所述服務(wù)信號(hào)池中存儲(chǔ)單個(gè)服務(wù)流量控制信號(hào);S2、當(dāng)企業(yè)服務(wù)總線ESB接收到服務(wù)請(qǐng)求時(shí),對(duì)ESB進(jìn)行全局流量控制,然后對(duì)ESB進(jìn)行單個(gè)服務(wù)流量控制。其中,步驟SI具體包括步驟S101,查詢所述信號(hào)池中可用信號(hào)的數(shù)量;S102,判斷所述信號(hào)池內(nèi)可用信號(hào)的數(shù)量a是否小于預(yù)定閥值b ;如果a<b,則先執(zhí)行步驟S103,再執(zhí)行步驟S104,否則直接執(zhí)行步驟S104 ; S103,向信號(hào)池內(nèi)發(fā)放b-a個(gè)信號(hào),以使得信號(hào)池中可用信號(hào)的數(shù)量a增加到預(yù)定閥值b ;S104,等待預(yù)設(shè)周期后回到SlOl步驟重新進(jìn)行新一輪信號(hào)發(fā)放。其中,步驟S2具體為ESB接收到服務(wù)請(qǐng)求時(shí),首先檢查是否需要全局流量控制,如果需要全局流量控制,則從全局信號(hào)池中申請(qǐng)信號(hào),申請(qǐng)到信號(hào)或不需要全局流量控制時(shí),檢查被請(qǐng)求的服務(wù)是否需要服務(wù)流量控制;如果需要服務(wù)流量控制,則從服務(wù)信號(hào)池中申請(qǐng)信號(hào),申請(qǐng)到信號(hào)或不需要服務(wù)流量控制時(shí),則調(diào)用被請(qǐng)求的服務(wù)。優(yōu)選地,申請(qǐng)信號(hào)的方式為從全局信號(hào)池或服務(wù)信號(hào)池中申請(qǐng)可用信號(hào);如果申請(qǐng)到可用信號(hào),則全局信號(hào)池或服務(wù)信號(hào)池內(nèi)可用信號(hào)數(shù)量減I ;如果申請(qǐng)不到可用信號(hào),則等待指定時(shí)間后繼續(xù)申請(qǐng),直到申請(qǐng)到可用信號(hào)。(三)有益效果本發(fā)明通過流量控制信號(hào)發(fā)放和申請(qǐng)的方式達(dá)到了對(duì)ESB系統(tǒng)進(jìn)行全局流量控制或單個(gè)服務(wù)流量控制的目的,避免了系統(tǒng)運(yùn)行中出現(xiàn)ESB系統(tǒng)全局或個(gè)別服務(wù)訪問頻度峰值過高給生產(chǎn)系統(tǒng)帶來不穩(wěn)定因素,并有效提高流量控制的精確性,減少流量控制本身對(duì)系統(tǒng)資源的占用。
圖I為本發(fā)明的方法流程圖;圖2是圖I中步驟SI的流程圖;圖3為圖I中步驟S2的流程圖。
具體實(shí)施例方式下面結(jié)合附圖和實(shí)施用例,對(duì)本發(fā)明的具體實(shí)施方式
作進(jìn)一步詳細(xì)描述。以下實(shí)施用例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。如背景技術(shù)中所提到的,傳統(tǒng)的方法,通常是計(jì)算服務(wù)消費(fèi)歷史統(tǒng)計(jì)數(shù)據(jù)的方式來計(jì)算當(dāng)前流量是否達(dá)到閥值,這種方法計(jì)算復(fù)雜,而且通常會(huì)有統(tǒng)計(jì)數(shù)據(jù)相對(duì)實(shí)際數(shù)據(jù)滯后的缺陷,而本發(fā)明的流量控制信號(hào)發(fā)放和申請(qǐng)的方式,不依賴于服務(wù)消費(fèi)歷史數(shù)據(jù),因此克服了傳統(tǒng)方法的缺陷。下面具體描述本發(fā)明。圖I為本發(fā)明的方法流程圖,包括以下步驟SI、定期向信號(hào)池發(fā)放流量控制信號(hào)(以下簡稱為信號(hào)),以保證信號(hào)池中有預(yù)設(shè)數(shù)量的信號(hào),所述信號(hào)池包括全局信號(hào)池和服務(wù)信號(hào)池,所述全局信號(hào)池中存儲(chǔ)全局流量控制信號(hào),所述服務(wù)信號(hào)池中存儲(chǔ)單個(gè)服務(wù)流量控制信號(hào);全局流量控制信號(hào)的作用用于控制ESB全局總流量,當(dāng)ESB系統(tǒng)(可以簡稱為ESB)需要全局流量控制時(shí),只有申請(qǐng)到全局流量控制信號(hào),注冊(cè)到ESB上的服務(wù)才被允許提供相應(yīng)的功能。單個(gè)服務(wù)流量控制信號(hào)作用用于控制單個(gè)服務(wù)流量,當(dāng)ESB系統(tǒng)需要單個(gè)服務(wù)流量控制時(shí),只有申請(qǐng)到此項(xiàng)單個(gè)服務(wù)(該項(xiàng)單個(gè)服務(wù)已注冊(cè)到ESB上)的流量控制信號(hào),此項(xiàng)單個(gè)服務(wù)才提供相應(yīng)的功倉泛。S2、當(dāng)ESB接收到服務(wù)請(qǐng)求時(shí),通過全局流量控制邏輯對(duì)ESB進(jìn)行全局流量控制,然后通過單個(gè)服務(wù)流量控制邏輯對(duì)ESB進(jìn)行單個(gè)服務(wù)流量控制。
圖2為步驟SI的具體流程圖,如圖2所示,包括以下步驟S101,查詢信號(hào)池中可用信號(hào)的數(shù)量;S102,判斷信號(hào)池內(nèi)可用信號(hào)的數(shù)量a是否比預(yù)定閥值b小;如果a<b,則執(zhí)行步驟S103,否則直接執(zhí)行步驟S104 ;S103,向信號(hào)池內(nèi)發(fā)放b-a個(gè)信號(hào),以使得信號(hào)池中可用信號(hào)的數(shù)量a增加到預(yù)定閥值,如對(duì)于全局信號(hào)池,預(yù)定閥值為1000,此時(shí)全局信號(hào)池中可用信號(hào)數(shù)量為550,則向全局信號(hào)池內(nèi)發(fā)放1000-550 = 450個(gè)信號(hào),對(duì)于服務(wù)信號(hào)池也如此;S104,信號(hào)發(fā)放完畢或不需要發(fā)放信號(hào)時(shí),等待預(yù)設(shè)周期(例如I秒)后回到SlOl步驟重新進(jìn)行新一輪信號(hào)發(fā)放。圖3為本發(fā)明流量控制(包括全局流量控制和單個(gè)服務(wù)流量控制)流程圖,如圖3所示,包括以下步驟步驟S201,ESB接收到一個(gè)服務(wù)請(qǐng)求(例如來自服務(wù)消費(fèi)者ConsumerA的服務(wù)請(qǐng)求),此服務(wù)請(qǐng)求要求注冊(cè)到ESB上的服務(wù)ServiceA提供相應(yīng)的功能;步驟S202,判斷是否需要全局流量控制,如果需要,執(zhí)行步驟S203,否則執(zhí)行步驟S205 ;步驟S203,從全局信號(hào)池申請(qǐng)全局流量控制信號(hào),至此完成了全局流量控制流程;步驟S204,判斷是否申請(qǐng)到了信號(hào),如果申請(qǐng)到信號(hào)則執(zhí)行步驟S205,否則指定等待時(shí)間(如200毫秒)后回到步驟203重新申請(qǐng)信號(hào);步驟S205,判斷是否需要服務(wù)ServiceA流量控制,如果需要?jiǎng)t執(zhí)行步驟S206,否則執(zhí)行步驟S208 ;步驟S206,從服務(wù)ServiceA信號(hào)池申請(qǐng)單個(gè)服務(wù)流量控制信號(hào);步驟S207,判斷是否從服務(wù)ServiceA信號(hào)池申請(qǐng)到了信號(hào),如果申請(qǐng)到信號(hào)或不需要服務(wù)流量控制時(shí)則執(zhí)行步驟S208,否則等待指定時(shí)間后,執(zhí)行步驟S206重新申請(qǐng)信號(hào);步驟S208,從服務(wù)ServiceA信號(hào)池申請(qǐng)到信號(hào)后,執(zhí)行服務(wù)(ServiceA)來提供相應(yīng)的服務(wù)。
上述步驟S203 S204為全局流量控制流程,步驟S205 S208為單個(gè)服務(wù)流量控制流程。本發(fā)明通過服務(wù)消費(fèi)者請(qǐng)求服務(wù),ESB獲得可執(zhí)行信號(hào),從而達(dá)到對(duì)ESB系統(tǒng)或單個(gè)服務(wù)流量控制的目的,避免ESB系統(tǒng)運(yùn)行中出現(xiàn)ESB系統(tǒng)或個(gè)別服務(wù)訪問頻度峰值過高給生產(chǎn)系統(tǒng)帶來不穩(wěn)定因素,并有效提高流量控制的精確性,減少流量控制本身對(duì)系統(tǒng)資源的占用。
以上實(shí)施方式僅用于說明本發(fā)明,而并非對(duì)本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護(hù)范圍應(yīng)由權(quán)利要求限定。
權(quán)利要求
1.一種基于ESB的流量控制方法,其特征在于,該方法包括以下步驟 51、定期向信號(hào)池發(fā)放流量控制信號(hào),以保證信號(hào)池中有預(yù)設(shè)數(shù)量的信號(hào),所述信號(hào)池包括全局信號(hào)池和服務(wù)信號(hào)池,所述全局信號(hào)池中存儲(chǔ)全局流量控制信號(hào),所述服務(wù)信號(hào)池中存儲(chǔ)單個(gè)服務(wù)流量控制信號(hào); 52、當(dāng)企業(yè)服務(wù)總線ESB接收到服務(wù)請(qǐng)求時(shí),首先對(duì)ESB進(jìn)行全局流量控制,然后對(duì)ESB進(jìn)行單個(gè)服務(wù)流量控制。
2.如權(quán)利要求I所述的方法,其特征在于,步驟SI具體包括步驟 S101,查詢所述信號(hào)池中可用信號(hào)的數(shù)量; S102,判斷所述信號(hào)池內(nèi)可用信號(hào)的數(shù)量a是否小于預(yù)定閥值b ;如果a < b,則先執(zhí)行步驟S103,再執(zhí)行步驟S104,否則直接執(zhí)行步驟S104 ; S103,向信號(hào)池內(nèi)發(fā)放b-a個(gè)信號(hào),以使得信號(hào)池中可用信號(hào)的數(shù)量a增加到預(yù)定閥值b ; S104,等待預(yù)設(shè)周期后回到SlOl步驟重新進(jìn)行新一輪信號(hào)發(fā)放。
3.如權(quán)利要求I或2所述的方法,其特征在于,步驟S2具體為ESB接收到服務(wù)請(qǐng)求時(shí),首先檢查是否需要全局流量控制,如果需要全局流量控制,則從全局信號(hào)池中申請(qǐng)全局流量控制信號(hào),申請(qǐng)到全局流量控制信號(hào)或不需要全局流量控制時(shí),檢查被請(qǐng)求的服務(wù)是否需要服務(wù)流量控制;如果需要服務(wù)流量控制,則從服務(wù)信號(hào)池中申請(qǐng)單個(gè)服務(wù)流量控制信號(hào),申請(qǐng)到單個(gè)服務(wù)流量控制信號(hào)或不需要服務(wù)流量控制時(shí),則調(diào)用被請(qǐng)求的服務(wù)。
4.如權(quán)利要求3所述的方法,其特征在于,申請(qǐng)信號(hào)的方式為 從全局信號(hào)池或服務(wù)信號(hào)池中申請(qǐng)可用信號(hào),如果申請(qǐng)到可用信號(hào),則全局信號(hào)池或服務(wù)信號(hào)池內(nèi)可用信號(hào)數(shù)量減I ;如果申請(qǐng)不到可用信號(hào),則等待指定時(shí)間后繼續(xù)申請(qǐng),直到申請(qǐng)到可用信號(hào)。
全文摘要
本發(fā)明公開了一種基于ESB的流量控制方法,屬于計(jì)算機(jī)技術(shù)領(lǐng)域,該方法包括以下步驟S1、定期向信號(hào)池發(fā)放流量控制信號(hào),以保證信號(hào)池中有預(yù)設(shè)數(shù)量的信號(hào),所述信號(hào)池包括全局信號(hào)池和服務(wù)信號(hào)池,所述全局信號(hào)池中存儲(chǔ)全局流量控制信號(hào),所述服務(wù)信號(hào)池中存儲(chǔ)單個(gè)服務(wù)流量控制信號(hào);S2、當(dāng)企業(yè)服務(wù)總線ESB接收到服務(wù)請(qǐng)求時(shí),對(duì)ESB進(jìn)行全局流量控制,然后對(duì)ESB進(jìn)行單個(gè)服務(wù)流量控制。本發(fā)明避免了ESB系統(tǒng)運(yùn)行中出現(xiàn)ESB系統(tǒng)全局或個(gè)別服務(wù)訪問頻度峰值過高給生產(chǎn)系統(tǒng)帶來不穩(wěn)定因素,并能有效提高流量控制的精確性,減少流量控制本身對(duì)系統(tǒng)資源的占用。
文檔編號(hào)H04L29/08GK102724222SQ20111007763
公開日2012年10月10日 申請(qǐng)日期2011年3月29日 優(yōu)先權(quán)日2011年3月29日
發(fā)明者劉川, 張玉柱, 李京華 申請(qǐng)人:北京東方通科技股份有限公司