一种ejb服务过载保护方法和系统的制作方法

文档序号:7987219阅读:285来源:国知局
一种ejb服务过载保护方法和系统的制作方法
【专利摘要】本发明公开了一种EJB服务过载保护方法和系统,方法包括配置EJB实例每个服务的服务能力等级L(X)和EJB实例的最大服务并发数C,其中X表示一个具体服务;记录EJB实例中一个具体服务A的当前并发调用数L(A)1;记录EJB实例中所有服务的当前并发调用数C1;当请求调用所述具体服务A时,根据所述EJB实例每个服务的服务能力等级L(X)、EJB实例的最大服务并发数C、所述具体服务A的当前并发调用数L(A)1和所述所有服务的当前并发调用数C1,判断是否允许调用所述具体服务A和所述具体服务A是否进入业务逻辑执行部分。本发明的技术方案能够实现服务的过载保护能力,防止单个或多个服务故障引起整个系统故障,减少故障影响面和系统中断时间。
【专利说明】一种EJB服务过载保护方法和系统
【技术领域】
[0001]本发明涉及移动通信业务支撑【技术领域】,尤其涉及一种EJB服务过载保护方法和系统。
【背景技术】
[0002]J2EE(Java 2 Enterprise Edition)体系架构由于其可移植性强、可重用性好以及互操作性强等优点,成为IT系统中普通采用的架构。JAVA商业应用组件技术EJB(Enterprise JavaBeans)作为J2EE架构中基于组件的应用架构,具有事务处理能力、支持多用户安全操作和高可扩展能力。
[0003]在普遍采用的展现层(WEB)、应用层(EJB)、数据库层(Database)三层架构中,企业通常使用EJB来实现业务逻辑。基于EJB实现的各种业务逻辑组件,我们称之为EJB服务。
[0004]作为业务逻辑处理核心的EJB,其高可用性、过载保护能力是IT系统架构需要重点考虑的内容。由于EJB服务与其部署的中间件平台都运行在一个Java虚拟机(JVM)中,对EJB中每个服务的管理带来难题。在实际应用中将存在如下问题:
[0005]I)单个服务并发数高导致系统整体故障。单个服务并发数特别高,占用了大部分CPU资源或内存,导致系统挂死或是JVM OOM(Out of Memory)故障,影响整个EJB应用。
[0006]2)单个服务故障导致系统整体故障。单个服务故障会导致后续请求持续排队,会导致EJB服务器内存资源耗尽,导致JVM OOM故障。
[0007]3)单个服务故障导致客户端故障。单个服务故障会导致后续请求持续排队,调用EJB服务的客户端处于挂死状态,对最终用户的感知极差。
[0008]4)无法对故障服务进行隔离。比如在应用上线后,发现某个服务的业务逻辑存在问题,会造成错误数据,无法进行独立屏蔽,必须停止整个EJB服务器,重新部署修正后的整个EJB应用。
[0009]为了解决以上问题,通常是中间件平台提供bean实例并发数控制参数,如OracleWebLogic平台提供的max-beans-1n-free-pool,来控制bean实例的最大并发个数,防止过载。
[0010]但该技术方案有如下缺点:
[0011]I)只能控制到bean —级,无法以服务为单位进行控制;
[0012]2)对bean实例并发的控制后,后续请求仍旧会持续进入等待队列中,导致EJB服务器系统资源耗尽;同时导致前台客户端挂死,最终用户感知度差;
[0013]3)此类参数只能实现静态配置,无法在运行中动态调整;
[0014]4)不是所有中间件厂商都提供类似参数控制。

【发明内容】

[0015]为了解决现有技术中存在的不能有效控制过载保护以及无法隔离故障的技术问题,本发明提出一种EJB服务过载保护方法和系统,能够实现服务的过载保护能力,防止单个或多个服务故障引起整个系统故障,减少故障影响面和系统中断时间。
[0016]本发明一方面提供了一种EJB服务过载保护方法,包括以下步骤:
[0017]配置EJB实例每个服务的服务能力等级L(X)和EJB实例的最大服务并发数C,其中X表不一个具体服务;
[0018]记录EJB实例中一个具体服务A的当前并发调用数L(A)I ;
[0019]记录EJB实例中所有服务的当前并发调用数Cl ;
[0020]当请求调用所述具体服务A时,根据所述EJB实例每个服务的服务能力等级L(X)、EJB实例的最大服务并发数C、所述具体服务A的当前并发调用数L(A) I和所述所有服务的当前并发调用数Cl,判断是否允许调用所述具体服务A和所述具体服务A是否进入业务逻辑执行部分。
[0021]本发明另一方面提供了一种EJB服务过载保护系统,包括服务能力适配配置平台、服务能力适配管理模块和服务能力适配处理模块,其中,
[0022]所述服务能力适配配置平台用于配置EJB实例每个服务的服务能力等级L和EJB实例的最大服务并发数C ;
[0023]所述服务能力适配管理模块用于记录EJB实例中一个具体服务的当前并发调用数LI和记录EJB实例中所有服务的当前并发调用数Cl ;
[0024]所述服务能力适配处理模块用于当请求调用所述具体服务时,根据所述EJB实例每个服务的服务能力等级L、EJB实例的最大服务并发数C、所述具体服务的当前并发调用数LI和所述所有服务的当前并发调用数Cl,判断是否允许调用所述具体服务和所述具体服务是否进入业务逻辑执行部分。包括服务能力适配配置平台、服务能力适配管理模块和服务能力适配处理模块,其中,
[0025]所述服务能力适配配置平台用于配置EJB实例每个服务的服务能力等级L(X)和EJB实例的最大服务并发数C ;
[0026]所述服务能力适配管理模块用于记录EJB实例中一个具体服务A的当前并发调用数L(A) I和记录EJB实例中所有服务的当前并发调用数Cl ;
[0027]所述服务能力适配处理模块用于当请求调用所述具体服务A时,根据所述EJB实例每个服务的服务能力等级L(X) ,EJB实例的最大服务并发数C、所述具体服务A的当前并发调用数L(A) I和所述所有服务A的当前并发调用数Cl,判断是否允许调用所述具体服务A和所述具体服务A是否进入业务逻辑执行部分。
[0028]本发明的技术方案由于引入了服务能力适配(SAA)技术架构模型和EJB服务的服务能力等级管理方法(SAAL),替代了传统的中间件平台提供的bean控制参数的方法,对EJB单个服务的服务能力进行动态管理以及单个服务细粒度精确控制,实现EJB服务器的过载保护功能以及故障屏蔽功能,防止单个或多个服务故障引起整个系统故障,减少故障影响面和系统中断时间;并且可以对故障服务进行隔离,防止前台调用挂死,提高最终用户的体验;同时实现了服务过载隔离的动态配置和告警能力,让维护人员及时处理系统潜在故障,大大提高了故障定位的准确性、及时性。
【专利附图】

【附图说明】[0029]图1是本发明实施例一中EJB服务过载保护的流程图。
[0030]图2是本发明实施例二中EJB服务过载保护系统的结构示意图。
【具体实施方式】
[0031]下面结合附图对本发明的【具体实施方式】进行详细描述。
[0032]本发明的【具体实施方式】是基于服务能力适配(Service AbilityAdaption, SAA)的概念和技术,对EJB单个服务的服务能力进行统一管理和细粒度的控制。
[0033]其中EJB 服务的服务能力等级(Service Ability Adaption Level, SAAL)定义:
[0034]服务能力等级=单实例服务并发数*单服务业务占比*服务复杂度
[0035]单实例服务并发数:单个EJB服务器允许运行的所有业务服务线程总数;
[0036]单服务业务占比:某个服务在所有业务中的占比;
[0037]服务复杂度:在0.5-1.5中取值,表示该服务业务逻辑的复杂度,根据该服务执行一次的耗时和/或CPU占用情况评级;
[0038]如果服务能力等级小于2,服务能力等级设为2。
[0039]实际应用中可以将对服务的控制细化到方法一级,在此统一称为服务。
[0040]例如EJB服务器实例设计的最大并发数是300,服务A在所有业务中的占比是10%,该服务A的服务复杂度为0.8,则该服务A的服务能力等级为300*10% *0.8 = 24。
[0041]图1是本发明实施例一中EJB服务过载保护的流程图。如图1所示,该EJB服务过载保护的流程包括以下步骤:
[0042]步骤101、配置EJB实例每个服务的服务能力等级L(X)和EJB实例的最大服务并发数C,其中X表示一个具体服务。
[0043]步骤102、记录EJB实例中一个具体服务A的当前并发调用数L (A) I。
[0044]步骤103、记录EJB实例中所有服务的当前并发调用数Cl。
[0045]步骤104、当用户请求调用该具体服务A时,将所述所有服务的当前并发调用数Cl加一。
[0046]步骤105、将加一后的所有服务的当前并发调用数Cl与该EJB实例的最大服务并发数C进行比较,如果Cl/C*100%< 80%,则转至步骤106,如果Cl/C*100%>= 80%,则转至步骤108。
[0047]步骤106、将具体服务A的当前并发调用数L(A) I加一。
[0048]步骤107、将加一后的具体服务A的当前并发调用数L(A) I与该具体服务A的服务能力等级L (A)进行比较,如果L (A) I <= L (A),则转至步骤110,如果L (A) I > L (A),则转至步骤111。
[0049]步骤108、将该具体服务A的服务能力等级L(A)降低30%,将该具体服务A的当前并发调用数L(A) I加一。
[0050]步骤109、将该加一后的具体服务A的当前并发调用数L(A) I与降低后的该具体服务A的服务能力等级L(A)进行比较,并将所述加一后的所有服务的当前并发调用数Cl与所述EJB实例的最大服务并发数C进行比较,如果L (A) I <= L (A)并且Cl < = C,,则转至步骤110,否则转至步骤111。
[0051]步骤110、允许调用该具体服务A,该具体服务A进入业务逻辑执行部分。当该具体服务A的业务逻辑处理结束后,将该加一后的具体服务A的当前并发调用数L(A) I减一,将该加一后的所有服务的当前并发调用数Cl减一。
[0052]步骤111、允许调用该具体服务A,返回系统正忙的错误信息给调用方。同时,发送告警到服务能力适配管理模块,服务能力适配管理模块通过服务能力适配配置平台将告警发送到网管系统。
[0053]如果需要提高具体服务A的并发处理能力,通过服务能力适配配置平台提高具体服务A的服务能力等级L(A)。
[0054]如果具体服务A业务逻辑存在问题,需要将具体服务A进行屏蔽,通过服务能力适配配置平台将具体服务A的服务能力等级L(A)配置为零,即不允许调用具体服务A。
[0055]为了实现上述流程,本发明的【具体实施方式】还提供了一种EJB服务过载保护系统,包括服务能力适配配置平台201、服务能力适配管理模块202和服务能力适配处理模块203。
[0056]其中,服务能力适配配置平台用于配置EJB实例每个服务的服务能力等级L(X)和EJB实例的最大服务并发数C。
[0057]服务能力适配管理模块用于记录EJB实例中一个具体服务A的当前并发调用数L(A) I和记录EJB实例中所有服务的当前并发调用数Cl ;
[0058]服务能力适配处理模块用于当请求调用该具体服务A时,根据该EJB实例每个服务的服务能力等级L(X)、EJB实例的最大服务并发数C、该具体服务A的当前并发调用数L(A) I和该所有服务A的当前并发调用数Cl,判断是否允许调用该具体服务A和该具体服务A是否进入业务逻辑执行部分。
[0059]进一步地,当请求调用该具体服务A时,将该所有服务的当前并发调用数Cl加
[0060]将该加一后的所有服务的当前并发调用数Cl与该EJB实例的最大服务并发数C进行比较,如果Cl/C*100%< 80%,则将该具体服务A的当前并发调用数L (A) I加一;
[0061]将该加一后的具体服务A的当前并发调用数L(A) I与该具体服务A的服务能力等级L (A)进行比较,如果L (A) I <= L (A),则允许调用该具体服务A,该具体服务A进入业务逻辑执行部分,如果L (A) I > L (A),则允许调用所述具体服务A返回系统正忙的错误信息给调用方;
[0062]如果Cl/C*100%>= 80%,则将该具体服务的服务能力等级L(A)降低30% ;
[0063]将该具体服务的当前并发调用数L(A) I加一;
[0064]将该加一后的具体服务A的当前并发调用数L(A) I与该降低后的具体服务A的服务能力等级L(A)进行比较,并将该加一后的所有服务的当前并发调用数Cl与该EJB实例的最大服务并发数C进行比较,如果L(A) I <= L(A)并且Cl <= C,则允许调用该具体服务A,该具体服务A进入业务逻辑执行部分,否则不允许调用该具体服务A,返回系统正忙的
错误信息给调用方。
[0065]服务能力适配处理模块还用于在返回系统正忙的错误信息给调用方时,发送告警到服务能力适配管理模块;服务能力适配管理模块还用于将告警发送给服务能力适配配置平台;服务能力适配配置平台还用于将告警发送给网管系统。
[0066]服务能力适配处理模块还用于当该具体服务A业务逻辑处理结束后,将该加一后的具体服务A的当前并发调用数L(A)I减一,将该加一后的所有服务的当前并发调用数Cl减一。
[0067]服务能力适配配置平台还用于如果需要提高该具体服务A的并发处理能力,提高该具体服务A的服务能力等级L(A)。
[0068]服务能力适配配置平台还用于如果该具体服务A业务逻辑存在问题,需要将该具体服务A进行屏蔽,将该具体服务A的服务能力等级L(A)配置为零,不允许调用该具体服务A。
[0069]本发明的技术方案与【背景技术】中的中间件平台提供的bean控制参数相比,能够以服务为单位进行过载保护控制,防止整个系统过载,减少故障影响面和系统中断时间,可以实时对故障服务进行隔离,提高用户感知度,可以应用于任何中间件平台,比如OracleWeblogic、IBM Websphere等,不依赖于中间件厂商。
[0070]应说明的是:以上实施例仅用以说明本发明而非限制,本发明也并不仅限于上述举例,一切不脱离本发明的精神和范围的技术方案及其改进,其均应涵盖在本发明的权利要求范围中。
【权利要求】
1.一种EJB服务过载保护方法,其特征在于,包括以下步骤: 配置EJB实例每个服务的服务能力等级L(X)和EJB实例的最大服务并发数C,其中X表不一个具体服务; 记录EJB实例中一个具体服务A的当前并发调用数L(A) I ; 记录EJB实例中所有服务的当前并发调用数Cl ; 当请求调用所述具体服务A时,根据所述EJB实例每个服务的服务能力等级L(X)、EJB实例的最大服务并发数C、所述具体服务A的当前并发调用数L(A) I和所述所有服务的当前并发调用数Cl,判断是否允许调用所述具体服务A和所述具体服务A是否进入业务逻辑执行部分。
2.根据权利要求1所述的一种EJB服务过载保护方法,其特征在于, 服务能力等级=单实例服务并发数*单服务业务占比*服务复杂度,其中, 单实例服务并发数是单个EJB服务器允许运行的所有业务服务线程总数; 单服务业务占比是单个服务在所有业务中的占比; 服务复杂度是在0.5-1.5中取值,表示所述单个服务业务逻辑的复杂度,根据所述单个服务执行一次的耗时和/或CPU占用情况评级; 如果所述单个服务的服务能力等级小于2,所述单个服务的服务能力等级设为2。
3.根据权利要求1所述的一种EJB服务过载保护方法,其特征在于,所述当请求调用所述具体服务A时,根据所述EJB实例每个服务的服务能力等级L(X) ,EJB实例的最大服务并发数C、所述具体服务A的当前并发调`用数L(A) I和所述所有服务的当前并发调用数Cl,判断是否允许调用所述具体服务A和所述具体服务A是否进入业务逻辑执行部分,进一步包括以下步骤: 当请求调用所述具体服务A时,将所述所有服务的当前并发调用数Cl加一; 将所述加一后的所有服务的当前并发调用数Cl与所述EJB实例的最大服务并发数C进行比较,如果Cl/C*100%<第一预设值,则将所述具体服务A的当前并发调用数L(A) I加 将所述加一后的具体服务A的当前并发调用数L(A) I与所述具体服务A的服务能力等级L (A)进行比较,如果L (A) I <= L (A),则允许调用所述具体服务A,所述具体服务A进入业务逻辑执行部分,如果L(A) I > L (A),则不允许调用所述具体服务A,返回系统正忙的错误信息给调用方。
4.根据权利要求3所述的一种EJB服务过载保护方法,其特征在于,还包括以下步骤: 如果Cl/C*100% >=第一预设值,则将所述具体服务A的服务能力等级L (A)降低第二预设值; 将所述具体服务A的当前并发调用数L(A) I加一; 将所述加一后的具体服务A的当前并发调用数L(A) I与所述降低后的具体服务A的服务能力等级L(A)进行比较,并将所述加一后的所有服务的当前并发调用数Cl与所述EJB实例的最大服务并发数C进行比较,如果L(A)I <= L(A)并且Cl <= C,则允许调用所述具体服务A,所述具体服务A进入业务逻辑执行部分,否则不允许调用所述具体服务A,返回系统正忙的错误信息给调用方。
5.根据权利要求3或者4所述的一种EJB服务过载保护方法,其特征在于,所述第一预设值是80%。
6.根据权利要求4所述的一种EJB服务过载保护方法,其特征在于,所述第二预设值是30%。
7.根据权利要求3或者4所述的一种EJB服务过载保护方法,其特征在于,还包括以下步骤: 返回系统正忙的错误信息给调用方时,发送告警到服务能力适配管理模块; 服务能力适配管理模块通过服务能力适配配置平台将告警发送到网管系统。
8.根据权利要求3或者4所述的一种EJB服务过载保护方法,其特征在于,还包括以下步骤: 当所述具体服务A业务逻辑处理结束后,将所述加一后的具体服务A的当前并发调用数L(A) I减一,将所述加一后的所有服务的当前并发调用数Cl减一。
9.根据权利要求3或者4所述的一种EJB服务过载保护方法,其特征在于,还包括以下步骤: 如果需要提高所述具体服务A的并发处理能力,通过服务能力适配配置平台提高所述具体服务A的服务能力等级L(A)。
10.根据权利要求3或者4所述的一种EJB服务过载保护方法,其特征在于,还包括以下步骤: 如果所述具体服务A业务逻辑`存在问题,需要将所述具体服务A进行屏蔽,通过服务能力适配配置平台将所述具体服务A的服务能力等级L(A)配置为零,不允许调用所述具体服务A。
11.一种EJB服务过载保护系统,其特征在于,包括服务能力适配配置平台、服务能力适配管理模块和服务能力适配处理模块,其中, 所述服务能力适配配置平台用于配置EJB实例每个服务的服务能力等级L(X)和EJB实例的最大服务并发数C ; 所述服务能力适配管理模块用于记录EJB实例中一个具体服务A的当前并发调用数L(A) I和记录EJB实例中所有服务的当前并发调用数Cl ; 所述服务能力适配处理模块用于当请求调用所述具体服务A时,根据所述EJB实例每个服务的服务能力等级L(X) ,EJB实例的最大服务并发数C、所述具体服务A的当前并发调用数L (A) I和所述所有服务A的当前并发调用数Cl,判断是否允许调用所述具体服务A和所述具体服务A是否进入业务逻辑执行部分。
12.根据权利要求11所述的一种EJB服务过载保护系统,其特征在于,所述服务能力适配处理模块进一步用于当请求调用所述具体服务A时,将所述所有服务的当前并发调用数Cl 加一; 将所述加一后的所有服务的当前并发调用数Cl与所述EJB实例的最大服务并发数C进行比较,如果Cl/C*100%<第一预设值,则将所述具体服务A的当前并发调用数L(A) I加 将所述加一后的具体服务A的当前并发调用数L(A) I与所述具体服务A的服务能力等级L (A)进行比较,如果L (A) I <= L (A),则允许调用所述具体服务A,所述具体服务A进入业务逻辑执行部分,如果L(A) I > L (A),则不允许调用所述具体服务A,返回系统正忙的错误信息给调用方。
13.根据权利要求12所述的一种EJB服务过载保护系统,其特征在于,所述服务能力适配处理模块还用于如果Cl/C*100%>=第一预设值,则将所述具体服务A的服务能力等级L(A)降低第二预设值; 将所述具体服务A的当前并发调用数L(A) I加一; 将所述加一后的具体服务A的当前并发调用数L(A) I与所述降低后的具体服务A的服务能力等级L(A)进行比较,并将所述加一后的所有服务的当前并发调用数Cl与所述EJB实例的最大服务并发数C进行比较,如果L(A)I <= L(A)并且Cl <= C,则允许调用所述具体服务A,所述具体服务A进入业务逻辑执行部分,否则不允许调用所述具体服务A,返回系统正忙的错误信息给调用方。
14.根据权利要求12或者13所述的一种EJB服务过载保护系统,其特征在于,所述服务能力适配处理模块还用于在返回系统正忙的错误信息给调用方时,发送告警到服务能力适配管理模块; 所述服务能力适配管理模块还用于将告警发送给服务能力适配配置平台; 所述服务能力适配配置平台还用于将告警发送给网管系统。
15.根据权利要求12或者13所述的一种EJB服务过载保护系统,其特征在于,所述服务能力适配处理模块还用于当所述具体服务A业务逻辑处理结束后,将所述加一后的具体服务A的当前并发调用数L(A) I减一,将所述加一后的所有服务的当前并发调用数Cl减
O
16.根据权利要求12 或者13所述的一种EJB服务过载保护系统,其特征在于,所述服务能力适配配置平台还用于如果需要提高所述具体服务A的并发处理能力,提高所述具体服务A的服务能力等级L(A)。
17.根据权利要求12或者13所述的一种EJB服务过载保护系统,其特征在于,所述服务能力适配配置平台还用于如果所述具体服务A业务逻辑存在问题,需要将所述具体服务A进行屏蔽,将所述具体服务A的服务能力等级L(A)配置为零,不允许调用所述具体服务A0
【文档编号】H04L29/08GK103873509SQ201210535540
【公开日】2014年6月18日 申请日期:2012年12月12日 优先权日:2012年12月12日
【发明者】钟储建, 于祥兵, 蒋海滨 申请人:中国移动通信集团浙江有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1