一種ejb服務(wù)過(guò)載保護(hù)方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種EJB服務(wù)過(guò)載保護(hù)方法和系統(tǒng),方法包括配置EJB實(shí)例每個(gè)服務(wù)的服務(wù)能力等級(jí)L(X)和EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C,其中X表示一個(gè)具體服務(wù);記錄EJB實(shí)例中一個(gè)具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A)1;記錄EJB實(shí)例中所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)C1;當(dāng)請(qǐng)求調(diào)用所述具體服務(wù)A時(shí),根據(jù)所述EJB實(shí)例每個(gè)服務(wù)的服務(wù)能力等級(jí)L(X)、EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C、所述具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A)1和所述所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)C1,判斷是否允許調(diào)用所述具體服務(wù)A和所述具體服務(wù)A是否進(jìn)入業(yè)務(wù)邏輯執(zhí)行部分。本發(fā)明的技術(shù)方案能夠?qū)崿F(xiàn)服務(wù)的過(guò)載保護(hù)能力,防止單個(gè)或多個(gè)服務(wù)故障引起整個(gè)系統(tǒng)故障,減少故障影響面和系統(tǒng)中斷時(shí)間。
【專利說(shuō)明】一種EJB服務(wù)過(guò)載保護(hù)方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及移動(dòng)通信業(yè)務(wù)支撐【技術(shù)領(lǐng)域】,尤其涉及一種EJB服務(wù)過(guò)載保護(hù)方法和系統(tǒng)。
【背景技術(shù)】
[0002]J2EE(Java 2 Enterprise Edition)體系架構(gòu)由于其可移植性強(qiáng)、可重用性好以及互操作性強(qiáng)等優(yōu)點(diǎn),成為IT系統(tǒng)中普通采用的架構(gòu)。JAVA商業(yè)應(yīng)用組件技術(shù)EJB(Enterprise JavaBeans)作為J2EE架構(gòu)中基于組件的應(yīng)用架構(gòu),具有事務(wù)處理能力、支持多用戶安全操作和高可擴(kuò)展能力。
[0003]在普遍采用的展現(xiàn)層(WEB)、應(yīng)用層(EJB)、數(shù)據(jù)庫(kù)層(Database)三層架構(gòu)中,企業(yè)通常使用EJB來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯?;贓JB實(shí)現(xiàn)的各種業(yè)務(wù)邏輯組件,我們稱之為EJB服務(wù)。
[0004]作為業(yè)務(wù)邏輯處理核心的EJB,其高可用性、過(guò)載保護(hù)能力是IT系統(tǒng)架構(gòu)需要重點(diǎn)考慮的內(nèi)容。由于EJB服務(wù)與其部署的中間件平臺(tái)都運(yùn)行在一個(gè)Java虛擬機(jī)(JVM)中,對(duì)EJB中每個(gè)服務(wù)的管理帶來(lái)難題。在實(shí)際應(yīng)用中將存在如下問題:
[0005]I)單個(gè)服務(wù)并發(fā)數(shù)高導(dǎo)致系統(tǒng)整體故障。單個(gè)服務(wù)并發(fā)數(shù)特別高,占用了大部分CPU資源或內(nèi)存,導(dǎo)致系統(tǒng)掛死或是JVM OOM(Out of Memory)故障,影響整個(gè)EJB應(yīng)用。
[0006]2)單個(gè)服務(wù)故障導(dǎo)致系統(tǒng)整體故障。單個(gè)服務(wù)故障會(huì)導(dǎo)致后續(xù)請(qǐng)求持續(xù)排隊(duì),會(huì)導(dǎo)致EJB服務(wù)器內(nèi)存資源耗盡,導(dǎo)致JVM OOM故障。
[0007]3)單個(gè)服務(wù)故障導(dǎo)致客戶端故障。單個(gè)服務(wù)故障會(huì)導(dǎo)致后續(xù)請(qǐng)求持續(xù)排隊(duì),調(diào)用EJB服務(wù)的客戶端處于掛死狀態(tài),對(duì)最終用戶的感知極差。
[0008]4)無(wú)法對(duì)故障服務(wù)進(jìn)行隔離。比如在應(yīng)用上線后,發(fā)現(xiàn)某個(gè)服務(wù)的業(yè)務(wù)邏輯存在問題,會(huì)造成錯(cuò)誤數(shù)據(jù),無(wú)法進(jìn)行獨(dú)立屏蔽,必須停止整個(gè)EJB服務(wù)器,重新部署修正后的整個(gè)EJB應(yīng)用。
[0009]為了解決以上問題,通常是中間件平臺(tái)提供bean實(shí)例并發(fā)數(shù)控制參數(shù),如OracleWebLogic平臺(tái)提供的max-beans-1n-free-pool,來(lái)控制bean實(shí)例的最大并發(fā)個(gè)數(shù),防止過(guò)載。
[0010]但該技術(shù)方案有如下缺點(diǎn):
[0011]I)只能控制到bean —級(jí),無(wú)法以服務(wù)為單位進(jìn)行控制;
[0012]2)對(duì)bean實(shí)例并發(fā)的控制后,后續(xù)請(qǐng)求仍舊會(huì)持續(xù)進(jìn)入等待隊(duì)列中,導(dǎo)致EJB服務(wù)器系統(tǒng)資源耗盡;同時(shí)導(dǎo)致前臺(tái)客戶端掛死,最終用戶感知度差;
[0013]3)此類參數(shù)只能實(shí)現(xiàn)靜態(tài)配置,無(wú)法在運(yùn)行中動(dòng)態(tài)調(diào)整;
[0014]4)不是所有中間件廠商都提供類似參數(shù)控制。
【發(fā)明內(nèi)容】
[0015]為了解決現(xiàn)有技術(shù)中存在的不能有效控制過(guò)載保護(hù)以及無(wú)法隔離故障的技術(shù)問題,本發(fā)明提出一種EJB服務(wù)過(guò)載保護(hù)方法和系統(tǒng),能夠?qū)崿F(xiàn)服務(wù)的過(guò)載保護(hù)能力,防止單個(gè)或多個(gè)服務(wù)故障引起整個(gè)系統(tǒng)故障,減少故障影響面和系統(tǒng)中斷時(shí)間。
[0016]本發(fā)明一方面提供了一種EJB服務(wù)過(guò)載保護(hù)方法,包括以下步驟:
[0017]配置EJB實(shí)例每個(gè)服務(wù)的服務(wù)能力等級(jí)L(X)和EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C,其中X表不一個(gè)具體服務(wù);
[0018]記錄EJB實(shí)例中一個(gè)具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A)I ;
[0019]記錄EJB實(shí)例中所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl ;
[0020]當(dāng)請(qǐng)求調(diào)用所述具體服務(wù)A時(shí),根據(jù)所述EJB實(shí)例每個(gè)服務(wù)的服務(wù)能力等級(jí)L(X)、EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C、所述具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I和所述所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl,判斷是否允許調(diào)用所述具體服務(wù)A和所述具體服務(wù)A是否進(jìn)入業(yè)務(wù)邏輯執(zhí)行部分。
[0021]本發(fā)明另一方面提供了一種EJB服務(wù)過(guò)載保護(hù)系統(tǒng),包括服務(wù)能力適配配置平臺(tái)、服務(wù)能力適配管理模塊和服務(wù)能力適配處理模塊,其中,
[0022]所述服務(wù)能力適配配置平臺(tái)用于配置EJB實(shí)例每個(gè)服務(wù)的服務(wù)能力等級(jí)L和EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C ;
[0023]所述服務(wù)能力適配管理模塊用于記錄EJB實(shí)例中一個(gè)具體服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)LI和記錄EJB實(shí)例中所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl ;
[0024]所述服務(wù)能力適配處理模塊用于當(dāng)請(qǐng)求調(diào)用所述具體服務(wù)時(shí),根據(jù)所述EJB實(shí)例每個(gè)服務(wù)的服務(wù)能力等級(jí)L、EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C、所述具體服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)LI和所述所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl,判斷是否允許調(diào)用所述具體服務(wù)和所述具體服務(wù)是否進(jìn)入業(yè)務(wù)邏輯執(zhí)行部分。包括服務(wù)能力適配配置平臺(tái)、服務(wù)能力適配管理模塊和服務(wù)能力適配處理模塊,其中,
[0025]所述服務(wù)能力適配配置平臺(tái)用于配置EJB實(shí)例每個(gè)服務(wù)的服務(wù)能力等級(jí)L(X)和EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C ;
[0026]所述服務(wù)能力適配管理模塊用于記錄EJB實(shí)例中一個(gè)具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I和記錄EJB實(shí)例中所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl ;
[0027]所述服務(wù)能力適配處理模塊用于當(dāng)請(qǐng)求調(diào)用所述具體服務(wù)A時(shí),根據(jù)所述EJB實(shí)例每個(gè)服務(wù)的服務(wù)能力等級(jí)L(X) ,EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C、所述具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I和所述所有服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)Cl,判斷是否允許調(diào)用所述具體服務(wù)A和所述具體服務(wù)A是否進(jìn)入業(yè)務(wù)邏輯執(zhí)行部分。
[0028]本發(fā)明的技術(shù)方案由于引入了服務(wù)能力適配(SAA)技術(shù)架構(gòu)模型和EJB服務(wù)的服務(wù)能力等級(jí)管理方法(SAAL),替代了傳統(tǒng)的中間件平臺(tái)提供的bean控制參數(shù)的方法,對(duì)EJB單個(gè)服務(wù)的服務(wù)能力進(jìn)行動(dòng)態(tài)管理以及單個(gè)服務(wù)細(xì)粒度精確控制,實(shí)現(xiàn)EJB服務(wù)器的過(guò)載保護(hù)功能以及故障屏蔽功能,防止單個(gè)或多個(gè)服務(wù)故障引起整個(gè)系統(tǒng)故障,減少故障影響面和系統(tǒng)中斷時(shí)間;并且可以對(duì)故障服務(wù)進(jìn)行隔離,防止前臺(tái)調(diào)用掛死,提高最終用戶的體驗(yàn);同時(shí)實(shí)現(xiàn)了服務(wù)過(guò)載隔離的動(dòng)態(tài)配置和告警能力,讓維護(hù)人員及時(shí)處理系統(tǒng)潛在故障,大大提高了故障定位的準(zhǔn)確性、及時(shí)性。
【專利附圖】
【附圖說(shuō)明】[0029]圖1是本發(fā)明實(shí)施例一中EJB服務(wù)過(guò)載保護(hù)的流程圖。
[0030]圖2是本發(fā)明實(shí)施例二中EJB服務(wù)過(guò)載保護(hù)系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0031]下面結(jié)合附圖對(duì)本發(fā)明的【具體實(shí)施方式】進(jìn)行詳細(xì)描述。
[0032]本發(fā)明的【具體實(shí)施方式】是基于服務(wù)能力適配(Service AbilityAdaption, SAA)的概念和技術(shù),對(duì)EJB單個(gè)服務(wù)的服務(wù)能力進(jìn)行統(tǒng)一管理和細(xì)粒度的控制。
[0033]其中EJB 服務(wù)的服務(wù)能力等級(jí)(Service Ability Adaption Level, SAAL)定義:
[0034]服務(wù)能力等級(jí)=單實(shí)例服務(wù)并發(fā)數(shù)*單服務(wù)業(yè)務(wù)占比*服務(wù)復(fù)雜度
[0035]單實(shí)例服務(wù)并發(fā)數(shù):單個(gè)EJB服務(wù)器允許運(yùn)行的所有業(yè)務(wù)服務(wù)線程總數(shù);
[0036]單服務(wù)業(yè)務(wù)占比:某個(gè)服務(wù)在所有業(yè)務(wù)中的占比;
[0037]服務(wù)復(fù)雜度:在0.5-1.5中取值,表示該服務(wù)業(yè)務(wù)邏輯的復(fù)雜度,根據(jù)該服務(wù)執(zhí)行一次的耗時(shí)和/或CPU占用情況評(píng)級(jí);
[0038]如果服務(wù)能力等級(jí)小于2,服務(wù)能力等級(jí)設(shè)為2。
[0039]實(shí)際應(yīng)用中可以將對(duì)服務(wù)的控制細(xì)化到方法一級(jí),在此統(tǒng)一稱為服務(wù)。
[0040]例如EJB服務(wù)器實(shí)例設(shè)計(jì)的最大并發(fā)數(shù)是300,服務(wù)A在所有業(yè)務(wù)中的占比是10%,該服務(wù)A的服務(wù)復(fù)雜度為0.8,則該服務(wù)A的服務(wù)能力等級(jí)為300*10% *0.8 = 24。
[0041]圖1是本發(fā)明實(shí)施例一中EJB服務(wù)過(guò)載保護(hù)的流程圖。如圖1所示,該EJB服務(wù)過(guò)載保護(hù)的流程包括以下步驟:
[0042]步驟101、配置EJB實(shí)例每個(gè)服務(wù)的服務(wù)能力等級(jí)L(X)和EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C,其中X表示一個(gè)具體服務(wù)。
[0043]步驟102、記錄EJB實(shí)例中一個(gè)具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L (A) I。
[0044]步驟103、記錄EJB實(shí)例中所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl。
[0045]步驟104、當(dāng)用戶請(qǐng)求調(diào)用該具體服務(wù)A時(shí),將所述所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl加一。
[0046]步驟105、將加一后的所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl與該EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C進(jìn)行比較,如果Cl/C*100%< 80%,則轉(zhuǎn)至步驟106,如果Cl/C*100%>= 80%,則轉(zhuǎn)至步驟108。
[0047]步驟106、將具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I加一。
[0048]步驟107、將加一后的具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I與該具體服務(wù)A的服務(wù)能力等級(jí)L (A)進(jìn)行比較,如果L (A) I <= L (A),則轉(zhuǎn)至步驟110,如果L (A) I > L (A),則轉(zhuǎn)至步驟111。
[0049]步驟108、將該具體服務(wù)A的服務(wù)能力等級(jí)L(A)降低30%,將該具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I加一。
[0050]步驟109、將該加一后的具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I與降低后的該具體服務(wù)A的服務(wù)能力等級(jí)L(A)進(jìn)行比較,并將所述加一后的所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl與所述EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C進(jìn)行比較,如果L (A) I <= L (A)并且Cl < = C,,則轉(zhuǎn)至步驟110,否則轉(zhuǎn)至步驟111。
[0051]步驟110、允許調(diào)用該具體服務(wù)A,該具體服務(wù)A進(jìn)入業(yè)務(wù)邏輯執(zhí)行部分。當(dāng)該具體服務(wù)A的業(yè)務(wù)邏輯處理結(jié)束后,將該加一后的具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I減一,將該加一后的所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl減一。
[0052]步驟111、允許調(diào)用該具體服務(wù)A,返回系統(tǒng)正忙的錯(cuò)誤信息給調(diào)用方。同時(shí),發(fā)送告警到服務(wù)能力適配管理模塊,服務(wù)能力適配管理模塊通過(guò)服務(wù)能力適配配置平臺(tái)將告警發(fā)送到網(wǎng)管系統(tǒng)。
[0053]如果需要提高具體服務(wù)A的并發(fā)處理能力,通過(guò)服務(wù)能力適配配置平臺(tái)提高具體服務(wù)A的服務(wù)能力等級(jí)L(A)。
[0054]如果具體服務(wù)A業(yè)務(wù)邏輯存在問題,需要將具體服務(wù)A進(jìn)行屏蔽,通過(guò)服務(wù)能力適配配置平臺(tái)將具體服務(wù)A的服務(wù)能力等級(jí)L(A)配置為零,即不允許調(diào)用具體服務(wù)A。
[0055]為了實(shí)現(xiàn)上述流程,本發(fā)明的【具體實(shí)施方式】還提供了一種EJB服務(wù)過(guò)載保護(hù)系統(tǒng),包括服務(wù)能力適配配置平臺(tái)201、服務(wù)能力適配管理模塊202和服務(wù)能力適配處理模塊203。
[0056]其中,服務(wù)能力適配配置平臺(tái)用于配置EJB實(shí)例每個(gè)服務(wù)的服務(wù)能力等級(jí)L(X)和EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C。
[0057]服務(wù)能力適配管理模塊用于記錄EJB實(shí)例中一個(gè)具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I和記錄EJB實(shí)例中所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl ;
[0058]服務(wù)能力適配處理模塊用于當(dāng)請(qǐng)求調(diào)用該具體服務(wù)A時(shí),根據(jù)該EJB實(shí)例每個(gè)服務(wù)的服務(wù)能力等級(jí)L(X)、EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C、該具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I和該所有服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)Cl,判斷是否允許調(diào)用該具體服務(wù)A和該具體服務(wù)A是否進(jìn)入業(yè)務(wù)邏輯執(zhí)行部分。
[0059]進(jìn)一步地,當(dāng)請(qǐng)求調(diào)用該具體服務(wù)A時(shí),將該所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl加
[0060]將該加一后的所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl與該EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C進(jìn)行比較,如果Cl/C*100%< 80%,則將該具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L (A) I加一;
[0061]將該加一后的具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I與該具體服務(wù)A的服務(wù)能力等級(jí)L (A)進(jìn)行比較,如果L (A) I <= L (A),則允許調(diào)用該具體服務(wù)A,該具體服務(wù)A進(jìn)入業(yè)務(wù)邏輯執(zhí)行部分,如果L (A) I > L (A),則允許調(diào)用所述具體服務(wù)A返回系統(tǒng)正忙的錯(cuò)誤信息給調(diào)用方;
[0062]如果Cl/C*100%>= 80%,則將該具體服務(wù)的服務(wù)能力等級(jí)L(A)降低30% ;
[0063]將該具體服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I加一;
[0064]將該加一后的具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I與該降低后的具體服務(wù)A的服務(wù)能力等級(jí)L(A)進(jìn)行比較,并將該加一后的所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl與該EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C進(jìn)行比較,如果L(A) I <= L(A)并且Cl <= C,則允許調(diào)用該具體服務(wù)A,該具體服務(wù)A進(jìn)入業(yè)務(wù)邏輯執(zhí)行部分,否則不允許調(diào)用該具體服務(wù)A,返回系統(tǒng)正忙的
錯(cuò)誤信息給調(diào)用方。
[0065]服務(wù)能力適配處理模塊還用于在返回系統(tǒng)正忙的錯(cuò)誤信息給調(diào)用方時(shí),發(fā)送告警到服務(wù)能力適配管理模塊;服務(wù)能力適配管理模塊還用于將告警發(fā)送給服務(wù)能力適配配置平臺(tái);服務(wù)能力適配配置平臺(tái)還用于將告警發(fā)送給網(wǎng)管系統(tǒng)。
[0066]服務(wù)能力適配處理模塊還用于當(dāng)該具體服務(wù)A業(yè)務(wù)邏輯處理結(jié)束后,將該加一后的具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A)I減一,將該加一后的所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl減一。
[0067]服務(wù)能力適配配置平臺(tái)還用于如果需要提高該具體服務(wù)A的并發(fā)處理能力,提高該具體服務(wù)A的服務(wù)能力等級(jí)L(A)。
[0068]服務(wù)能力適配配置平臺(tái)還用于如果該具體服務(wù)A業(yè)務(wù)邏輯存在問題,需要將該具體服務(wù)A進(jìn)行屏蔽,將該具體服務(wù)A的服務(wù)能力等級(jí)L(A)配置為零,不允許調(diào)用該具體服務(wù)A。
[0069]本發(fā)明的技術(shù)方案與【背景技術(shù)】中的中間件平臺(tái)提供的bean控制參數(shù)相比,能夠以服務(wù)為單位進(jìn)行過(guò)載保護(hù)控制,防止整個(gè)系統(tǒng)過(guò)載,減少故障影響面和系統(tǒng)中斷時(shí)間,可以實(shí)時(shí)對(duì)故障服務(wù)進(jìn)行隔離,提高用戶感知度,可以應(yīng)用于任何中間件平臺(tái),比如OracleWeblogic、IBM Websphere等,不依賴于中間件廠商。
[0070]應(yīng)說(shuō)明的是:以上實(shí)施例僅用以說(shuō)明本發(fā)明而非限制,本發(fā)明也并不僅限于上述舉例,一切不脫離本發(fā)明的精神和范圍的技術(shù)方案及其改進(jìn),其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍中。
【權(quán)利要求】
1.一種EJB服務(wù)過(guò)載保護(hù)方法,其特征在于,包括以下步驟: 配置EJB實(shí)例每個(gè)服務(wù)的服務(wù)能力等級(jí)L(X)和EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C,其中X表不一個(gè)具體服務(wù); 記錄EJB實(shí)例中一個(gè)具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I ; 記錄EJB實(shí)例中所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl ; 當(dāng)請(qǐng)求調(diào)用所述具體服務(wù)A時(shí),根據(jù)所述EJB實(shí)例每個(gè)服務(wù)的服務(wù)能力等級(jí)L(X)、EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C、所述具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I和所述所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl,判斷是否允許調(diào)用所述具體服務(wù)A和所述具體服務(wù)A是否進(jìn)入業(yè)務(wù)邏輯執(zhí)行部分。
2.根據(jù)權(quán)利要求1所述的一種EJB服務(wù)過(guò)載保護(hù)方法,其特征在于, 服務(wù)能力等級(jí)=單實(shí)例服務(wù)并發(fā)數(shù)*單服務(wù)業(yè)務(wù)占比*服務(wù)復(fù)雜度,其中, 單實(shí)例服務(wù)并發(fā)數(shù)是單個(gè)EJB服務(wù)器允許運(yùn)行的所有業(yè)務(wù)服務(wù)線程總數(shù); 單服務(wù)業(yè)務(wù)占比是單個(gè)服務(wù)在所有業(yè)務(wù)中的占比; 服務(wù)復(fù)雜度是在0.5-1.5中取值,表示所述單個(gè)服務(wù)業(yè)務(wù)邏輯的復(fù)雜度,根據(jù)所述單個(gè)服務(wù)執(zhí)行一次的耗時(shí)和/或CPU占用情況評(píng)級(jí); 如果所述單個(gè)服務(wù)的服務(wù)能力等級(jí)小于2,所述單個(gè)服務(wù)的服務(wù)能力等級(jí)設(shè)為2。
3.根據(jù)權(quán)利要求1所述的一種EJB服務(wù)過(guò)載保護(hù)方法,其特征在于,所述當(dāng)請(qǐng)求調(diào)用所述具體服務(wù)A時(shí),根據(jù)所述EJB實(shí)例每個(gè)服務(wù)的服務(wù)能力等級(jí)L(X) ,EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C、所述具體服務(wù)A的當(dāng)前并發(fā)調(diào)`用數(shù)L(A) I和所述所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl,判斷是否允許調(diào)用所述具體服務(wù)A和所述具體服務(wù)A是否進(jìn)入業(yè)務(wù)邏輯執(zhí)行部分,進(jìn)一步包括以下步驟: 當(dāng)請(qǐng)求調(diào)用所述具體服務(wù)A時(shí),將所述所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl加一; 將所述加一后的所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl與所述EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C進(jìn)行比較,如果Cl/C*100%<第一預(yù)設(shè)值,則將所述具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I加 將所述加一后的具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I與所述具體服務(wù)A的服務(wù)能力等級(jí)L (A)進(jìn)行比較,如果L (A) I <= L (A),則允許調(diào)用所述具體服務(wù)A,所述具體服務(wù)A進(jìn)入業(yè)務(wù)邏輯執(zhí)行部分,如果L(A) I > L (A),則不允許調(diào)用所述具體服務(wù)A,返回系統(tǒng)正忙的錯(cuò)誤信息給調(diào)用方。
4.根據(jù)權(quán)利要求3所述的一種EJB服務(wù)過(guò)載保護(hù)方法,其特征在于,還包括以下步驟: 如果Cl/C*100% >=第一預(yù)設(shè)值,則將所述具體服務(wù)A的服務(wù)能力等級(jí)L (A)降低第二預(yù)設(shè)值; 將所述具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I加一; 將所述加一后的具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I與所述降低后的具體服務(wù)A的服務(wù)能力等級(jí)L(A)進(jìn)行比較,并將所述加一后的所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl與所述EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C進(jìn)行比較,如果L(A)I <= L(A)并且Cl <= C,則允許調(diào)用所述具體服務(wù)A,所述具體服務(wù)A進(jìn)入業(yè)務(wù)邏輯執(zhí)行部分,否則不允許調(diào)用所述具體服務(wù)A,返回系統(tǒng)正忙的錯(cuò)誤信息給調(diào)用方。
5.根據(jù)權(quán)利要求3或者4所述的一種EJB服務(wù)過(guò)載保護(hù)方法,其特征在于,所述第一預(yù)設(shè)值是80%。
6.根據(jù)權(quán)利要求4所述的一種EJB服務(wù)過(guò)載保護(hù)方法,其特征在于,所述第二預(yù)設(shè)值是30%。
7.根據(jù)權(quán)利要求3或者4所述的一種EJB服務(wù)過(guò)載保護(hù)方法,其特征在于,還包括以下步驟: 返回系統(tǒng)正忙的錯(cuò)誤信息給調(diào)用方時(shí),發(fā)送告警到服務(wù)能力適配管理模塊; 服務(wù)能力適配管理模塊通過(guò)服務(wù)能力適配配置平臺(tái)將告警發(fā)送到網(wǎng)管系統(tǒng)。
8.根據(jù)權(quán)利要求3或者4所述的一種EJB服務(wù)過(guò)載保護(hù)方法,其特征在于,還包括以下步驟: 當(dāng)所述具體服務(wù)A業(yè)務(wù)邏輯處理結(jié)束后,將所述加一后的具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I減一,將所述加一后的所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl減一。
9.根據(jù)權(quán)利要求3或者4所述的一種EJB服務(wù)過(guò)載保護(hù)方法,其特征在于,還包括以下步驟: 如果需要提高所述具體服務(wù)A的并發(fā)處理能力,通過(guò)服務(wù)能力適配配置平臺(tái)提高所述具體服務(wù)A的服務(wù)能力等級(jí)L(A)。
10.根據(jù)權(quán)利要求3或者4所述的一種EJB服務(wù)過(guò)載保護(hù)方法,其特征在于,還包括以下步驟: 如果所述具體服務(wù)A業(yè)務(wù)邏輯`存在問題,需要將所述具體服務(wù)A進(jìn)行屏蔽,通過(guò)服務(wù)能力適配配置平臺(tái)將所述具體服務(wù)A的服務(wù)能力等級(jí)L(A)配置為零,不允許調(diào)用所述具體服務(wù)A。
11.一種EJB服務(wù)過(guò)載保護(hù)系統(tǒng),其特征在于,包括服務(wù)能力適配配置平臺(tái)、服務(wù)能力適配管理模塊和服務(wù)能力適配處理模塊,其中, 所述服務(wù)能力適配配置平臺(tái)用于配置EJB實(shí)例每個(gè)服務(wù)的服務(wù)能力等級(jí)L(X)和EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C ; 所述服務(wù)能力適配管理模塊用于記錄EJB實(shí)例中一個(gè)具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I和記錄EJB實(shí)例中所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl ; 所述服務(wù)能力適配處理模塊用于當(dāng)請(qǐng)求調(diào)用所述具體服務(wù)A時(shí),根據(jù)所述EJB實(shí)例每個(gè)服務(wù)的服務(wù)能力等級(jí)L(X) ,EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C、所述具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L (A) I和所述所有服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)Cl,判斷是否允許調(diào)用所述具體服務(wù)A和所述具體服務(wù)A是否進(jìn)入業(yè)務(wù)邏輯執(zhí)行部分。
12.根據(jù)權(quán)利要求11所述的一種EJB服務(wù)過(guò)載保護(hù)系統(tǒng),其特征在于,所述服務(wù)能力適配處理模塊進(jìn)一步用于當(dāng)請(qǐng)求調(diào)用所述具體服務(wù)A時(shí),將所述所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl 加一; 將所述加一后的所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl與所述EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C進(jìn)行比較,如果Cl/C*100%<第一預(yù)設(shè)值,則將所述具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I加 將所述加一后的具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I與所述具體服務(wù)A的服務(wù)能力等級(jí)L (A)進(jìn)行比較,如果L (A) I <= L (A),則允許調(diào)用所述具體服務(wù)A,所述具體服務(wù)A進(jìn)入業(yè)務(wù)邏輯執(zhí)行部分,如果L(A) I > L (A),則不允許調(diào)用所述具體服務(wù)A,返回系統(tǒng)正忙的錯(cuò)誤信息給調(diào)用方。
13.根據(jù)權(quán)利要求12所述的一種EJB服務(wù)過(guò)載保護(hù)系統(tǒng),其特征在于,所述服務(wù)能力適配處理模塊還用于如果Cl/C*100%>=第一預(yù)設(shè)值,則將所述具體服務(wù)A的服務(wù)能力等級(jí)L(A)降低第二預(yù)設(shè)值; 將所述具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I加一; 將所述加一后的具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I與所述降低后的具體服務(wù)A的服務(wù)能力等級(jí)L(A)進(jìn)行比較,并將所述加一后的所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl與所述EJB實(shí)例的最大服務(wù)并發(fā)數(shù)C進(jìn)行比較,如果L(A)I <= L(A)并且Cl <= C,則允許調(diào)用所述具體服務(wù)A,所述具體服務(wù)A進(jìn)入業(yè)務(wù)邏輯執(zhí)行部分,否則不允許調(diào)用所述具體服務(wù)A,返回系統(tǒng)正忙的錯(cuò)誤信息給調(diào)用方。
14.根據(jù)權(quán)利要求12或者13所述的一種EJB服務(wù)過(guò)載保護(hù)系統(tǒng),其特征在于,所述服務(wù)能力適配處理模塊還用于在返回系統(tǒng)正忙的錯(cuò)誤信息給調(diào)用方時(shí),發(fā)送告警到服務(wù)能力適配管理模塊; 所述服務(wù)能力適配管理模塊還用于將告警發(fā)送給服務(wù)能力適配配置平臺(tái); 所述服務(wù)能力適配配置平臺(tái)還用于將告警發(fā)送給網(wǎng)管系統(tǒng)。
15.根據(jù)權(quán)利要求12或者13所述的一種EJB服務(wù)過(guò)載保護(hù)系統(tǒng),其特征在于,所述服務(wù)能力適配處理模塊還用于當(dāng)所述具體服務(wù)A業(yè)務(wù)邏輯處理結(jié)束后,將所述加一后的具體服務(wù)A的當(dāng)前并發(fā)調(diào)用數(shù)L(A) I減一,將所述加一后的所有服務(wù)的當(dāng)前并發(fā)調(diào)用數(shù)Cl減
O
16.根據(jù)權(quán)利要求12 或者13所述的一種EJB服務(wù)過(guò)載保護(hù)系統(tǒng),其特征在于,所述服務(wù)能力適配配置平臺(tái)還用于如果需要提高所述具體服務(wù)A的并發(fā)處理能力,提高所述具體服務(wù)A的服務(wù)能力等級(jí)L(A)。
17.根據(jù)權(quán)利要求12或者13所述的一種EJB服務(wù)過(guò)載保護(hù)系統(tǒng),其特征在于,所述服務(wù)能力適配配置平臺(tái)還用于如果所述具體服務(wù)A業(yè)務(wù)邏輯存在問題,需要將所述具體服務(wù)A進(jìn)行屏蔽,將所述具體服務(wù)A的服務(wù)能力等級(jí)L(A)配置為零,不允許調(diào)用所述具體服務(wù)A0
【文檔編號(hào)】H04L29/08GK103873509SQ201210535540
【公開日】2014年6月18日 申請(qǐng)日期:2012年12月12日 優(yōu)先權(quán)日:2012年12月12日
【發(fā)明者】鐘儲(chǔ)建, 于祥兵, 蔣海濱 申請(qǐng)人:中國(guó)移動(dòng)通信集團(tuán)浙江有限公司