基于esb的流量控制方法

文档序号:7624731阅读:685来源:国知局
专利名称:基于esb的流量控制方法
技术领域
本发明涉及计算机技术领域,特别是涉及一种基于ESB的流量控制的方法。
背景技术
ESB(Enterprise Service Bus,企业服务总线)作为 SOA(Service-orientedarchitecture,面向服务架构)落地平台在企业中的应用越来越多,ESB作为服务提供者和服务消费者之间的中介将企业中各种各样的应用集成一起来。企业应用作为ESB服务一旦发布到ESB后,可供企业内所有其他应用调用,此时,服务质量控制的问题就突出出来。为了保证服务的质量,通过流量控制的机制来保证服务 请求不会在单位时间内产生过多请求,影响服务提供方对其他应用系统提供服务。同时随着接入的服务越来越多,企业不希望某个特定的实时性要求不高的服务由于突发的大交易量,导致影响其他服务的服务质量。所以需要对此类服务进行流量控制。例如一个数据备份服务,通常此类服务的实时性要求不高,但可能会占用较多的CPU或网络资源,从而导致生产环境中其他应用的服务质量下降。再例如一个接入到ESB的企业旧有的CRM(客户关系管理)系统,其本身设计或运行环境由于初期的规划并没有预见到接入ESB后的访问量,所以必须将其单位时间内访问量控制在可接受的阀值内,从而避免由于过多的访问导致CRM系统崩溃。同时,ESB作为企业信息系统中的服务提供者和服务消费者之间的中介,本身也是一个软件。随着时间的推移,ESB集成的应用会越来越多,本身占用系统资源也会越来越多,如果有其他系统和ESB平台运行在同一环境中,ESB平台占用过多资源会对其他系统正常运行造成影响,为了避免这种情况的出现,需要对ESB平台进行全局流量控制。通常的流量控制方法都会为服务设定一个阀值,在服务提供者被请求服务时,ESB查看服务提供者在本周期内是否已经达到了预定阀值,如果已经达到预定阀值则会阻塞本次服务请求或告知服务消费者服务提供者繁忙。另外,现有流量控制方法通常是当服务接受访问时,ESB通过查看服务提供者的服务历史记录,来计算当前周期内该服务流量是否达到预定阀值,这种计算方法首先要求每次服务调用都要记录本次调用时间,以便再次调用时作为计算流量是否达到预定阀值的依据。这种方法有两个缺点1)计算方法复杂,尤其服务并发的情况下的计算更加复杂,计算本身也占用时间,很难达到精确流量控制的效果,经常和预定阀值有误差;2)由于要记录历史记录,复杂的计算会相对增加对系统资源的占用。

发明内容
(一 )要解决的技术问题本发明要解决的技术问题是提高流量控制的精确度,并且减少流量控制过程中对系统资源的占用。( 二 )技术方案
为了解决上述技术问题,本发明提供了一种基于ESB的流量控制方法,该方法包括以下步骤SI、定期向信号池发放流量控制信号,以保证信号池中有预设数量的信号,所述信号池包括全局信号池和服务信号池,所述全局信号池中存储全局流量控制信号,所述服务信号池中存储单个服务流量控制信号;S2、当企业服务总线ESB接收到服务请求时,对ESB进行全局流量控制,然后对ESB进行单个服务流量控制。其中,步骤SI具体包括步骤S101,查询所述信号池中可用信号的数量;S102,判断所述信号池内可用信号的数量a是否小于预定阀值b ;如果a<b,则先执行步骤S103,再执行步骤S104,否则直接执行步骤S104 ; S103,向信号池内发放b-a个信号,以使得信号池中可用信号的数量a增加到预定阀值b ;S104,等待预设周期后回到SlOl步骤重新进行新一轮信号发放。其中,步骤S2具体为ESB接收到服务请求时,首先检查是否需要全局流量控制,如果需要全局流量控制,则从全局信号池中申请信号,申请到信号或不需要全局流量控制时,检查被请求的服务是否需要服务流量控制;如果需要服务流量控制,则从服务信号池中申请信号,申请到信号或不需要服务流量控制时,则调用被请求的服务。优选地,申请信号的方式为从全局信号池或服务信号池中申请可用信号;如果申请到可用信号,则全局信号池或服务信号池内可用信号数量减I ;如果申请不到可用信号,则等待指定时间后继续申请,直到申请到可用信号。(三)有益效果本发明通过流量控制信号发放和申请的方式达到了对ESB系统进行全局流量控制或单个服务流量控制的目的,避免了系统运行中出现ESB系统全局或个别服务访问频度峰值过高给生产系统带来不稳定因素,并有效提高流量控制的精确性,减少流量控制本身对系统资源的占用。


图I为本发明的方法流程图;图2是图I中步骤SI的流程图;图3为图I中步骤S2的流程图。
具体实施例方式下面结合附图和实施用例,对本发明的具体实施方式
作进一步详细描述。以下实施用例用于说明本发明,但不用来限制本发明的范围。如背景技术中所提到的,传统的方法,通常是计算服务消费历史统计数据的方式来计算当前流量是否达到阀值,这种方法计算复杂,而且通常会有统计数据相对实际数据滞后的缺陷,而本发明的流量控制信号发放和申请的方式,不依赖于服务消费历史数据,因此克服了传统方法的缺陷。下面具体描述本发明。图I为本发明的方法流程图,包括以下步骤SI、定期向信号池发放流量控制信号(以下简称为信号),以保证信号池中有预设数量的信号,所述信号池包括全局信号池和服务信号池,所述全局信号池中存储全局流量控制信号,所述服务信号池中存储单个服务流量控制信号;全局流量控制信号的作用用于控制ESB全局总流量,当ESB系统(可以简称为ESB)需要全局流量控制时,只有申请到全局流量控制信号,注册到ESB上的服务才被允许提供相应的功能。单个服务流量控制信号作用用于控制单个服务流量,当ESB系统需要单个服务流量控制时,只有申请到此项单个服务(该项单个服务已注册到ESB上)的流量控制信号,此项单个服务才提供相应的功倉泛。S2、当ESB接收到服务请求时,通过全局流量控制逻辑对ESB进行全局流量控制,然后通过单个服务流量控制逻辑对ESB进行单个服务流量控制。
图2为步骤SI的具体流程图,如图2所示,包括以下步骤S101,查询信号池中可用信号的数量;S102,判断信号池内可用信号的数量a是否比预定阀值b小;如果a<b,则执行步骤S103,否则直接执行步骤S104 ;S103,向信号池内发放b-a个信号,以使得信号池中可用信号的数量a增加到预定阀值,如对于全局信号池,预定阀值为1000,此时全局信号池中可用信号数量为550,则向全局信号池内发放1000-550 = 450个信号,对于服务信号池也如此;S104,信号发放完毕或不需要发放信号时,等待预设周期(例如I秒)后回到SlOl步骤重新进行新一轮信号发放。图3为本发明流量控制(包括全局流量控制和单个服务流量控制)流程图,如图3所示,包括以下步骤步骤S201,ESB接收到一个服务请求(例如来自服务消费者ConsumerA的服务请求),此服务请求要求注册到ESB上的服务ServiceA提供相应的功能;步骤S202,判断是否需要全局流量控制,如果需要,执行步骤S203,否则执行步骤S205 ;步骤S203,从全局信号池申请全局流量控制信号,至此完成了全局流量控制流程;步骤S204,判断是否申请到了信号,如果申请到信号则执行步骤S205,否则指定等待时间(如200毫秒)后回到步骤203重新申请信号;步骤S205,判断是否需要服务ServiceA流量控制,如果需要则执行步骤S206,否则执行步骤S208 ;步骤S206,从服务ServiceA信号池申请单个服务流量控制信号;步骤S207,判断是否从服务ServiceA信号池申请到了信号,如果申请到信号或不需要服务流量控制时则执行步骤S208,否则等待指定时间后,执行步骤S206重新申请信号;步骤S208,从服务ServiceA信号池申请到信号后,执行服务(ServiceA)来提供相应的服务。
上述步骤S203 S204为全局流量控制流程,步骤S205 S208为单个服务流量控制流程。本发明通过服务消费者请求服务,ESB获得可执行信号,从而达到对ESB系统或单个服务流量控制的目的,避免ESB系统运行中出现ESB系统或个别服务访问频度峰值过高给生产系统带来不稳定因素,并有效提高流量控制的精确性,减少流量控制本身对系统资源的占用。

以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
权利要求
1.一种基于ESB的流量控制方法,其特征在于,该方法包括以下步骤 51、定期向信号池发放流量控制信号,以保证信号池中有预设数量的信号,所述信号池包括全局信号池和服务信号池,所述全局信号池中存储全局流量控制信号,所述服务信号池中存储单个服务流量控制信号; 52、当企业服务总线ESB接收到服务请求时,首先对ESB进行全局流量控制,然后对ESB进行单个服务流量控制。
2.如权利要求I所述的方法,其特征在于,步骤SI具体包括步骤 S101,查询所述信号池中可用信号的数量; S102,判断所述信号池内可用信号的数量a是否小于预定阀值b ;如果a < b,则先执行步骤S103,再执行步骤S104,否则直接执行步骤S104 ; S103,向信号池内发放b-a个信号,以使得信号池中可用信号的数量a增加到预定阀值b ; S104,等待预设周期后回到SlOl步骤重新进行新一轮信号发放。
3.如权利要求I或2所述的方法,其特征在于,步骤S2具体为ESB接收到服务请求时,首先检查是否需要全局流量控制,如果需要全局流量控制,则从全局信号池中申请全局流量控制信号,申请到全局流量控制信号或不需要全局流量控制时,检查被请求的服务是否需要服务流量控制;如果需要服务流量控制,则从服务信号池中申请单个服务流量控制信号,申请到单个服务流量控制信号或不需要服务流量控制时,则调用被请求的服务。
4.如权利要求3所述的方法,其特征在于,申请信号的方式为 从全局信号池或服务信号池中申请可用信号,如果申请到可用信号,则全局信号池或服务信号池内可用信号数量减I ;如果申请不到可用信号,则等待指定时间后继续申请,直到申请到可用信号。
全文摘要
本发明公开了一种基于ESB的流量控制方法,属于计算机技术领域,该方法包括以下步骤S1、定期向信号池发放流量控制信号,以保证信号池中有预设数量的信号,所述信号池包括全局信号池和服务信号池,所述全局信号池中存储全局流量控制信号,所述服务信号池中存储单个服务流量控制信号;S2、当企业服务总线ESB接收到服务请求时,对ESB进行全局流量控制,然后对ESB进行单个服务流量控制。本发明避免了ESB系统运行中出现ESB系统全局或个别服务访问频度峰值过高给生产系统带来不稳定因素,并能有效提高流量控制的精确性,减少流量控制本身对系统资源的占用。
文档编号H04L29/08GK102724222SQ20111007763
公开日2012年10月10日 申请日期2011年3月29日 优先权日2011年3月29日
发明者刘川, 张玉柱, 李京华 申请人:北京东方通科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1