CN110460541A - 应用于web服务器的限流方法及装置 - Google Patents

应用于web服务器的限流方法及装置 Download PDF

Info

Publication number
CN110460541A
CN110460541A CN201910697303.6A CN201910697303A CN110460541A CN 110460541 A CN110460541 A CN 110460541A CN 201910697303 A CN201910697303 A CN 201910697303A CN 110460541 A CN110460541 A CN 110460541A
Authority
CN
China
Prior art keywords
request message
end server
load
request
gateway
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
CN201910697303.6A
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.)
Miaozhen Information Technology Co Ltd
Miaozhen Systems Information Technology Co Ltd
Original Assignee
Miaozhen Systems Information Technology 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 Miaozhen Systems Information Technology Co Ltd filed Critical Miaozhen Systems Information Technology Co Ltd
Priority to CN201910697303.6A priority Critical patent/CN110460541A/zh
Publication of CN110460541A publication Critical patent/CN110460541A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • H04L47/6275Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
    • 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/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本公开实施例提供了一种应用于web服务器的限流取方法及装置,所述方法包括:web服务器接收来自用户的请求消息,其中,请求消息中携带多种请求参数,请求参数用于确定请求消息的优先级;获取后端服务器的负载状态数据,其中,后端服务器的负载状态数据储存在web服务器的网关中;根据后端服务器的负载状态数据和请求消息的优先级处理请求消息。解决了相关技术中大流量甚至突发流量场景下服务器容易崩溃的问题。

Description

应用于web服务器的限流方法及装置
技术领域
本公开涉及网络服务器技术领域,具体而言,涉及一种应用于web服务器的限流取方法及装置。
背景技术
在当今各互联网公司快速发展的过程中由于运营的不断调整和完善,整个程序服务器不断的面临突发流量的考验,当今鲜为人知的例如铁道部火车票订票网站平常流量低谷期服务器运行顺畅,逢节假日时服务器流量直接进入高峰期,这对方日常运营服务器预算是一个极为苛刻的考验,保障服务器在极端流量压力的场景下的可用性(可持续化)运行是一个老生常谈的技术问题。
业内现有比较普遍技术难度较低解决技术方案是采用服务器程序+redis方案进行流量限流。
当用户请求服务器时,服务器程序将用户的请求根据请求时间、请求次数、请求的路径等维度作为标记将请求统计数据记录到redis,当服务器程序在接收新的请求时每次都会从redis中提取流量数据从而进行判断是否允许服务器程序处理该请求。
该通用方案在大请求流量甚至突发极端流量场景下效率极为不稳定、而且服务器程序本是应该更多去实现和执行业务功能和业务逻辑运算,按照高效的技术规划来说,流量管控处理不属于服务器业务程序处理的范畴,混入业务程序代码中会直接增加业务开发人员的工作量、开发成本、可维护性、知识面等各种挑战,这是极为不利于快速发展的团队;另外流量数据是存储在redis中,redis的数据存取也是基于网络的,在大流量场景下,数据的操作经过网络通讯的步骤越多意味着可用性的下降。因此在大流量甚至突发流量场景下服务器一旦出状况,带来错误追踪定位、服务器恢复、调试、以及补救措施问题都是非常不便的。
针对现有技术中大流量甚至突发流量场景下服务器容易崩溃的问题,尚未有合理的解决方案。
发明内容
本公开实施例提供了一种应用于web服务器的限流方法及装置,以至少解决相关技术中大流量甚至突发流量场景下服务器容易崩溃的问题。
根据本公开的一个实施例,提供了一种应用于web服务器的限流方法,包括:接收来自用户的请求消息,其中,所述请求消息中携带多种请求参数,所述请求参数用于确定所述请求消息的优先级;获取后端服务器的负载状态数据,其中,所述后端服务器的负载状态数据储存在所述web服务器的网关中;根据所述后端服务器的负载状态数据和所述请求消息的优先级处理所述请求消息,其中,优先级高的所述请求消息被优先处理。
可选地,接收来自用户的请求消息之后,所述方法还包括:对所述请求消息中携带的请求参数进行请求初始化,其中,所述请求参数至少包括以下之一:请求时间、请求次数、请求路径,所述请求参数储存在所述网关中;根据请求初始化后的所述请求参数确定所述请求消息的类型和优先级。
可选地,获取后端服务器的负载状态数据包括:获取所述后端服务器的负载能力值,其中,所述负载能力值为所述后端服务器最多能处理的请求消息的数量;以及按照预设周期获取所述后端服务器的负载值,其中,所述后端服务器的负载值为所述后端服务器当前正在处理的所述请求消息的数量,所述后端服务器的负载值从所述后端服务器与所述web服务器的状态接口获得。
可选地,根据所述后端服务器的负载状态数据和所述请求消息的优先级处理所述请求消息包括:当所述请求消息为最高优先级时,将所述请求消息放入所述网关的消息队列的队首;当所述请求消息为普通优先级时,判断所述后端服务器的负载值,其中,当所述后端服务器的所述负载值大于预设的最小负载预警值,且小于预设的最大负载预警值时,将所述请求消息存入网关中进行托管,并保持所述请求消息不被中断,其中,所述最小负载预警值是根据所述后端服务器的所述负载能力值设置的,当达到指定的托管时间后,将托管的所述请求消息按照优先级的高低存入所述网关的消息队列中;按照预设发送周期从所述消息队列的队首取出所述请求消息发送到所述后端服务器。
根据本公开的另一个实施例,还提供了一种应用于web服务器的限流装置,包括:接收模块,用于接收来自用户的请求消息,其中,所述请求消息中携带多种请求参数,所述请求参数用于确定所述请求消息的优先级;网关健康检查模块,用于获取后端服务器的负载状态数据,其中,所述后端服务器的负载状态数据储存在所述web服务器的网关中;网关策略模块,用于根据所述后端服务器的负载状态数据和所述请求消息的优先级处理所述请求消息,其中,优先级高的所述请求消息被优先处理。
可选地,所述装置还包括:网关初始化模块,用于对所述请求消息中携带的请求参数进行初始化,其中,所述请求参数至少包括以下之一:请求时间、请求次数、请求路径,所述请求参数储存在所述网关中;确定模块,用于根据请求初始化后的所述请求参数确定所述请求消息的类型和优先级。
可选地,所述网关健康检查模块包括:第一获取单元,用于获取所述后端服务器的负载能力值,其中,所述负载能力值为所述后端服务器最多能处理的请求消息的数量;第二获取单元,用于按照预设周期获取所述后端服务器的负载值,其中,所述后端服务器的负载值为所述后端服务器当前正在处理的所述请求消息的数量,所述后端服务器的负载值从所述后端服务器与所述web服务器的状态接口获得。
可选地,所述网关策略模块包括:第一处理单元,用于当所述请求消息为最高优先级时,将所述请求消息放入所述网关的消息队列的队首;第二处理单元,用于当所述请求消息为普通优先级时,判断所述后端服务器的负载值,其中,当所述后端服务器的所述负载值大于预设的最小负载预警值,且小于预设的最大负载预警值时,将所述请求消息存入网关中进行托管,并保持所述请求消息不被中断,其中,所述最小负载预警值是根据所述后端服务器的所述负载能力值设置的,当达到指定的托管时间后,将托管的所述请求消息按照优先级的高低存入所述网关的消息队列中;发送单元,用于按照预设发送周期从所述消息队列的队首取出所述请求消息发送到所述后端服务器。
根据本公开实施例的另一个方面,还提供了一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本公开的另一个实施例,还提供了一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本公开实施例,web服务器接收来自用户的请求消息,其中,请求消息中携带多种请求参数,请求参数用于确定请求消息的优先级;获取后端服务器的负载状态数据,其中,后端服务器的负载状态数据储存在web服务器的网关中;根据后端服务器的负载状态数据和请求消息的优先级处理请求消息,其中,优先级高的所述请求消息被优先处理。解决了相关技术中大流量甚至突发流量场景下服务器容易崩溃的问题,本方案所有的操作全部在web请求入口网关框架内部计算,不牵扯到额外网络数据交互处理,后端服务器并不知晓请求监控处理情况,只需要在本方案流量处理结束后告知有流量即处理即可,因此,不需要占用后端服务器的资源,又能有效实现流量控制处理,在实现流量控制的同时又能保证优先级高的请求消息被优先处理。
附图说明
此处所说明的附图用来提供对本公开的进一步理解,构成本公开的一部分,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。在附图中:
图1是本公开实施例的一种应用于web服务器的限流方法的移动终端的硬件结构框图;
图2是根据本公开实施例中应用于web服务器的限流方法的流程图;
图3是根据本公开实施例基于openresty二次开发的一套网关面向web限流方法流程图;
图4是根据本公开实施例的应用于web服务器的限流装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本公开。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
实施例1
本公开实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本公开实施例的一种应用于web服务器的限流方法的移动终端的硬件结构框图。如图1所示,移动终端10可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本公开实施例中的数据信息的获取方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
本公开实施例提供了一种应用于web服务器的限流方法。图2是根据本公开实施例中应用于web服务器的限流方法的流程图,如图2所示,该方法包括:
步骤S201,接收来自用户的请求消息,其中,请求消息中携带多种请求参数,请求参数用于确定请求消息的优先级;
步骤S203,获取后端服务器的负载状态数据,其中,后端服务器的负载状态数据储存在web服务器的网关中;
步骤S205,根据后端服务器的负载状态数据和请求消息的优先级处理请求消息。
通过上述方法,web服务器接收来自用户的请求消息,其中,请求消息中携带多种请求参数,请求参数用于确定请求消息的优先级;获取后端服务器的负载状态数据,其中,后端服务器的负载状态数据储存在web服务器的网关中;根据后端服务器的负载状态数据和请求消息的优先级处理请求消息。解决了相关技术中大流量甚至突发流量场景下服务器容易崩溃的问题,本方案所有的操作全部在web请求入口网关框架内部计算,不牵扯到额外网络数据交互处理,后端服务器并不知晓请求监控处理情况,只需要在本方案流量处理结束后告知有流量即处理即可,因此,不需要占用后端服务器的资源,又能有效实现流量控制处理。
优选地,上述步骤S201之后,所述方法还包括:对请求消息中携带的请求参数进行请求初始化,其中,请求参数至少包括以下之一:请求时间、请求次数、请求路径,请求参数储存在网关中;根据请求初始化后的请求参数确定请求消息的类型和优先级;根据请求消息的优先级将请求消息放进消息队列中,其中,优先级最高的请求消息放入队列的队首;优先向后端服务器发送队首的请求消息。
需要说明的是,对请求消息中携带的请求参数进行请求初始化,是为了方便策略机制对请求消息进行分析。上述网关可以但不限于是Dict模块。本公开实施例的web服务器可以是以openresty/nginx作为框架的web流量入口服务器,专为大流量、极端流量管控而设计。
可选地,接收来自用户的请求消息之后,所述方法还包括:对所述请求消息中携带的请求参数进行请求初始化,其中,所述请求参数至少包括以下之一:请求时间、请求次数、请求路径,所述请求参数储存在所述网关中;根据请求初始化后的所述请求参数确定所述请求消息的类型和优先级。
可选地,获取后端服务器的负载状态数据包括:获取所述后端服务器的负载能力值,其中,所述负载能力值为所述后端服务器最多能处理的请求消息的数量;以及按照预设周期获取所述后端服务器的负载值,其中,所述后端服务器的负载值为所述后端服务器当前正在处理的所述请求消息的数量,所述后端服务器的负载值从所述后端服务器与所述web服务器的状态接口获得。
可选地,根据所述后端服务器的负载状态数据和所述请求消息的优先级处理所述请求消息包括:当所述请求消息为最高优先级时,将所述请求消息放入所述网关的消息队列的队首;当所述请求消息为普通优先级时,判断所述后端服务器的负载值,其中,当所述后端服务器的所述负载值大于预设的最小负载预警值,且小于预设的最大负载预警值时,将所述请求消息存入网关中进行托管,并保持所述请求消息不被中断,其中,所述最小负载预警值是根据所述后端服务器的所述负载能力值设置的,当达到指定的托管时间后,将托管的所述请求消息按照优先级的高低存入所述网关的消息队列中;按照预设发送周期从所述消息队列的队首取出所述请求消息发送到所述后端服务器。优先级越高,请求消息在消息队列的排位越靠前。
可选地,根据所述后端服务器的负载状态数据和所述请求消息的优先级处理所述请求消息包括:当所述请求消息为普通优先级时,判断所述后端服务器的负载值,其中,当所述后端服务器的所述负载值小于预设的最小负载预警值时,将所述请求消息按照优先级的高低存入所述网关的消息队列中,按照预设发送周期从所述消息队列的队首取出所述请求消息发送到所述后端服务器。
可选地,根据所述后端服务器的负载状态数据和所述请求消息的优先级处理所述请求消息包括:当所述请求消息为普通优先级时,判断所述后端服务器的负载值,其中,当所述后端服务器的所述负载值大于或等于所述后端服务器预设的最大负载预警值时,拒绝响应所述请求消息,且不再将所述请求消息存入所述消息队列。
本公开实施例中涉及的请求消息可以是http请求,每次用户的http请求,会将用户请求维度如:请求时间、请求次数、请求路径等可以记录在dict模块(nginx的本程序共享内存)中,因此在操控用户流量数据是不会带来网络通信消耗即可完成几十倍于redis数据存取操作的性能。
每次的http请求全部由openresty中的lua程序监听,lua程序每5秒钟获取一次各服务器的负载情况,当服务器因超过服务器程序处理能力的流量涌入进来时负载情况会急剧上升,可能会存在服务器崩溃风险,此时本公开实施例方案会以低到可以忽略的服务器性能损耗获取服务器负载情况,从而让本公开实施例的限流程序模块开始对后端服务器程序接收的http请求流量限流,限流过程中后端服务器程序是无感知的,处于限流中的http请求本公开实施例会根据服务器负载是否恢复正常值而选择如下方式管控流量:1、拒绝http请求;2、托管http请求让其等待一定时间再放行到后端服务器程序处理;3、按照预设的比例拒绝http请求;4、预警机制,即时告知技术团队当前服务器流量情况。
当后端服务器负载恢复正常值时,本公开实施例技术方案会自动取消限流,让后端服务器的流量恢复正常。
本公开实施例优势:所有的http流量的监控全部基于业内通用openresty/nginx做的二次开发,简单易用;本公开实施例所牵扯到的所有技术点和后端服务器业务程序代码是相互完全隔离,业务开发人员无需再关心http流量问题导致的服务器性能风险,从而让业务开发人员专心、快速的实现业务功能需求;减少服务器出现问题时排错的维度;因本公开实施例对流量数据的处理不存在二次网络存储的过程,全部在openresty本程序中处理,所以在性能上基本可以秒杀现有业内绝大多数的方案。
业内还有另外的通用型方案,在openresty/nginx中配置upstream,以期达到一定的流量管控处理,该方案可以实现如:关闭后端某服务器的流量、按照权重调整后端各服务器的流量比例。这种方案是最简单最熟为人知的流量管控方案。该方案实现流量管控的效果极为单一,且并不智能,管控流量方式粗暴而且并不能达到期望的限流效果,绝大多数的中小型公司团队在面临大流量、极端流量场景时使用手动配置openresty/nginx的upstream从而切断后端某服务器的流量达到限流,实数一种无奈粗暴一刀切的限流举措。
本实施例对流量的精细化管控即使在服务器面临崩溃的临界点也可以根据不同用户在平台的重要等级、不同http地址在平台的重要等级选择是否让后端服务器继续服务,因同是nginx方案,但和本公开智能化、扩展性、灵活度、功能丰富度是不可同日而语的。
现有技术在应对大流量场景保障服务器崩溃时采用的方案要么太单一切断服务器流量,这违背了web架构领域中服务器可用性这最重要的要点;要么过于低效,在处理流量的业务代码中嵌入http流量管控的代码以期达到流量管控,这严格来说污染了业务代码,让业务代码违背了处理业务的初衷、而且也是去实时操控redis存取数据,这增加了数据的网络处理步骤,也是降低了服务器可用性、增加维护的复杂度、成本投入、排错的复杂程度、服务器恢复的难度,本公开可以轻巧、高效、简单的解决包括以上的所有问题。
需要说明的是,web,即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。http是互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。openresty是一个基于nginx和Lua语言的高性能web平台。nginx是一个高性能的http和反向代理服务器。Lua是一种小巧的脚本语言,主要目的是嵌入到其他程序中为应用程序提供灵活拓展、高性能、易用等特点。redis是一个开源的、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。服务器负载:简单理解为服务的处理负荷,如负载过高(服务器负荷过高,此时服务器容易出状况如:卡死、崩溃、拒绝服务等)。upstream:openresty/nginx的负载均衡配置。
本公开是基于openresty二次开发的一套web限流方案,本公开在整个web平台面临大流量场景考验时任然考验稳定、高效运行,并且在服务器负载处于极限场景下任然可以选择性的对重要用户、特定的http地址开放请求处理让其不受限流影响。图3是根据本公开实施例基于openresty二次开发的一套web限流方法流程图。如图3所示:
顶部人头像为用户请求,当用户对平台入口web服务器发起请求时,本公开中的http接收模块开始受理当前http请求,并且将http请求各参数进行初始化建模,结束后进入到第二步流程策略模块,该模块主要用来对当前http请求进行策略计算,该模块依赖于健康检查模块提供的数据,健康检查模块会定时向后端各服务器检查负载状态数据并且保存到dict中用于提供给策略模块作为策略计算的数据凭证,策略模块根据dict中保存的后端服务器健康数据进行决策,如需要进行限流的请求如:需要将请求进行托管让其等待特定时间如1-5秒钟后分发到后端服务器时则会将请求转入到托管模块中进行托管,同时也保持用户的请求不被中断,当托管时间到期后托管模块会将请求分发到后端服务器处理,后端服务器处理完毕后将结果数据发送到响应模块,响应模块处理后直接响应用户结果数据。
如果策略模块根据当前健康数据和限流总数判断需要拒绝当前http请求时,策略模块将当前执行权交给响应模块响应用户拒绝服务,从而不让该请求分发到繁忙不堪重负的后端服务器。
在openresty的配置文件nginx.conf的http配置详情如下:
openresty是一套基于nginx、lua开源web服务器平台技术,基于这套技术可以使用lua语言实现这套技术,部署在web服务器入口处业内绝大多数使用业务语言代码+redis方案和配置nginx的upstream方案达到一定程度的限流举措,他们要么不稳定、不适合大流量场景、要么太单一一刀切的限流方式,对于平台的稳定、代码的可维护性、平台口碑等都带来极为不不利的影响,特别是业务代码+redis限流方案,这个不光带来低效复杂污染业务代码先天性的问题,还带来成本问题,部署redis服务时逐步需要更多的机器去独立部署,因此带来更复杂的维护性。
本公开实施例继承了nginx天然的极致处理性能和可靠的稳定性,同时在部署时和nginx的配置融为一体,并未增加部署难度、而且不需要部署额外的服务整个发明运行的过程全部在nginx服务上完成,对后端程序无感知,维护成本相当于只需维护nginx一样。
实施例2
在本实施例中还提供了一种应用于web服务器的限流装置,用于执行上述任一方法实施例中的步骤,已经描述过的内容此处不再赘述。图4是根据本公开实施例的应用于web服务器的限流装置的结构框图,如图4所示,该装置包括:
接收模块402,用于接收来自用户的请求消息,其中,请求消息中携带多种请求参数,请求参数用于确定请求消息的优先级;
网关健康检查模块404,用于获取后端服务器的负载状态数据,其中,后端服务器的负载状态数据储存在web服务器的网关中;
网关策略模块406,用于根据后端服务器的负载状态数据和请求消息的优先级处理请求消息,其中,优先级高的请求消息被优先处理。
可选地,所述装置还包括:网关初始化模块,用于对所述请求消息中携带的请求参数进行初始化,其中,所述请求参数至少包括以下之一:请求时间、请求次数、请求路径,所述请求参数储存在所述网关中;确定模块,用于根据请求初始化后的所述请求参数确定所述请求消息的类型和优先级。
可选地,所述网关健康检查模块包括:第一获取单元,用于获取所述后端服务器的负载能力值,其中,所述负载能力值为所述后端服务器最多能处理的请求消息的数量;第二获取单元,用于按照预设周期获取所述后端服务器的负载值,其中,所述后端服务器的负载值为所述后端服务器当前正在处理的所述请求消息的数量,所述后端服务器的负载值从所述后端服务器与所述web服务器的状态接口获得。
可选地,所述网关策略模块包括:第一处理单元,用于当所述请求消息为最高优先级时,将所述请求消息放入所述网关的消息队列的队首;第二处理单元,用于当所述请求消息为普通优先级时,判断所述后端服务器的负载值,其中,当所述后端服务器的所述负载值大于预设的最小负载预警值,且小于预设的最大负载预警值时,将所述请求消息存入网关中进行托管,并保持所述请求消息不被中断,其中,所述最小负载预警值是根据所述后端服务器的所述负载能力值设置的,当达到指定的托管时间后,将托管的所述请求消息按照优先级的高低存入所述网关的消息队列中;发送单元,用于按照预设发送周期从所述消息队列的队首取出所述请求消息发送到所述后端服务器。
可选地,所述网关策略模块包括:第三处理单元,用于当所述请求消息为普通优先级时,判断所述后端服务器的负载值,其中,当所述后端服务器的所述负载值小于预设的最小负载预警值时,将所述请求消息按照优先级的高低存入所述网关的消息队列中,按照预设发送周期从所述消息队列的队首取出所述请求消息发送到所述后端服务器。
可选地,所述网关策略模块包括:第四处理单元,用于当所述请求消息为普通优先级时,判断所述后端服务器的负载值,其中,当所述后端服务器的所述负载值大于或等于所述后端服务器预设的最大负载预警值时,拒绝响应所述请求消息,且不再将所述请求消息存入所述消息队列。
本公开技术方案策略模块根据健康检查模块收集的后端服务器负载状态数据决定是否释放流量到后端服务器,健康检查模块收集的数据全部存入到openresty的共享内存中,本方案所有的操作全部在openresty框架内部计算,不牵扯到额外网络数据交互处理,后端服务器并不知晓http请求监控处理情况,只需要在本方案流量处理结束后告知有流量即处理即可。
实施例3
本公开的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,接收来自用户的请求消息,其中,请求消息中携带多种请求参数,请求参数用于确定请求消息的优先级;
S2,获取后端服务器的负载状态数据,其中,后端服务器的负载状态数据储存在web服务器的网关中;
S3,根据后端服务器的负载状态数据和请求消息的优先级处理请求消息。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本公开的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,接收来自用户的请求消息,其中,请求消息中携带多种请求参数,请求参数用于确定请求消息的优先级;
S2,获取后端服务器的负载状态数据,其中,后端服务器的负载状态数据储存在web服务器的网关中;
S3,根据后端服务器的负载状态数据和请求消息的优先级处理请求消息。
本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本公开的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本公开不限制于任何特定的硬件和软件结合。
以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (10)

1.一种应用于web服务器的限流方法,其特征在于,包括:
接收来自用户的请求消息,其中,所述请求消息中携带多种请求参数,所述请求参数用于确定所述请求消息的优先级;
获取后端服务器的负载状态数据,其中,所述后端服务器的负载状态数据储存在所述web服务器的网关中;
根据所述后端服务器的负载状态数据和所述请求消息的优先级处理所述请求消息,其中,优先级高的所述请求消息被优先处理。
2.根据权利要求1所述的方法,其特征在于,接收来自用户的请求消息之后,所述方法还包括:
对所述请求消息中携带的请求参数进行请求初始化,其中,所述请求参数至少包括以下之一:请求时间、请求次数、请求路径,所述请求参数储存在所述网关中;
根据请求初始化后的所述请求参数确定所述请求消息的类型和优先级。
3.根据权利要求1所述的方法,其特征在于,获取后端服务器的负载状态数据包括:
获取所述后端服务器的负载能力值,其中,所述负载能力值为所述后端服务器最多能处理的请求消息的数量;以及
按照预设周期获取所述后端服务器的负载值,其中,所述后端服务器的负载值为所述后端服务器当前正在处理的所述请求消息的数量,所述后端服务器的负载值从所述后端服务器与所述web服务器的状态接口获得。
4.根据权利要求3所述的方法,其特征在于,根据所述后端服务器的负载状态数据和所述请求消息的优先级处理所述请求消息包括:
当所述请求消息为最高优先级时,将所述请求消息放入所述网关的消息队列的队首;
当所述请求消息为普通优先级时,判断所述后端服务器的负载值,其中,当所述后端服务器的所述负载值大于预设的最小负载预警值,且小于预设的最大负载预警值时,将所述请求消息存入网关中进行托管,并保持所述请求消息不被中断,其中,所述最小负载预警值是根据所述后端服务器的所述负载能力值设置的,当达到指定的托管时间后,将托管的所述请求消息按照优先级的高低存入所述网关的消息队列中;
按照预设发送周期从所述消息队列的队首取出所述请求消息发送到所述后端服务器。
5.一种应用于web服务器的限流装置,其特征在于,包括:
接收模块,用于接收来自用户的请求消息,其中,所述请求消息中携带多种请求参数,所述请求参数用于确定所述请求消息的优先级;
网关健康检查模块,用于获取后端服务器的负载状态数据,其中,所述后端服务器的负载状态数据储存在所述web服务器的网关中;
网关策略模块,用于根据所述后端服务器的负载状态数据和所述请求消息的优先级处理所述请求消息,其中,优先级高的所述请求消息被优先处理。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
网关初始化模块,用于对所述请求消息中携带的请求参数进行初始化,其中,所述请求参数至少包括以下之一:请求时间、请求次数、请求路径,所述请求参数储存在所述网关中;
确定模块,用于根据请求初始化后的所述请求参数确定所述请求消息的类型和优先级。
7.根据权利要求5所述的装置,其特征在于,所述网关健康检查模块包括:
第一获取单元,用于获取所述后端服务器的负载能力值,其中,所述负载能力值为所述后端服务器最多能处理的请求消息的数量;
第二获取单元,用于按照预设周期获取所述后端服务器的负载值,其中,所述后端服务器的负载值为所述后端服务器当前正在处理的所述请求消息的数量,所述后端服务器的负载值从所述后端服务器与所述web服务器的状态接口获得。
8.根据权利要求7所述的装置,其特征在于,所述网关策略模块包括:
第一处理单元,用于当所述请求消息为最高优先级时,将所述请求消息放入所述网关的消息队列的队首;
第二处理单元,用于当所述请求消息为普通优先级时,判断所述后端服务器的负载值,其中,当所述后端服务器的所述负载值大于预设的最小负载预警值,且小于预设的最大负载预警值时,将所述请求消息存入网关中进行托管,并保持所述请求消息不被中断,其中,所述最小负载预警值是根据所述后端服务器的所述负载能力值设置的,当达到指定的托管时间后,将托管的所述请求消息按照优先级的高低存入所述网关的消息队列中;
发送单元,用于按照预设发送周期从所述消息队列的队首取出所述请求消息发送到所述后端服务器。
9.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至4任一项中所述的方法。
10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至4任一项中所述的方法。
CN201910697303.6A 2019-07-30 2019-07-30 应用于web服务器的限流方法及装置 Pending CN110460541A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910697303.6A CN110460541A (zh) 2019-07-30 2019-07-30 应用于web服务器的限流方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910697303.6A CN110460541A (zh) 2019-07-30 2019-07-30 应用于web服务器的限流方法及装置

Publications (1)

Publication Number Publication Date
CN110460541A true CN110460541A (zh) 2019-11-15

Family

ID=68484144

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910697303.6A Pending CN110460541A (zh) 2019-07-30 2019-07-30 应用于web服务器的限流方法及装置

Country Status (1)

Country Link
CN (1) CN110460541A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111049919A (zh) * 2019-12-19 2020-04-21 上海米哈游天命科技有限公司 一种用户请求的处理方法、装置、设备及存储介质
CN112653636A (zh) * 2020-12-19 2021-04-13 珍岛信息技术(上海)股份有限公司 一种网络数据智能分发服务系统
CN112714159A (zh) * 2020-12-21 2021-04-27 青岛易来智能科技股份有限公司 消息转发方法和装置、存储介质及电子装置
CN112740642A (zh) * 2020-08-31 2021-04-30 华为技术有限公司 通信方法及多接入边缘计算服务器
CN112995265A (zh) * 2019-12-18 2021-06-18 中国移动通信集团四川有限公司 请求分发方法、装置及电子设备
CN113032410A (zh) * 2019-12-25 2021-06-25 阿里巴巴集团控股有限公司 数据处理方法、装置、电子设备及计算机存储介质
CN114070847A (zh) * 2020-07-27 2022-02-18 腾讯科技(深圳)有限公司 服务器的限流方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8972551B1 (en) * 2010-04-27 2015-03-03 Amazon Technologies, Inc. Prioritizing service requests
CN105376111A (zh) * 2015-11-13 2016-03-02 百度在线网络技术(北京)有限公司 资源分配方法和装置
CN110049084A (zh) * 2018-12-10 2019-07-23 阿里巴巴集团控股有限公司 分布式系统的限流方法、装置及设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8972551B1 (en) * 2010-04-27 2015-03-03 Amazon Technologies, Inc. Prioritizing service requests
CN105376111A (zh) * 2015-11-13 2016-03-02 百度在线网络技术(北京)有限公司 资源分配方法和装置
CN110049084A (zh) * 2018-12-10 2019-07-23 阿里巴巴集团控股有限公司 分布式系统的限流方法、装置及设备

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112995265A (zh) * 2019-12-18 2021-06-18 中国移动通信集团四川有限公司 请求分发方法、装置及电子设备
CN111049919A (zh) * 2019-12-19 2020-04-21 上海米哈游天命科技有限公司 一种用户请求的处理方法、装置、设备及存储介质
CN113032410A (zh) * 2019-12-25 2021-06-25 阿里巴巴集团控股有限公司 数据处理方法、装置、电子设备及计算机存储介质
CN113032410B (zh) * 2019-12-25 2024-05-03 阿里巴巴集团控股有限公司 数据处理方法、装置、电子设备及计算机存储介质
CN114070847A (zh) * 2020-07-27 2022-02-18 腾讯科技(深圳)有限公司 服务器的限流方法、装置、设备及存储介质
CN114070847B (zh) * 2020-07-27 2024-01-23 腾讯科技(深圳)有限公司 服务器的限流方法、装置、设备及存储介质
CN112740642A (zh) * 2020-08-31 2021-04-30 华为技术有限公司 通信方法及多接入边缘计算服务器
CN112740642B (zh) * 2020-08-31 2022-05-17 华为技术有限公司 通信方法及多接入边缘计算服务器
CN112653636A (zh) * 2020-12-19 2021-04-13 珍岛信息技术(上海)股份有限公司 一种网络数据智能分发服务系统
CN112653636B (zh) * 2020-12-19 2022-09-20 珍岛信息技术(上海)股份有限公司 一种网络数据智能分发服务系统
CN112714159A (zh) * 2020-12-21 2021-04-27 青岛易来智能科技股份有限公司 消息转发方法和装置、存储介质及电子装置

Similar Documents

Publication Publication Date Title
CN110460541A (zh) 应用于web服务器的限流方法及装置
CN100479456C (zh) 用于促进所要求的能力的万维网服务器的远程动态配置方法和系统
CN107222426A (zh) 控流的方法、装置及系统
DE69729252T2 (de) Fernverwaltung von Rechnervorrichtungen
DE69923827T2 (de) Verfahren zum Verbindungsaufbau
CN103761309B (zh) 一种运营数据处理方法及系统
DE602005000025T2 (de) Verfahren und Anordnung für den Betrieb eines offenen Netzwerks mit einem Proxy
US6857020B1 (en) Apparatus, system, and method for managing quality-of-service-assured e-business service systems
CN109361555A (zh) 云网业务开通的方法和装置
US7523454B2 (en) Apparatus and method for routing a transaction to a partitioned server
DE69634928T2 (de) Netzwerkverwaltungssystem mit verbesserter Knotenerkennung und -überwachung
DE69726379T2 (de) Ferninstallation von Software auf einem Rechnergerät
CN103841134B (zh) 基于api发送、接收信息的方法、装置及系统
CN107071009A (zh) 一种负载均衡的分布式大数据爬虫系统
EP0967558A2 (en) Publish & subscribe data processing apparatus, method and computer program product with use of a stream to disbtribute local information between neighbours in a broker structure
CN106874487A (zh) 一种分布式爬虫管理系统及其方法
DE102004052270A1 (de) Verarbeitungsvorrichtungs-Managementsystem
CN110149392A (zh) 一种推送消息的管理方法及装置
CN103001891B (zh) 一种用于提升局域网整体服务质量的方法
CN104219298B (zh) 集群系统及其数据备份的方法
CN111432247B (zh) 流量调度方法、装置、服务器及存储介质
CN104246743A (zh) 涉及在网络上虚拟机主机隔离的系统和方法
CN109756426A (zh) 用户流量控制装置
CN108833565A (zh) 一种监控服务器的方法、装置、服务器和存储介质
CN106657259A (zh) 一种用于服务器集群的路由服务器及路由服务方法

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: 20191115

RJ01 Rejection of invention patent application after publication