CN111988234A - 过载保护方法、装置、服务器及存储介质 - Google Patents

过载保护方法、装置、服务器及存储介质 Download PDF

Info

Publication number
CN111988234A
CN111988234A CN201910433900.8A CN201910433900A CN111988234A CN 111988234 A CN111988234 A CN 111988234A CN 201910433900 A CN201910433900 A CN 201910433900A CN 111988234 A CN111988234 A CN 111988234A
Authority
CN
China
Prior art keywords
connection request
server
connection
preset
current limiting
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910433900.8A
Other languages
English (en)
Inventor
张凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Wangsu Co Ltd
Original Assignee
Xiamen Wangsu Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xiamen Wangsu Co Ltd filed Critical Xiamen Wangsu Co Ltd
Priority to CN201910433900.8A priority Critical patent/CN111988234A/zh
Publication of CN111988234A publication Critical patent/CN111988234A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1014Server selection for load balancing based on the content of a request

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明实施例涉及计算机软件技术领域,公开了一种过载保护方法、装置、服务器及存储介质。本发明中在服务器接收到连接请求时,根据服务器当前负载情况判断连接请求是否满足预设的限流规则;若判定连接请求满足限流规则,则拒绝对所述连接请求进行处理,使服务器的负载在合适的范围之内。单台服务器根据自身的负载情况判断是否需要限流,无需通过监控中心汇总每台服务器当前的负载情况后将连接请求下发至服务器,节省了负载情况信息汇总的时间,从而可以对连接请求是否需要限流进行实时判断,提高了客户端的连接请求的处理效率。单台服务器根据自身的复杂情况判断是否需要限流,判断限流过程所需处理的数据信息较少,使判断过程更加简单容易实现。

Description

过载保护方法、装置、服务器及存储介质
技术领域
本发明实施例涉及计算机软件技术领域,特别涉及一种过载保护方法、装置、服务器及存储介质。
背景技术
服务器是提供计算服务的设备,通常需要响应客户的服务请求,并对访客的请求进行处理,随着现在互联网技术的快速发展,服务器需要处理的用户访问请求也越来越多,但是由于受到服务器自身处理能力的限制,任何一台服务器在一定时间内能处理的用户访问请求的个数是有限的,不足以应对突增的大量访问请求。为了解决突增的大量访问请求导致服务器过载等问题,需要通过提高服务器的处理能力,提高单位时间内响应的访问请求的数量,以避免服务器过载。
发明人发现相关技术中至少存在如下问题:通过提高服务器的处理能力,提高单位时间内响应的访问请求的数量,从而改善服务器的过载问题,这种方式对服务器处理数据的能力要求较高,实现高效处理访问请求所需硬件成本较高;另外,通过监控中心汇总每台服务器当前的负载情况然后下发,无法实时对服务器进行过载保护。
发明内容
本发明实施方式的目的在于提供一种过载保护方法、装置、服务器及存储介质,服务器在接收到连接请求的同时进行限流规则的判断,使过载保护更加及时,避免过载导致服务器损坏。
为解决上述技术问题,本发明的实施方式提供了一种过载保护方法,包括:响应于接收到的连接请求,根据服务器当前负载情况判断连接请求是否满足预设的限流规则;若判定连接请求满足所述限流规则,则拒绝对连接请求进行处理。
本发明的实施方式还提供了一种过载保护装置,包括:接收模块,判断模块,处理模块;接收模块用于接收连接请求;判断模块用于响应于接收到的连接请求,根据服务器当前负载情况判断连接请求是否满足预设的限流规则;处理模块用于在判定连接请求满足限流规则时,拒绝对连接请求进行处理。
本发明的实施方式还提供了一种服务器,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述的过载保护方法。
本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时上述的过载保护方法。
本发明实施方式相对于现有技术而言,在服务器接收到连接请求时,根据该服务器当前的负载情况判断连接请求是否满足预设的限流规则,在判定连接请求满足预设的限流规则时,拒绝对所述连接请求进行处理,服务器在接收到连接请求的同时进行限流规则的判断,使过载保护更加及时,避免过载导致服务器损坏。整个过程无需对服务器的运算能力进行调整,保证服务器的成本在可接受的范围之内。单台服务器根据服务器自身的负载情况判断是否需要限流,无需通过监控中心汇总每台服务器当前的负载情况后将连接请求下发至服务器,节省了负载情况信息汇总的时间,节省了负载情况信息汇总的时间,从而可以对连接请求是否需要限流进行实时判断,提高了客户端的连接请求的处理效率。另外,单台服务器根据自身的复杂情况判断是否需要限流,判断限流过程所需处理的数据信息较少,使判断过程更加简单容易实现。
另外,若判定连接请求未满足限流规则,则将连接请求放入等待队列等待处理;其中,等待队列中的连接请求在当前处理的连接数未达到预设上限时处理。将无需进行限流操作的连接请求放入等待队列,无需立即对接收到的连接请求进行处理,减缓服务器处理连接请求的压力。
另外,在当前处理的连接数未达到预设上限时处理等待队列中的连接请求,具体包括:在当前处理的连接数未达到预设上限时,判断当前处理的同一IP的连接请求的数量是否超过第一预设门限;该IP为当前待处理的连接请求的IP;若当前处理的同一IP的连接请求的数量超过第一预设门限,则处理等待队列中除该IP外其余IP的连接请求。这样做可以保证同时处理同一IP的连接请求不超过第一预设门限,避免某个客户端IP的连接请求过多从而独占服务器的资源,保证资源的合理分配。
另外,在当前处理的同一IP的连接请求的数量超过第一预设门限之后,还包括:在同时处理的IP的连接请求的数量小于第一预设门限时,优先处理该IP的连接请求。这样做可以将同一IP同时发出的连接请求以较短的时间处理完成,从而及时给予客户端完整的反馈。
另外,限流规则至少包括:连接请求的IP的状态为被限制状态且IP的总连接数超过预设阈值;拒绝对连接请求进行处理,具体包括:向发送连接请求的客户端发送用于指示服务器过载的响应消息并释放连接请求;其中,连接请求的IP的状态,在判定当前处理的同一IP的连接请求的数量达到第一预设门限时,被设置为被限制状态;在判定当前处理的同一IP的连接请求的数量低于第二预设门限时,被设置为未被限制状态;其中,第二预设门限的数值小于第一预设门限的数值。这样做可以在正在处理的IP的连接请求过多时,暂时限制该IP的连接请求,在正在处理的IP的连接请求达到预设下水位时,取消对该IP的限制,在单IP的连接请求过多或者慢请求较多时,拒绝对该IP的连接请求进行处理,避免资源独占。
另外,限流规则至少包括以下任意之一或其任意组合:当前连接数达到预设最大值、内存占用率达到预设最大阈值、当前处理的连接数达到预设上限或当前处理的同一IP的连接请求的数量超过第一预设门限;拒绝对连接请求进行处理,具体为:向发送连接请求的客户端发送用于指示服务器过载的响应消息并释放连接请求。这样做可以使服务器的负载在合适的范围内,保证服务器的正常运行。
另外,根据服务器当前负载情况判断连接请求是否满足预设的限流规则,具体为:在接入层根据服务器当前负载情况判断连接请求是否满足预设的限流规则。这样做无须独立探测后端依赖服务的可用性,避免后端某个组件出现故障带来雪崩效应,导致服务器崩溃不可用的情况发生。
另外,接入层的架构以netty构建。这样做可以在连接建立时统一做负载情况的统计及限流的处理,避免接收多余的数据造成带宽资源的浪费。
另外,预设的限流规则中包含至少一个限流阈值,限流阈值为根据条件因素进行动态调整的阈值;其中,条件因素至少包括以下之一或其任意组合:所处业务场景、所处时段、所连接的客户端。这样做可以实现限流规则下的阈值的动态设置,根据业务场景不同,时段不同,机器动态不同,客户端IP不同多维度调整阈值,以达到单台服务器根据实时情况对连接请求进行限流处理。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,除非有特别申明,附图中的图不构成比例限制。
图1是根据本发明第一实施方式中的过载保护方法的流程图;
图2是根据本发明第二实施方式中的过载保护方法的流程图;
图3是根据本发明第二实施方式中对连接请求的处理过程示意图;
图4是根据本发明第二实施方式中对等待队列中连接请求进行限流处理的流程图;
图5是根据本发明第三实施方式中的过载保护方法的流程图;
图6是根据本发明第三实施方式中对客户端发出的连接请求的处理响应过程;
图7是根据本发明第四实施方式中的过载保护装置结构示意图;
图8是根据本发明第五实施方式中的服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
本发明的第一实施方式涉及一种过载保护方法,在本实施方式中,响应于接收到的连接请求,根据服务器当前负载情况判断连接请求是否满足预设的限流规则;若判定连接请求满足所述限流规则,则拒绝对连接请求进行处理,使服务器的负载在合适的范围之内。服务器可以根据预设的限流规则自行判断是否过载,使得过载判断更加简单,减少了过载判断所消耗的时间,提高了处理连接请求的效率。下面对本实施方式的过载保护方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须,具体流程如图1所示。
步骤101,接收连接请求。具体地说,服务器实时监听客户端的连接请求,在客户端发送连接请求时,接收该连接请求。接收到的连接请求是否满足预设的限流规则可以由服务器的接入层进行判断,这样做无需独立探测后端依赖服务的可用性,在后端的某个组件出现故障时,依赖该服务器的后端服务不可用,导致数据无法及时释放从而使接入层的内存飙升。由接入层对连接请求进行限流,在后端服务不可用时接入层的内存使用率升高,从而对连接请求进行限流,使内存保持在预设范围内,无需额外的对后端进行探测即可有效的避免由内存飙升带来的雪崩效应等造成服务器崩溃的问题。
接入层可以以netty构建,Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。以netty为架构对接入层进行构建,可以在连接建立时统一做负载的统计及限流的处理,避免多余的数据造成带宽资源的浪费。具体的说,使用netty接入连接请求时,将连接请求直接发送至应用层,相对于使用tomcat接入连接请求,使用tomcat需要对连接请求进行解析,解析过程如下,接入连接请求、接收连接请求数据、解析所接收的数据、将解析的数据包装成http对象,最后将包装后的http对象传入应用层。两者相比,使用netty接入连接请求传入应用层的数据信息较少,提高了传输效率。
步骤102,根据服务器当前负载情况判断连接请求是否满足预设的限流规则。若判断结果为是,则进入步骤103;若判断结果为否,则进入步骤105。具体地说,本实施方式不对服务器当前负载情况做具体限定,负载情况包括但不限于服务器当前CPU(CentralProcessing Unit/Processor中央处理器)使用率,内存使用率,当前服务器的连接数,当前处理的连接数或当前处理的同一IP的连接请求的数量等中至少一种。对于限流规则的设置,本实施方式中同样不做具体限定,限流规则包括但不限于以下规则任意之一或其任意组合:当前连接数达到预设最大值,当前内存使用率达到预设最大阈值,当前处理的连接数达到预设上限或当前处理的同一IP的连接请求的数量超过第一预设门限。在预设的限流规则包括当前连接数达到预设最大值时,例如,预设最大值设置为4000,在接收到连接请求时服务器检测到当前的连接数为2100,则当前连接数未超过预设最大值4000,所以未满足预设的限流规则,无需对接收到的连接请求进行限流,可以对连接请求进行处理;若在接收到连接请求时检测当前的连接数达到4000,则满足预设的限流规则,对接收到连接请求进行限流,将该连接请求释放,并响应过载问题于客户端。在预设的限流规则包括当前内存使用率达到预设最大阈值时,例如,预设最大阈值设置为80%,在接收到连接请求时服务器检测到当前内存使用率为75%,则未满足预设的限流规则,无需对接收到的连接请求进行限流,可以对连接请求进行处理;若接收到连接请求是服务器检测到当前内存使用率达到80%,则满足预设的限流规则,对接收到连接请求进行限流,将该连接请求释放,并响应过载问题于客户端。值得一提的是,本实施方式中对限流规则的设置不局限与单个限流规则,也可以是根据多个限流规则进行综合判断,以上述两个限流规则为例,也就是说在服务器满足当前连接数未达到预设最大值且当前内存使用率未达到预设最大阈值时,对连接请求进行处理。
在实际应用中可以对限流规则下的阈值进行动态设置,也可以根据不同的条件因素对阈值进行调整,条件因素至少包括:所处业务场景、所处时段、机器的动态或所连接的客户端。根据业务场景不同对阈值进行调整,例如,在对注重处理效率的业务场景的连接请求进行限流判断时,可以适当降低限流规则中同时处理的连接请求的数量的相关阈值,从而提高处理效率;根据所处时段不同对阈值进行调整,例如,在上午及下午的工作时间段,由于工作时间用户对服务器的请求数量增加,可以适当提高限流规则中当前的连接总数的最大阈值,同理在午夜等休息时间段,可以适当减少限流规则中当前的连接总数的最大阈值;根据机器动态不同对阈值进行调整,例如,在当前服务器限制的连接请求较多时,适当放宽限流规则对连接请求的限制程度,同理在当前服务器限制的连接请求减少时,适当增加限流规则对连接请求的限制程度;根据连接的客户端的不同对阈值进行调整,例如,某客户端的IP并发数较大,则对该IP的连接请求进行处理时,适当提高同时处理该IP的连接请求的连接数量的相关阈值。限流规则下的预设阈值可以通过配置中心进行配置,配置后将阈值应用于服务器,使服务器可以适应不同需求,并且可以很好的应对连接请求的突增或突减的情况发生。
步骤103,拒绝对连接请求进行处理。具体地说,在判定服务器当前负载情况满足预设的限流规则时,可以向发送连接请求的客户端发送用于指示服务器过载的响应消息,并释放连接请求;还可以将连接请求放入等待队列中等待满足限流规则后进行处理。其中,向客户端发送的过载消息可以是HTTP 503错误,即服务不可用,其含义是由于暂时超载或临时维护,服务器目前无法处理该HTTP请求。用户在接收到过载问题时,可以在服务器过载情况得到缓解后进行连接请求,这样做可以延迟连接请求的处理时间,缓解服务器的压力。在响应过载问题于客户端后释放所接收的连接请求,避免无效的连接请求占用服务器的内存,降低服务器的负载。
若在步骤102中判断结果为否,则进入步骤104,对连接请求进行处理。具体地说,在未满足限流条件,对连接请求进行处理时,首先验证用户是否拥有访问系统的权利,通常通过密码来进行验证,在验证通过后将接收到的连接请求及相关文件放入对外内存,由业务线程池对连接请求进行处理,并将处理结果存储并响应给客户端,完成连接请求及相关文件的处理。
本发明实施方式相对于现有技术而言,在服务器接收到连接请求时,根据该服务器当前的负载情况判断连接请求是否满足预设的限流规则,在判定连接请求满足预设的限流规则时,拒绝对所述连接请求进行处理,使服务器的负载在合适的范围之内。单台服务器根据服务器自身的负载情况判断是否需要限流,无需通过监控中心汇总每台服务器当前的负载情况后将连接请求下发至服务器,节省了负载情况信息汇总的时间,从而可以对连接请求是否需要限流进行实时判断,提高了客户端的连接请求的处理效率。另外,单台服务器根据自身的复杂情况判断是否需要限流,判断限流过程所需处理的数据信息较少,使判断过程更加简单容易实现。
本发明的第二实施方式涉及一种过载保护方法。第二实施方式对第一实施方式进一步细化,主要细化之处在于:在本发明第二实施方式中对限流规则进行了细致的限定,具体流程如图2所示。
步骤201,接收连接请求。
步骤202,根据服务器当前负载情况判断连接请求是否满足预设的限流规则。若判断结果为是,则进入步骤203;若判断结果为否,则进入步骤204。
步骤203,拒绝对连接请求进行处理。
步骤201至203与第一实施方式中步骤101至103一致,在此不再赘述。
步骤204,将连接请求放入等待队列。
步骤205,在所处理的连接数未达到上限时,获取等待队列的连接请求。
具体地说,预先创建等待队列,将满足限流规则,即在正在处理的连接数达到预设上限之后接收到的连接请求放入等待队列,等待队列中的连接请求供服务器处理时获取,这样做有效的控制了服务器接收连接请求的速率,使处理连接请求的连接数控制在预设范围内,保证连接请求处理的效率及准确度。在将连接请求放入等待队列中时,按时间顺序将连接请求依次放入,这样做可以保证在处理时获取的连接请求可以根据放入等待队列的时间进行获取。在处理等待队列中的连接请求时,优先处理放入等待队列时间最早的一个连接请求。这样做可以保证每个连接请求的处理效率,保证每个连接请求的处理时间大致相同。
步骤206,判断当前处理的同一IP的连接请求的数量是否超过预设第一门限,若判断结果为是,则进入步骤207;若判断结果为否,则进入步骤208。
步骤207,处理等待队列中除该IP外其余IP的连接请求。
步骤208,处理该IP的连接请求。
具体地说,在判定当前处理的同一IP的连接请求的数量超过预设第一门限时,可以在处理等待队列中除该IP外其余IP的连接请求的同时,将该IP的未处理部分的连接请求放入该IP的等待队列中,以便在同时处理该IP的连接请求的数量低于预设第一门限时,优先在该IP的等待队列中获取该IP的连接请求,使同一IP同时发出的连接请求可以集中处理。例如,预设第一门限设置为800,正在处理的总连接数的预设上限设置为1500,在等待队列中接收到800个该同一IP的连接请求,此时同一IP的连接请求数量超过预设第一门限,但是总连接数未达到预设上限,需按顺序在等待队列中接收下一个连接请求,假设此时连接请求与上述接收的800个连接请求为同一IP,则将该连接请求放入该IP的等待队列,并继续接收总的等待队列中的下一个连接请求,在连接请求与上述IP相同时,放入该IP的等待队列,直至接收到除上述IP外其余IP的连接请求,对接收到的连接请求进行处理。
在对IP的等待队列中的连接请求进行处理时,假设某IP的并发数为1000,即该IP同时发送的连接请求的数量为1000,第一预设门限为800,那么该IP的等待队列中包含该IP的第801至1000个连接请求,在检测到该IP的第一个连接请求处理完成后,从该IP的等待队列中获取第801个连接请求进行处理,同理在第二个连接请求处理完成后,从该IP的等待队列中获取第802个连接请求进行处理,以此类推,直至上述1000个连接请求均被接收且正在进行处理,若此时未达到正在处理的最大连接数,则获取其他IP的连接请求。另外,在检测到IP的等待队列中该IP的连接请求的数量为零时,说明该IP同一时间发送的连接请求均进入处理过程,该IP的等待队列失去效用,为了减少内存,可以将该IP的等待队列销毁。具体如图4所示。
步骤401,在当前正在处理的连接数未达到上限时,获取总的等待队列中第一个连接请求。
步骤402,判断是否获取到连接请求,若判断结果为是,则进入步骤403;若判断结果为否,则返回步骤401。具体地说,在获取连接请求的过程中,若未获取到等待队列中的连接请求,则有可能是在等待队列中不存在连接请求,也有可能是获取过程中出现错误导致没有获取到连接请求。若等待队列中不存在连接请求,说明目前客户端没有发送连接请求,需要等待一段时间后继续获取;若获取过程中出现错误,则需要修复漏洞,保证连接请求的正常获取。
步骤403,判断获取的连接请求的IP是否被限流,若判断结果为是,则进入步骤421后返回步骤401;若判断结果为否,则进入步骤404。此时判断IP是否被限流具体为判断该IP的并发处理数是否大于预设上水位,若大于预设上水位,则限制对所述IP的连接请求的处理,将该连接请求放入其IP的等待队列中。
步骤404,将该IP的并发处理数+1。
步骤405,判断该IP是否被限制且并发数大于预设上水位,若判断结果为是,则进入步骤406;若判断结果为否,在进入步骤408。具体地说,这里的预设上水位的数值相较于上述说明中的第一预设门限的数值小1,假设第一预设门限的数值为800,则该预设上水位的数值为799,在当前IP的并发处理数为799时,所获取的下一个连接请求与该IP相同,则将该IP的并发处理数+1,此时IP的并发处理数大于预设上水位且未被限制,进入步骤406、407,将该IP设置为被限制状态,并接收第800个该IP的连接请求的数据,通过业务线程池进行处理,在获取到第801个该IP的连接请求时,该IP已处于被限制状态,将该连接请求放入IP的等待队列,实现单IP的并发处理数不超过第一预设门限。
步骤406,创建该IP的等待队列。
步骤407,添加该IP为被限制状态。
步骤408,接收请求数据。
步骤409,业务线程池处理业务。
步骤410,响应处理结果给客户端。
步骤411,释放连接。
步骤412,该IP并发数-1。
步骤413,判断IP是否为被限制状态且并发数小于预设下水位,若判断结果为是,则进入步骤414;若判断结果为否,则进入步骤415。
步骤414,IP状态更改为不受限制状态。
步骤415,判断当前正在处理的连接数是否到达上限,若判断结果为是,则重复步骤415,直至检测到当前处理的连接数未达到上限;在判断结果为否时,进入步骤416。
步骤416,判断释放连接的IP是否存在该IP的等待队列,若判断结果为是,则进入步骤417;若判断结果为否,则返回步骤401。
步骤417,获取该IP的等待队列的第一个连接请求。
步骤418,判断是否获取到连接请求,若判断结果为是,则返回步骤404;若判断结果为否,则进入步骤419。
步骤419,判断该IP的等待队列是否为空,若判断结果为是,则进入步骤420;若判断结果为否,则返回步骤417。具体地说,未获取到连接请求且该IP的等待队列不为空,则说明在获取过程中出现错误,需要进行检测排除错误后继续获取。
步骤420,销毁该队列。
在步骤403判断结果为是时,进入步骤421,将连接请求放入该IP的等待队列。具体地说,该IP的等待队列在步骤406中由于IP并发数大于上水位而创建,也就是在IP的并发处理数大于上水位时,再接收到该IP的连接请求,则创建该IP的等待队列并在接收到该IP的连接请求后继续放入该IP的等待队列中,直至接收到与该IP不同的连接请求,对与IP不同的连接请求进行处理。
以上接收等待队列的连接请求的方式,控制了接收连接请求的速率,并且限制了接收单个IP的连接请求的数量,解决共享资源情况下,某个客户端IP或者客户连接请求过多而独占资源。
在实际应用中,对接收到的等待队列中的连接请求的处理过程具体如图3所示。连接请求31在判定未满足限流规则后进入等待队列32,在正在处理的连接请求的连接数未达到上限时,接收队列33接收等待队列32中的第一个连接请求,并在判定该连接请求满足处理条件要求时,将连接请求发送至堆外内存34,通过业务线程池35对连接请求进行处理,最终将处理结果保存至存储器36,完成连接请求的处理。
值得一提的是,在判定同时处理同一IP的连接请求的数量达到第一预设门限时,可以将IP的状态设置为被限制状态,并在IP的实际并发数低于第二预设门限时,将IP的状态设置为未被限制状态;其中,第二预设门限的数值小于第一预设门限的数值;在限流规则中可以包括:连接请求的IP的状态为非被限制状态,用以限制该IP的连接请求的连入,当接收到受限制状态IP发送的连接请求时,直接发送过载响应给该连接请求的客户端并释放连接。这样做可以在正在处理的IP的连接请求过多时,暂时限制该IP的连接请求,在正在处理的IP的连接请求达到第二预设门限时,取消对该IP的限制,在单IP的连接请求过多或者慢请求较多时,将该IP的连接请求释放,避免资源独占。
本发明的第三实施方式涉及一种过载保护方法。第三实施方式对第一实施方式进一步细化,主要细化之处在于:在本发明第三实施方式中对多个限流规则进行具体说明。具体流程如图5所示。
步骤501,接收连接请求。
步骤502,判断当前连接数是否超过最大值,若判断结果为是,则进入步骤506;若判断结果为否,则进入步骤503。
步骤503,判断内存是否超过最大阈值,若判断结果为是,则进入步骤506;若判断结果为否,则进入步骤504。
步骤504,判断当前处理的连接数是否达到预设上限,若判断结果为是,则进入步骤506;若判定结果为否,则进入步骤505。
步骤505,判断当前处理同一IP的连接请求的数量是否超过第一预设门限,若判断结果为是,则进入步骤506;若判断结果为否,则进入步骤508。
步骤506,向发送连接请求的客户端发送用于指示服务器过载的响应信息。具体地说,步骤502至505为具体的限流规则,满足任一条上述限流规则,则进入步骤506,向发送连接请求的客户端发送用于指示服务器过载的响应信息。
步骤507,将连接请求释放。
步骤508,对连接请求进行处理。
在实际应用中对客户端发出的连接请求的处理响应过程具体如图6所示。客户端向服务器发出建立连接的请求,服务器创建连接接收客户端的连接请求,并根据限流规则判断客户端的连接请求是否满足限流条件,若满足限流条件则释放连接,在不满足限流条件时将该连接请求放入等待队列,等待服务器接收连接请求数据,并对数据进行处理。在服务器当前处理的连接数小于预设上限时,接收等待队列的首个连接请求,根据连接请求对客户端进行身份验证,验证是否具有访问权限,在验证通过后接收连接请求的文件内容,并将接收到的文件内容放入堆外内存,通过业务线程池对接收到的文件内容进行处理,并将响应结果发送回客户端。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明第四实施方式涉及一种过载保护装置,如图7所示,包括:接收模块71,判断模块72,处理模块73;接收模块71用于接收连接请求;判断模块72用于响应于接收到的连接请求,根据服务器当前负载情况判断连接请求是否满足预设的限流规则;处理模块73用于在判定连接请求满足限流规则时,拒绝对所述连接请求进行处理。
在本实施方式中,在接收模块接收连接请求时,单台服务器的判断模块根据服务器自身的负载情况判断是否需要限流,在判定连接请求满足限流规则时,拒绝对所述连接请求进行处理,使服务器的负载在合适的范围之内。服务器自行对负载情况进行判断,无需通过监控中心汇总每台服务器当前的负载情况后将连接请求下发至服务器,节省了负载情况信息汇总的时间,从而可以对连接请求是否需要限流进行实时判断,提高了客户端的连接请求的处理效率。另外,单台服务器根据自身的复杂情况判断是否需要限流,判断限流过程所需处理的数据信息较少,使判断过程更加简单容易实现。
不难发现,本实施方式为与第一实施方式相对应的装置实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
另外,处理模块还用于在判断模块判定连接请求未满足所述限流规则时,将连接请求放入等待队列等待处理;其中,等待队列中的连接请求在当前处理的连接数未达到预设上限时处理。
另外,处理模块具体用于在当前处理的连接数未达到预设上限时,判断当前处理的同一IP的连接请求的数量是否超过第一预设门限;该IP为当前待处理的连接请求的IP;并在当前处理的同一IP的连接请求的数量超过第一预设门限时,处理等待队列中除该IP外其余IP的连接请求。
另外,处理模块在当前处理的同一IP的连接请求的数量超过第一预设门限之后,还用于在同时处理的IP的连接请求的数量小于第一预设门限时,优先处理IP的连接请求。
另外,还包括设置模块;设置模块用于在判定同时处理同一IP的连接请求的数量超过第一预设门限时,将IP的状态设置为被限制状态,并在同时处理单IP的连接请求的数量低于第二预设门限时,将IP的状态设置为未被限制状态;其中,第二预设门限的数值小于第一预设门限的数值;判断模块具体用于判断连接请求的IP的状态是否为被限制状态且该IP的总连接数超过预设阈值;处理模块具体用于在判定连接请求的IP的状态为被限制状态且该IP的总连接数超过预设阈值时,向发送连接请求的客户端发送用于指示服务器过载的响应消息并释放连接请求。
另外,判断模块具体用于判断当前连接数是否达到预设最大值、内存达到预设最大阈值、当前处理的连接数达到预设上限或当前处理的同一IP的连接请求的数量超过第一预设门限;所述处理模块具体用于在判定当前连接数达到预设最大值、内存达到预设最大阈值、当前处理的连接数达到预设上限或当前处理的同一IP的连接请求的数量超过第一预设门限时,向发送连接请求的客户端发送用于指示服务器过载的响应消息并释放连接请求。
另外,处理模块还用于在判定连接请求不满足限流规则时,将所述连接请求放入等待队列中等待处理;其中,所述等待队列中的所述连接请求在当前处理的连接数未达到预设上限时进行处理。
另外,还包括调整模块;调整模块用于根据条件因素调整预设的限流规则中包含的至少一个限流阈值;限流阈值为根据条件因素进行动态调整的阈值;其中,条件因素至少包括以下之一或其任意组合:所处业务场景、所处时段或所连接的客户端。
本发明第五实施方式涉及一种服务器,如图8所示,包括至少一个处理器801;以及,与至少一个处理器801通信连接的存储器802;其中,存储器802存储有可被至少一个处理器801执行的指令,指令被至少一个处理器801执行,以使至少一个处理器801能够执行上述过载保护方法。
其中,存储器802和处理器801采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器801和存储器802的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器801。
处理器801负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器802可以被用于存储处理器801在执行操作时所使用的数据。
本发明第六实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

Claims (12)

1.一种过载保护方法,其特征在于,包括:
响应于接收到的连接请求,根据服务器当前负载情况判断所述连接请求是否满足预设的限流规则;
若判定所述连接请求满足所述限流规则,则拒绝对所述连接请求进行处理。
2.根据权利要求1所述的过载保护方法,其特征在于,还包括:
若判定所述连接请求未满足所述限流规则,则将所述连接请求放入等待队列等待处理;
其中,所述等待队列中的连接请求在当前处理的连接数未达到预设上限时处理。
3.根据权利要求2所述的过载保护方法,其特征在于,所述在当前处理的连接数未达到预设上限时处理等待队列中的连接请求,具体包括:
在所述当前处理的连接数未达到预设上限时,判断当前处理的同一IP的连接请求的数量是否超过第一预设门限;所述IP为当前待处理的连接请求的IP;
若所述当前处理的同一IP的连接请求的数量超过第一预设门限,则处理所述等待队列中除所述IP外其余IP的连接请求。
4.根据权利要求3所述的过载保护方法,其特征在于,在所述当前处理的同一IP的连接请求的数量超过第一预设门限之后,还包括:
在同时处理的所述IP的连接请求的数量小于所述第一预设门限时,优先处理所述IP的连接请求。
5.根据权利要求4所述的过载保护方法,其特征在于,所述限流规则至少包括:所述连接请求的IP的状态为被限制状态且所述IP的总连接数超过预设阈值;所述拒绝对所述连接请求进行处理,具体包括:
向发送所述连接请求的客户端发送用于指示所述服务器过载的响应消息并释放所述连接请求;
其中,所述连接请求的IP的状态,在所述判定当前处理的同一IP的连接请求的数量达到所述第一预设门限时,被设置为被限制状态;在判定当前处理的同一IP的连接请求的数量低于第二预设门限时,被设置为未被限制状态;其中,所述第二预设门限的数值小于所述第一预设门限的数值。
6.根据权利要求1所述的过载保护方法,其特征在于,所述限流规则至少包括以下任意之一或其任意组合:当前连接数达到预设最大值、内存占用率达到预设最大阈值、当前处理的连接数达到预设上限或当前处理的同一IP的连接请求的数量超过第一预设门限;
所述拒绝对所述连接请求进行处理,具体为:
向发送所述连接请求的客户端发送用于指示所述服务器过载的响应消息并释放所述连接请求。
7.根据权利要求1至6中任一项所述的过载保护方法,其特征在于,所述根据服务器当前负载情况判断所述连接请求是否满足预设的限流规则,具体为:
在接入层根据服务器当前负载情况判断所述连接请求是否满足预设的限流规则。
8.根据权利要求7中任一项所述的过载保护方法,其特征在于,所述接入层的架构以netty构建。
9.根据权利要求1至6中任一项所述的过载保护方法,其特征在于,所述预设的限流规则中包含至少一个限流阈值,所述限流阈值为根据条件因素进行动态调整的阈值;其中,所述条件因素至少包括以下之一或其任意组合:所处业务场景、所处时段或所连接的客户端。
10.一种过载保护装置,其特征在于,包括:接收模块,判断模块,处理模块;
所述接收模块用于接收连接请求;
所述判断模块用于响应于接收到的连接请求,根据服务器当前负载情况判断所述连接请求是否满足预设的限流规则;
所述处理模块用于在判定所述连接请求满足所述限流规则时,拒绝对所述连接请求进行处理。
11.一种服务器,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至9中任一所述的过载保护方法。
12.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至9中任一项所述的过载保护方法。
CN201910433900.8A 2019-05-23 2019-05-23 过载保护方法、装置、服务器及存储介质 Pending CN111988234A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910433900.8A CN111988234A (zh) 2019-05-23 2019-05-23 过载保护方法、装置、服务器及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910433900.8A CN111988234A (zh) 2019-05-23 2019-05-23 过载保护方法、装置、服务器及存储介质

Publications (1)

Publication Number Publication Date
CN111988234A true CN111988234A (zh) 2020-11-24

Family

ID=73436489

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910433900.8A Pending CN111988234A (zh) 2019-05-23 2019-05-23 过载保护方法、装置、服务器及存储介质

Country Status (1)

Country Link
CN (1) CN111988234A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113473677A (zh) * 2021-06-07 2021-10-01 四维生态科技(杭州)有限公司 一种植物照明系统的控制方法、装置、终端及驱动电路
CN113722097A (zh) * 2021-08-27 2021-11-30 北京天融信网络安全技术有限公司 一种浪涌保护方法、装置、电子设备及存储介质
CN114500661A (zh) * 2021-12-22 2022-05-13 新奥新智科技有限公司 一种限流设备、方法、装置及存储介质
CN114844835A (zh) * 2022-07-04 2022-08-02 眉山环天智慧科技有限公司 一种自适应动态限流方法、设备
CN115643309A (zh) * 2022-10-27 2023-01-24 极道科技(北京)有限公司 一种基于请求调度队列长度的动态流控方法和系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110295996A1 (en) * 2010-05-28 2011-12-01 At&T Intellectual Property I, L.P. Methods to improve overload protection for a home subscriber server (hss)
CN103067293A (zh) * 2012-12-31 2013-04-24 北京京东世纪贸易有限公司 负载均衡设备的连接管理和复用的方法和系统
CN104142862A (zh) * 2013-12-16 2014-11-12 腾讯科技(深圳)有限公司 服务器的过载保护方法及装置
CN105471933A (zh) * 2014-08-07 2016-04-06 腾讯科技(深圳)有限公司 服务器过载保护方法、服务器过载保护系统及服务器
CN106411567A (zh) * 2016-08-30 2017-02-15 福建星网视易信息系统有限公司 一种服务器自动控制可负载客户端数量的方法及装置
CN106506660A (zh) * 2016-11-17 2017-03-15 中国银行股份有限公司 一种联机请求处理方法、服务器及系统
CN107995127A (zh) * 2017-12-13 2018-05-04 深圳乐信软件技术有限公司 一种过载保护方法及装置
CN108173938A (zh) * 2017-12-28 2018-06-15 泰康保险集团股份有限公司 服务器负载分流方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110295996A1 (en) * 2010-05-28 2011-12-01 At&T Intellectual Property I, L.P. Methods to improve overload protection for a home subscriber server (hss)
CN103067293A (zh) * 2012-12-31 2013-04-24 北京京东世纪贸易有限公司 负载均衡设备的连接管理和复用的方法和系统
CN104142862A (zh) * 2013-12-16 2014-11-12 腾讯科技(深圳)有限公司 服务器的过载保护方法及装置
CN105471933A (zh) * 2014-08-07 2016-04-06 腾讯科技(深圳)有限公司 服务器过载保护方法、服务器过载保护系统及服务器
CN106411567A (zh) * 2016-08-30 2017-02-15 福建星网视易信息系统有限公司 一种服务器自动控制可负载客户端数量的方法及装置
CN106506660A (zh) * 2016-11-17 2017-03-15 中国银行股份有限公司 一种联机请求处理方法、服务器及系统
CN107995127A (zh) * 2017-12-13 2018-05-04 深圳乐信软件技术有限公司 一种过载保护方法及装置
CN108173938A (zh) * 2017-12-28 2018-06-15 泰康保险集团股份有限公司 服务器负载分流方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
韩雪: ""一个基于企业服务总线的API网关的设计与实现"", 《中国优秀博硕士学位论文全文数据库(硕士)·信息科技辑》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113473677A (zh) * 2021-06-07 2021-10-01 四维生态科技(杭州)有限公司 一种植物照明系统的控制方法、装置、终端及驱动电路
CN113473677B (zh) * 2021-06-07 2023-10-13 四维生态科技(杭州)有限公司 一种植物照明系统的控制方法、装置、终端及驱动电路
CN113722097A (zh) * 2021-08-27 2021-11-30 北京天融信网络安全技术有限公司 一种浪涌保护方法、装置、电子设备及存储介质
CN113722097B (zh) * 2021-08-27 2024-04-19 北京天融信网络安全技术有限公司 一种浪涌保护方法、装置、电子设备及存储介质
CN114500661A (zh) * 2021-12-22 2022-05-13 新奥新智科技有限公司 一种限流设备、方法、装置及存储介质
CN114844835A (zh) * 2022-07-04 2022-08-02 眉山环天智慧科技有限公司 一种自适应动态限流方法、设备
CN114844835B (zh) * 2022-07-04 2022-09-20 眉山环天智慧科技有限公司 一种自适应动态限流方法、设备
CN115643309A (zh) * 2022-10-27 2023-01-24 极道科技(北京)有限公司 一种基于请求调度队列长度的动态流控方法和系统

Similar Documents

Publication Publication Date Title
CN111988234A (zh) 过载保护方法、装置、服务器及存储介质
EP3335120B1 (en) Method and system for resource scheduling
CN107832126B (zh) 一种线程的调整方法及其终端
CN109672627A (zh) 基于集群服务器的业务处理方法、平台、设备及存储介质
CN110677274A (zh) 一种基于事件的云网络服务调度方法及装置
CN107395458B (zh) 系统监控方法及装置
US10142997B2 (en) Method and apparatus for adjusting physical resource, and controller
US11438271B2 (en) Method, electronic device and computer program product of load balancing
CN105847377A (zh) 集群网络的请求拥塞过载处理方法及系统
CN110868323B (zh) 一种带宽控制方法、装置、设备及介质
KR20230073315A (ko) 리소스 스케줄링 방법 및 시스템, 전자 디바이스, 그리고 컴퓨터 판독 가능 저장 매체
CN110838987A (zh) 队列限流方法、存储介质
CN111427674A (zh) 一种微服务管理方法、装置及系统
CN113873008B (zh) 一种rdma网络节点的连接重配方法、装置、系统及介质
JP5997659B2 (ja) 分散処理システムおよび分散処理方法
CN116226178A (zh) 一种数据查询方法、装置、存储介质及电子装置
CN112291326B (zh) 负载均衡方法、负载均衡装置、存储介质与电子设备
CN112148496B (zh) 超融合虚拟机的计算存储资源的能效管理方法、装置及电子设备
CN109298944B (zh) 服务器压力调节方法及装置、计算机装置及存储介质
CN113391927A (zh) 一种业务事件的处理方法、装置、系统及存储介质
CN112328387A (zh) 一种面向多租户的微服务资源调度方法
CN112395058A (zh) 任务调控装置、方法和系统
CN114079976B (zh) 切片资源调度方法、装置、系统和计算机可读存储介质
CN112260958B (zh) 一种请求报文响应方法及装置
CN115361271A (zh) Ssh服务器切换与连接方法、云端服务器及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20201124

RJ01 Rejection of invention patent application after publication