系统响应时间波动抑制方法和系统转让专利

申请号 : CN201810330686.9

文献号 : CN108600354B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张磊张之宇吕俊逸郭柱王真谢丽丽

申请人 : 中国民航信息网络股份有限公司

摘要 :

本发明提供了一种系统响应时间波动抑制方法和系统。其中,该方法包括:用于执行相同功能的多个应用程序分别根据应用程序响应服务请求的响应时间调整其工作状态,并将工作状态上报给负载均衡器;负载均衡器接收用户的服务请求,并根据多个应用程序的工作状态,将服务请求分发给多个应用程序。通过本发明,多个相同功能的应用程序根据其工作状态轮流处理服务请求,解决了因应用程序后台处理任务所导致的系统响应时间变长的问题,提高了系统响应时间。

权利要求 :

1.一种系统响应时间波动抑制系统,其特征在于,包括:负载均衡器和服务器,其中,所述服务器上部署有用于执行相同功能的多个应用程序;

所述应用程序,用于根据所述应用程序响应服务请求的响应时间调整其工作状态,并将所述工作状态上报给所述负载均衡器,所述工作状态包括:接收服务请求状态和不接收服务请求状态;

所述负载均衡器,用于接收用户的服务请求,并根据所述多个应用程序的所述工作状态,将所述服务请求分发给所述多个应用程序;

其中,所述服务器包括协调模块,用于确定所述服务器上的多个所述应用程序的所述工作状态;

其中,所述服务器包括预热模块,用于向所述服务器中的多个所述应用程序发送服务请求,并根据多个所述应用程序分别响应服务请求的响应时间,确定每个应用程序的工作状态;

其中,所述预热模块,用于向所述服务器中的多个所述应用程序发送服务请求,并确定多个所述应用程序中响应服务请求的响应时间最小的一个应用程序的工作状态为接收服务请求状态,确定多个所述应用程序中其他的应用程序的工作状态为不接收服务请求状态。

2.根据权利要求1所述的系统,其特征在于,所述应用程序部署在同一个服务器上,或者所述应用程序部署在多个服务器上。

3.根据权利要求1所述的系统,其特征在于,所述应用程序包括心跳模块,用于根据所述协调模块确定的所述工作状态,生成携带有所述工作状态的心跳信息,并定时将所述心跳信息发送给所述负载均衡器。

4.根据权利要求1所述的系统,其特征在于,所述负载均衡器,用于将所述服务请求分发给所述多个应用程序中工作状态为接收服务请求状态的一个或者多个应用程序。

5.一种系统响应时间波动抑制方法,其特征在于,包括:

用于执行相同功能的多个应用程序分别根据所述应用程序响应服务请求的响应时间调整其工作状态,并将所述工作状态上报给负载均衡器,所述工作状态包括:接收服务请求状态和不接收服务请求状态;

所述负载均衡器接收用户的服务请求,并根据所述多个应用程序的所述工作状态,将所述服务请求分发给所述多个应用程序;

其中,在多个应用程序分别根据所述应用程序响应服务请求的响应时间调整其工作状态之前,所述方法还包括:所述多个应用程序所部署的服务器确定所述服务器上的多个所述应用程序的所述工作状态;

其中,所述多个应用程序所部署的服务器确定所述服务器上的多个所述应用程序的所述工作状态包括:所述服务器向所述服务器中的多个所述应用程序发送服务请求,并根据多个所述应用程序分别响应服务请求的响应时间,确定每个应用程序的工作状态;

其中,所述多个应用程序所部署的服务器确定所述服务器上的多个所述应用程序的所述工作状态包括:所述服务器向所述服务器中的多个所述应用程序发送服务请求,并确定多个所述应用程序中响应服务请求的响应时间最小的一个应用程序的工作状态为接收服务请求状态,确定多个所述应用程序中其他的应用程序的工作状态为不接收服务请求状态。

6.根据权利要求5所述的方法,其特征在于,所述应用程序部署在同一个服务器上,或者所述应用程序部署在多个服务器上。

7.根据权利要求5所述的方法,其特征在于,所述多个应用程序分别根据所述应用程序响应服务请求的响应时间调整其工作状态,并将所述工作状态上报给负载均衡器包括:所述多个应用程序根据所述服务器确定的所述工作状态,生成携带有所述工作状态的心跳信息,并定时将所述心跳信息发送给所述负载均衡器。

8.根据权利要求5所述的方法,其特征在于,所述负载均衡器根据所述多个应用程序的所述工作状态,将所述服务请求分发给所述多个应用程序包括:所述负载均衡器将所述服务请求分发给所述多个应用程序中工作状态为接收服务请求状态的一个或者多个应用程序。

说明书 :

系统响应时间波动抑制方法和系统

技术领域

[0001] 本发明涉及负载均衡领域,具体而言,涉及一种系统响应时间波动抑制方法和系统。

背景技术

[0002] 术语解释
[0003] ART:Application Response Time,应用程序响应时间,是应用程序性能的重要衡量指标之一,从用户提交请求到用户收到系统回应的时间间隔。
[0004] 最大响应时间:应用程序响应时间的最大值。
[0005] Java:是一种编程语言。
[0006] JVM:java虚拟机。Java虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
[0007] GC:garbage collection,垃圾回收。在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。JVM自动释放无人引用的内存块的过程叫做垃圾回收。
[0008] Garbage Collectors:垃圾回收器,JVM中,负责垃圾回收的组件。
[0009] 对于java应用程序,由于gc的存在,应用程序会遭遇响应时间的“波动”。在GC的过程中,会出现"stop-the-world",它在目前所实现的GC算法中都将出现,它出现的时候,JVM中运行的应用程序将停止执行,也就是说应用中的所有线程将停止响应,直到"stop-the-world"完成工作。换言之,在GC期间,应用程序响应时间会变长。
[0010] Jvm的实现中,提供了多种的垃圾回收器,这些回收器对于系统响应时间的影响有所区别。常见的垃圾回收器包括:Serial GC,Parallel GC,Concurrent Mark-Sweep(CMS GC),G1GC。回收类型分为minor GC和major GC(也叫做Full GC)。Serial GC回收器的特点是单线程回收),minor GC和major GC都需要暂停应用(即stop-the-world)。在parallel GC中,minor和full GC都是并行的,可使用多核并行回收,可指定使用多少线程,能很好的改善响应时间。CMS GC旨在减少应用的响应时间,主要应对低响应延时的应用场景,但是,仍然存在stop-the-world;一旦发生,应用将停止响应直到它工作完成。G1GC作为CMS GC的一种替代,出现在Java 6update 20或者更高版本中才具有),它可指定GC导致的应用停止时间,有不同的内存分布,提高应用实时性。
[0011] 通过对垃圾回收器的选择和优化,可以降低响应时间;但是,GC发生时,仍然可能导致响应时间变长。
[0012] 对于非java应用程序,没有GC导致的最大响应时间变长;但是,当应用程序进行一些后台的非应用处理工作时(例如,从数据库加载大量数据到缓存),也可能导致最大响应时间变长。

发明内容

[0013] 本发明提供了一种系统响应时间波动抑制方法和系统,以至少解决相关技术中因应用程序后台处理任务所导致的系统响应时间变长的问题。
[0014] 第一方面,本发明实施例提供了一种系统响应时间波动抑制系统,包括:负载均衡器和服务器,其中,所述服务器上部署有用于执行相同功能的多个应用程序;
[0015] 所述应用程序,用于根据所述应用程序响应服务请求的响应时间调整其工作状态,并将所述工作状态上报给所述负载均衡器,所述工作状态包括:接收服务请求状态和不接收服务请求状态;
[0016] 所述负载均衡器,用于接收用户的服务请求,并根据所述多个应用程序的所述工作状态,将所述服务请求分发给所述多个应用程序。
[0017] 第二方面,本发明实施例提供了一种系统响应时间波动抑制方法,包括:
[0018] 用于执行相同功能的多个应用程序分别根据所述应用程序响应服务请求的响应时间调整其工作状态,并将所述工作状态上报给负载均衡器,所述工作状态包括:接收服务请求状态和不接收服务请求状态;
[0019] 所述负载均衡器接收用户的服务请求,并根据所述多个应用程序的所述工作状态,将所述服务请求分发给所述多个应用程序。
[0020] 通过本发明实施例提供的系统响应时间波动抑制方法和系统,采用用于执行相同功能的多个应用程序分别根据应用程序响应服务请求的响应时间调整其工作状态,并将工作状态上报给负载均衡器;负载均衡器接收用户的服务请求,并根据多个应用程序的工作状态,将服务请求分发给多个应用程序的方式,通过多个相同功能的应用程序根据其工作状态轮流处理服务请求,解决了因应用程序后台处理任务所导致的系统响应时间变长的问题,提高了系统响应时间。

附图说明

[0021] 此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0022] 图1是根据本发明实施例的系统响应时间波动抑制方法的流程图;
[0023] 图2是根据本发明实施例的系统响应时间波动抑制装置的结构框图;
[0024] 图3是根据本发明优选实施例的A/B切换过程的示意图;
[0025] 图4是根据本发明优选实施例的预热过程的流程图。

具体实施方式

[0026] 下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。
[0027] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0028] 在本实施例中提供了一种系统响应时间波动抑制方法,图1是根据本发明实施例的系统响应时间波动抑制方法的流程图,如图1所示,该流程包括如下步骤:
[0029] 步骤S101,用于执行相同功能的多个应用程序分别根据应用程序响应服务请求的响应时间调整其工作状态,并将工作状态上报给负载均衡器,工作状态包括:接收服务请求状态和不接收服务请求状态;
[0030] 步骤S102,负载均衡器接收用户的服务请求,并根据多个应用程序的工作状态,将服务请求分发给多个应用程序。
[0031] 可选地,应用程序部署在同一个服务器上,或者应用程序部署在多个服务器上。
[0032] 可选地,在多个应用程序分别根据应用程序响应服务请求的响应时间调整其工作状态之前,方法还包括:多个应用程序所部署的服务器确定服务器上的多个应用程序的工作状态。
[0033] 可选地,多个应用程序所部署的服务器确定服务器上的多个应用程序的工作状态包括:服务器向服务器中的多个应用程序发送服务请求,并根据多个应用程序分别响应服务请求的响应时间,确定每个应用程序的工作状态。
[0034] 可选地,多个应用程序所部署的服务器确定服务器上的多个应用程序的工作状态包括:服务器向服务器中的多个应用程序发送服务请求,并确定多个应用程序中响应服务请求的响应时间最小的一个应用程序的工作状态为接收服务请求状态,确定多个应用程序中其他的应用程序的工作状态为不接收服务请求状态。
[0035] 可选地,多个应用程序分别根据应用程序响应服务请求的响应时间调整其工作状态,并将工作状态上报给负载均衡器包括:多个应用程序根据服务器确定的工作状态,生成携带有工作状态的心跳信息,并定时将心跳信息发送给负载均衡器。
[0036] 可选地,负载均衡器根据多个应用程序的工作状态,将服务请求分发给多个应用程序包括:负载均衡器将服务请求分发给多个应用程序中工作状态为接收服务请求状态的一个或者多个应用程序。
[0037] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0038] 在本实施例中还提供了一种系统响应时间波动抑制装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”或者“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0039] 图2是根据本发明实施例的系统响应时间波动抑制装置的结构框图,如图2所示,该装置包括:负载均衡器21和服务器22,其中,服务器22上部署有用于执行相同功能的多个应用程序221;
[0040] 应用程序221,用于根据应用程序221响应服务请求的响应时间调整其工作状态,并将工作状态上报给负载均衡器21,工作状态包括:接收服务请求状态和不接收服务请求状态;
[0041] 负载均衡器21,用于接收用户的服务请求,并根据多个应用程序221的工作状态,将服务请求分发给多个应用程序221。
[0042] 可选地,应用程序221部署在同一个服务器上,或者应用程序部署在多个服务器上。
[0043] 可选地,服务器22包括协调模块,用于确定服务器上的多个应用程序221的工作状态。
[0044] 可选地,服务器22包括预热模块,用于向服务器中的多个应用程序221发送服务请求,并根据多个应用程序221分别响应服务请求的响应时间,确定每个应用程序221的工作状态。
[0045] 可选地,预热模块,用于向服务器22中的多个应用程序221发送服务请求,并确定多个应用程序221中响应服务请求的响应时间最小的一个应用程序221的工作状态为接收服务请求状态,确定多个应用程序221中其他的应用程序221的工作状态为不接收服务请求状态。
[0046] 可选地,应用程序221包括心跳模块,用于根据协调模块确定的工作状态,生成携带有工作状态的心跳信息,并定时将心跳信息发送给负载均衡器21。
[0047] 可选地,负载均衡器21,用于将服务请求分发给多个应用程序221中工作状态为接收服务请求状态的一个或者多个应用程序221。
[0048] 需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述模块分别位于多个处理器中。
[0049] 为了使本发明实施例的描述更加清楚,下面结合优选实施例进行描述和说明。
[0050] 针对应用程序响应时间的波动,本优选实施例提供了一种系统响应时间波动抑制方案,该方案能降低最大响应时间,将它控制在较低的水平。
[0051] 本优选实施例采用的技术方案包括四个部分:负载均衡、心跳机制、预热、A/B切换。
[0052] 负载均衡器,后台连接多台服务器,负载均衡接收到请求后,分发给后台的服务器;负载均衡器对内负责连接一台或者多台服务器,在系统启动后,跟服务器建立连接;对外接收请求,收到调用者(用户)请求后,挑选一台服务器并传递请求给该服务器。同时,根据服务器中部署的应用程序的心跳,变换到与相应应用程序的连接:负载均衡器只会发送请求给UP状态的应用程序。
[0053] 心跳机制,负载均衡和服务器上部署的应用程序之间,支持UP/DOWN机制,服务器上部署的应用程序可以表明是否希望接收请求;应用程序提供接口,可以被调用以提供自身的状态,回复UP表明该应用程序允许接收请求;回复DOWN表明该应用程序拒绝接收请求。负载均衡器会定期的轮询服务器,获取其上部署的应用程序的UP/DOWN状态,负载均衡器会断掉与应用程序全部为DOWN状态的服务器的连接,维持或者创建与应用程序存在UP状态的服务器的连接。
[0054] A/B切换,每台服务器上部署两套或者两套以上的相同的应用程序A、B,在协调(coordinator)程序(相当于上述的协调模块)的指挥下,轮流工作;其中,相同的应用程序是指用于完成相同功能或者用于处理相同的服务请求的应用程序。
[0055] A/B切换的过程如图3所示:初始状态:A工作,B空闲;找到空闲的应用程序(B);B,加载规则;B,预热;确认B的响应时间稳定;B上线;A下线;新状态:A空闲,B工作。
[0056] 预热,内部发送若干请求给应用程序处理,确保应用程序的响应时间满足要求。预热过程如图4所示。
[0057] 综上所述,通过本发明实施例,提供的一种响应时间波动的抑制方法,能够独立于JVM之外;即使JVM自身的调优不能满足最大响应时间要求时,也可以应用本发明实施例提供的额方案来调整最大响应时间。并且,本方案可以扩展到非java应用程序,抑制其响应时间波动。
[0058] 需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
[0059] 以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
[0060] 还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
[0061] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。