CN113765814A - 网络访问的限流方法及装置 - Google Patents
网络访问的限流方法及装置 Download PDFInfo
- Publication number
- CN113765814A CN113765814A CN202011239588.8A CN202011239588A CN113765814A CN 113765814 A CN113765814 A CN 113765814A CN 202011239588 A CN202011239588 A CN 202011239588A CN 113765814 A CN113765814 A CN 113765814A
- Authority
- CN
- China
- Prior art keywords
- access request
- current limiting
- current
- access
- determining
- 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
Links
- 230000000670 limiting effect Effects 0.000 title claims abstract description 188
- 238000000034 method Methods 0.000 title claims abstract description 52
- 230000015654 memory Effects 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/29—Flow control; Congestion control using a combination of thresholds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling 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/63—Routing a service request depending on the request content or context
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本公开提供了一种网络访问的限流方法,应用于分布式服务器,包括:接收来自用户终端的访问请求;确定与所述访问请求关联的限流配置信息;根据所述限流配置信息,确定所述访问请求是否满足限流阈值;在所述访问请求满足所述限流阈值的情况下,拒绝所述访问请求。本公开还提供了一种网络访问的限流装置、一种电子设备及一种计算机可读存储介质。
Description
技术领域
本公开涉及计算机技术领域,更具体地,涉及一种网络访问的限流方法、一种网络访问的限流装置、一种电子设备以及一种计算机可读存储介质。
背景技术
在大量用户并发请求网络访问的业务场景下,服务器承担巨大的网络访问压力。为避免服务器被突发流量击垮,需要对用户的网络访问请求进行限流。
在实现本公开发明构思过程中,发明人发现相关技术在进行网络访问的限流时,多利用限流工具如RateLimiter进行限流,但该类限流工具仅支持针对单机的网络访问限流,不支持分布式环境限流;或者利用Ngnix为业务***的接入层限流,其不支持针对特定接口进行网络访问限流,限流方式不灵活,限流效果不佳。
发明内容
有鉴于此,本公开提供了一种限流方式灵活,限流效果显著的网络访问的限流方法及装置。
本公开的一个方面提供了一种网络访问的限流方法,应用于分布式服务器,包括:接收来自用户终端的访问请求;确定与上述访问请求关联的限流配置信息;根据上述限流配置信息,确定上述访问请求是否满足限流阈值;在上述访问请求满足上述限流阈值的情况下,拒绝上述访问请求。
可选地,上述确定与上述访问请求关联的限流配置信息,包括:确定针对上述访问请求的限流器;确定与上述限流器关联的限流队列和限流阈值参数,以作为上述限流配置信息,其中,上述限流队列中包括至少一个元素,上述元素为被接入处理的访问请求的请求时间。
可选地,上述根据上述限流配置信息,确定上述访问请求是否满足限流阈值,包括:根据上述限流阈值参数中的限流数目阈值,确定上述限流队列中的元素总数是否达到上述限流数目阈值;以及在上述元素总数达到上述限流数目阈值的情况下,确定上述访问请求的请求时间与上述限流队列中的最后一个元素所表征的请求时间的差值;根据上述限流阈值参数中的限流频次阈值,确定上述差值是否达到上述限流频次阈值。
可选地,上述在上述访问请求满足上述限流阈值的情况下,拒绝上述访问请求,包括:在上述差值未达到上述限流频次阈值的情况下,拒绝上述访问请求。
可选地,本方法还包括:在上述元素总数未达到上述限流数目阈值,或上述差值达到上述限流频次阈值的情况下,接入处理上述访问请求,并将上述访问请求的请求时间作为首个元素加入上述限流队列中。
可选地,在根据上述限流配置信息,确定上述访问请求是否满足限流阈值前,包括:获取针对上述限流器的分布式锁,以实现针对上述限流器的单线程访问,以及在完成针对上述访问请求的限流判断后,释放上述分布式锁。
可选地,上述确定针对上述访问请求的限流器,包括:根据上述访问请求的请求类别,确定与上述请求类别关联的统计参数和优先级,其中,上述统计参数包括单位时间内的平均访问数量和平均访问频次;根据上述统计参数和优先级,确定针对上述访问请求的限流器。
可选地,上述接入处理上述访问请求,包括:确定与上述访问请求关联的业务接口,并将上述访问请求发送给上述业务接口;接收上述业务接口基于针对上述业务请求的业务逻辑返回的业务数据,并将上述业务数据发送给上述用户终端。
本公开的另一个方面提供了一种网络访问的限流装置,应用于分布式服务器,包括:访问请求接收模块,用于接收来自用户终端的访问请求;第一确定模块,用于确定与上述访问请求关联的限流配置信息;第二确定模块,用于根据上述限流配置信息,确定上述访问请求是否满足限流阈值;访问请求处理模块,用于在上述访问请求满足上述限流阈值的情况下,拒绝上述访问请求。
可选地,上述第一确定模块包括:限流器确定子模块,用于确定针对上述访问请求的限流器;限流配置信息确定子模块,用于确定与上述限流器关联的限流队列和限流阈值参数,以作为上述限流配置信息,其中,上述限流队列中包括至少一个元素,上述元素为被接入处理的访问请求的请求时间。
可选地,上述第二确定模块包括:第一确定子模块,用于根据上述限流阈值参数中的限流数目阈值,确定上述限流队列中的元素总数是否达到上述限流数目阈值;以及第二确定子模块,用于在上述元素总数达到上述限流数目阈值的情况下,确定上述访问请求的请求时间与上述限流队列中的最后一个元素所表征的请求时间的差值;第三确定子模块,用于根据上述限流阈值参数中的限流频次阈值,确定上述差值是否达到上述限流频次阈值。
可选地,上述访问请求处理模块包括:访问请求拒绝子模块,用于在上述差值未达到上述限流频次阈值的情况下,拒绝上述访问请求。
可选地,上述访问请求处理模块还包括:访问请求接入子模块,用于在上述元素总数未达到上述限流数目阈值,或上述差值达到上述限流频次阈值的情况下,接入处理上述访问请求,并将上述访问请求的请求时间作为首个元素加入上述限流队列中。
可选地,该装置还包括:分布式锁处理模块,用于在根据上述限流配置信息,确定上述访问请求是否满足限流阈值前,获取针对上述限流器的分布式锁,以实现针对上述限流器的单线程访问,以及在完成针对上述访问请求的限流判断后,释放上述分布式锁。
可选地,上述第一确定模块包括:第四确定子模块,用于根据上述访问请求的请求类别,确定与上述请求类别关联的统计参数和优先级,其中,上述统计参数包括单位时间内的平均访问数量和平均访问频次;第五确定子模块,用于根据上述统计参数和优先级,确定针对上述访问请求的限流器。
可选地,上述访问请求接入子模块包括:第一处理单元,用于确定与上述访问请求关联的业务接口,并将上述访问请求发送给上述业务接口;第二处理单元,用于接收上述业务接口基于针对上述业务请求的业务逻辑返回的业务数据,并将上述业务数据发送给上述用户终端。
本公开的另一个方面提供了一种电子设备。上述电子设备包括至少一个处理器,以及与上述至少一个处理器通信连接的存储器。其中,上述存储器存储有可被上述至少一个处理器执行的指令,上述指令被上述至少一个处理器执行,以使上述至少一个处理器实现本公开实施例的方法。
本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,上述指令在被执行时用于实现本公开实施例的方法。
本公开的另一方面提供了一种计算机程序,上述计算机程序包括计算机可执行指令,上述指令在被执行时用于实现本公开实施例的方法。
通过本公开实施例,因为采用了接收来自用户终端的访问请求;确定与访问请求关联的限流配置信息;根据限流配置信息,确定访问请求是否满足限流阈值;在访问请求满足限流阈值的情况下,拒绝访问请求的技术方案,所以至少部分地克服了相关技术中存在的限流方式不灵活、限流效果不佳的技术问题,进而实现了适用于分布式环境和特定接口的灵活度高的网络访问限流,限流效果显著。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1示意性示出了根据本公开实施例的网络访问的限流***架构;
图2示意性示出了根据本公开实施例的一种网络访问的限流方法的流程图;
图3示意性示出了根据本公开实施例的另一网络访问的限流方法的流程图;
图4示意性示出了根据本公开实施例的网络访问的限流方法的整体流程示意图;
图5示意性示出了根据本公开实施例的网络访问的限流装置的框图;
图6示意性示出了根据本公开实施例的适于实现网络访问的限流方法和装置的电子设备的框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性地,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、操步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的***”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的***等)。
本公开的各个实施例提供了一种网络访问的限流方法以及能够应用该方法的限流装置。其中,该方法可应用于分布式服务器,具体包括:首先接收来自用户终端的访问请求,并确定与访问请求关联的限流配置信息,然后根据限流配置信息,确定访问请求是否满足限流阈值,以及在访问请求满足限流阈值的情况下,拒绝访问请求。
如图1所示,该***架构100包括至少一个用户终端(图中示出了多个,如用户终端101、102、103)和至少一个分布式服务器(图中示出了多个,如服务器104、105、105,也可以是服务器集群,图中未示出)。服务器(如服务器104)接收来自用户终端的访问请求,和确定与访问请求关联的限流配置信息,然后根据限流配置信息,确定访问请求是否满足限流阈值,以及在访问请求满足限流阈值的情况下,拒绝访问请求,并向用户终端反馈访问失败通知。
以下将结合附图和具体实施例详细阐述本公开。
图2示意性示出了根据本公开实施例的一种网络访问的限流方法的流程图,本方法应用于分布式服务器。
如图2所示,该方法例如可以包括操作S210~S240。
在操作S210,接收来自用户终端的访问请求。
在本公开实施例中,具体地,接收的来自用户终端的访问请求,用于请求访问业务***中的服务器,以进行例如订单交易、订单查询、订单变更等内容的业务办理。访问请求中可以包括请求办理的业务的业务要素,业务要素包括但不限于交易类型、交易金额、交易币种、交易日期、交易单号等信息,业务要素与实际业务内容相对应,本公开在此不做限定。确定访问请求中的业务要素的方法例如可以通过关键词检索的方式从访问请求中提取业务要素,或者可以将接收到的访问请求转换为格式化报文,然后通过对格式化报文中的特定字段进行提取,以得到访问请求中的业务要素。
访问请求用于请求访问业务***中的服务器,当短时间内针对某服务器的访问请求数量过大或者访问请求频次过高时,会导致该服务器的访问负担过重,进而可能导致服务器之间通信延迟甚至通信故障的问题。为保证服务器的安全稳定运行,在将接收到的访问请求发送给对应的业务接口前,拦***问请求进入限流判断,以实现对访问流量过大的访问请求进行限流。相比于利用限流工具进行限流,本方案通过服务器直接进行限流(具体地,例如通过在服务器中运行限流逻辑代码直接进行限流),能够实现针对分布式服务器和特定接口的网络访问限流,限流方式灵活,限流效果显著。
可选地,可以根据访问请求中的业务要素,确定是否进行针对访问请求的限流判断。具体地,可以根据预设的限流判断规则和访问请求中的业务元素,确定是否需要对访问请求进行限流判断。示例性地,限流判断规则包括对交易金额大于1000元的订单交易请求进行限流判断,当访问请求中的交易金额大于1000时,需要进行针对访问请求的限流判断。
此外,还可以在接收到来自用户终端的访问请求后,确定服务器中是否存在针对访问请求的限流注解,限流注解的本质为限流判断的实现代码。当不存在针对访问请求的限流注解时,不对访问请求进行限流处理,并直接将访问请求发送给对应的业务接口进行业务处理。当存在针对访问请求的限流注解时,进行针对访问请求的限流判断。
接下来,在操作S220,确定与访问请求关联的限流配置信息。
在本公开实施例中,具体地,在确定与访问请求关联的限流配置信息时,确定针对访问请求的限流器,以及确定与限流器关联的限流队列和限流阈值参数,以作为限流配置信息,其中,限流队列中包括至少一个元素,至少一个元素中的各元素为被接入处理的访问请求的请求时间。
在流量突增的情况下,限流器能够限制针对服务器的网络访问流量的峰值,以达到通过有损换取高可用的目的。被限制的访问请求可以根据具体的业务逻辑返回错误提示或者返回默认值,限流器的本质为能够实现限流逻辑的代码,其实现方式例如可以包括Allow、Wait、Reserve三种形式。
针对访问请求的限流器具体可以是设置在分布式服务器中的通用限流器,也可以是根据访问请求的请求类别,确定出的与访问请求的请求类别关联的的限流器。具体地,可以根据访问请求的请求类别,确定与请求类别关联的统计参数和优先级,其中,统计参数包括单位时间内的平均访问数量和平均访问频次,然后根据统计参数和优先级,确定针对访问请求的限流器。
当与访问请求关联的统计参数指示该类别的访问请求的平均访问数量和平均访问频次较高,且该类别的访问请求的优先级较低时,可以选用单位时间允许较高流量峰值的限流器。可选地,可以对不同类别的访问请求设置不同的优先级,优先级指示访问请求的重要程度,以及指示处理访问请求的平均耗时,优先级越低,访问请求的重要程度越低,处理访问请求的平均耗时越小。示例性地,订单查询请求的优先级低于订单交易请求的优先级,针对订单查询请求可以选择限流阈值较高的限流器。
各限流器具有对应的限流队列,限流队列中包括至少一个元素,至少一个元素中的各元素为由该限流器确定接入处理的访问请求的请求时间。对访问请求接入处理,即允许将访问请求发送至业务接口,进行基于对应的业务逻辑的业务处理。限流队列中的元素为允许接入处理的访问请求的请求时间,限流队列中的元素总数即为限流队列的队列长度,也即为被允许接入处理的访问请求的请求总数。
可选地,在利用限流器进行针对访问请求的限流判断前,获取针对限流器的分布式锁,以实现针对限流器的单线程访问。分布式锁能够保证限流器在高并发情况下的同一时间内只被同一个线程访问,有利于实现利用限流器进行针对访问请求的单次限流判断。针对限流器的分布式锁例如可以包括基于数据库实现的分布式锁、基于缓存实现的分布式锁、基于Zookeeper(一种分布式的、开放源码的分布式应用程序协调服务)实现的分布式锁。实现分布式锁的方法可采用现有技术实现,本申请在此不做赘述。
接下来,在操作S230,根据限流配置信息,确定访问请求是否满足限流阈值。
在本公开实施例中,具体地,根据与访问请求关联的限流配置信息,确定访问请求是否满足限流阈值。具体地,可以判断已接收到的访问请求的数量是否达到限流阈值,和判断接收到的访问请求的频次是否达到限流阈值。
接下来,在操作S240,在访问请求满足限流阈值的情况下,拒绝访问请求。
在本公开实施例中,具体地,在访问请求满足限流阈值的情况下,拒绝访问请求,并向用户终端返回访问失败的通知。拒绝访问请求即不对访问请求进行接入处理,不将访问请求发送至对应的业务接口进行业务处理。在访问请求不满足限流阈值的情况下,接入处理访问请求,具体地,确定与访问请求关联的业务接口,并将访问请求发送给业务接口,然后接收业务接口基于针对业务请求的业务逻辑返回的业务数据,并将业务数据发送给用户终端。
在本公开实施例中,通过接收来自用户终端的访问请求;确定与访问请求关联的限流配置信息;根据限流配置信息,确定访问请求是否满足限流阈值;在访问请求满足限流阈值的情况下,拒绝访问请求。通过对接收到的访问请求进行限流判断,有利于实现适用于分布式环境的网络访问限流,具体可以实现针对指定设备、指定应用或指定接口的网络访问限流,限流方式灵活,限流效果显著,有利于保障业务***的安全稳定运行。
图3示意性示出了根据本公开实施例的另一网络访问的限流方法的流程图。
在确定出针对访问请求的限流器后,将与限流器关联的限流队列和限流阈值参数,作为限流配置信息,然后基于限流配置信息进行针对访问请求的限流判断。如图3所示,操作S230例如可以包括操作S310~S330。
在操作S310,根据限流阈值参数中的限流数目阈值,确定限流队列中的元素总数是否达到限流数目阈值。
在本公开实施例中,具体地,与限流器关联的限流队列中包括至少一个元素,其中,各元素为被接入处理的访问请求的请求时间,并且消息队列中的至少一个元素是根据各元素对应的请求时间的先后顺序进行排序的,具体地,对应的请求时间越早,元素的排序位置越靠后;对应的请求时间越晚,元素的排序位置越靠前。
限流阈值参数包括限流数目阈值和限流频次阈值,限流数目阈值为限流器允许的最大访问请求数量,限流频次阈值为限流器允许的最大访问请求频次。限流器的限流阈值参数可以根据与限流器关联的服务器、业务接口的性能指标设定,性能指标例如可以包括网络输入输出(input/output,IO)吞吐率、CPU使用率、内存使用率等。
由于限流队列中的元素为已被接入处理的访问请求的请求时间,元素总数即为已被接入处理的访问请求的个数。判断限流队列中的元素总数是否达到限流数目阈值,即判断已被接入处理的访问请求的数量是否达到允许的最大访问请求数量。
接下来,在操作S320,在元素总数达到限流数目阈值的情况下,确定访问请求的请求时间与限流队列中的最后一个元素所表征的请求时间的差值。
在本公开实施例中,具体地,限流队列中的元素总数达到限流数目阈值,即已被接入处理的访问请求的数量达到允许的最大访问请求数量,此时继续确定访问请求的请求时间与限流队列中的最后一个元素所表征的请求时间的差值,即确定接收到的访问请求的请求时间,与限流队列中记录的第一个被接入处理的访问请求的请求时间的差值。
接下来,在操作S330,根据限流阈值参数中的限流频次阈值,确定差值是否达到限流频次阈值。
在本公开实施例中,具体地,根据限流阈值参数中的限流频次阈值,确定上述差值是否达到限流频次阈值。在上述差值达到限流频次阈值的情况下,拒绝访问请求,并向用户终端返回访问失败的通知。在元素总数未达到限流数目阈值,或差值达到限流频次阈值的情况下,接入处理访问请求,并将访问请求的请求时间作为首个元素加入限流队列中,同时移除限流队列中的最后一个元素。
在本公开实施例中,将与限流器关联的限流队列和限流阈值参数作为限流配置信息,基于限流配置信息进行针对访问请求的限流判断,和对达到限流阈值的访问请求进行拒绝处理,实现了分布式环境下的网络访问限流,面对突发流量能够对特定接口的网络访问流量进行限制,有利于保证业务***的高可用性,和增强业务接口服务的高稳定性。
图4示意性示出了根据本公开实施例的网络访问的限流方法的整体流程示意图。
如图4所示,在整体流程开始后,执行操作401~416。
在操作401,接收访问请求。
在操作402,判断是否存在与访问请求关联的限流注解,是则执行操作404,否则执行操作403。
在操作403,不做限流控制,直接进入业务处理。在执行操作403完成后,整体流程结束。
在操作404,获取分布式锁。具体地,获取针对访问请求的限流器的分布式锁,用于实现针对限流器的单线程访问。
在操作405,确定与限流器关联的限流队列的长度,即,确定限流队列中的元素个数。
在操作406,判断限流队列的长度是否大于限流数目阈值,是则执行操作411,否则执行操作407;
在操作407,允许接入处理,把访问请求的请求时间作为首个元素加入限流队列。在执行操作407完成后,执行操作408。
在操作408,释放分布式锁。
在操作409,将访问请求发送给对应的业务接口。
在操作410,接收业务接口返回的业务数据,并将业务数据发送给用户终端。在执行操作410完成后,整体流程结束。
在操作411,获取限流队列的最后一个元素。
在操作412,计算访问请求的请求时间与最后一个元素的差值。
在操作413,判断差值是否大于限流频次阈值,是则执行操作414,否在执行操作415。
在操作414,移除限流队列中的最后一个元素。在执行操作414完成后,转入执行操作407。
在操作415,拒绝访问请求,释放分布式锁。
在操作416,向用户终端返回访问失败的通知。在执行操作416完成后,整体流程结束。
图5示意性示出了根据本公开实施例的网络访问的限流装置的框图。
如图5所示,该装置可以包括访问请求接收模块501、第一确定模块502、第二确定模块503和访问请求处理模块504。
具体地,访问请求接收模块501,用于接收来自用户终端的访问请求;第一确定模块502,用于确定与访问请求关联的限流配置信息;第二确定模块503,用于根据限流配置信息,确定访问请求是否满足限流阈值;访问请求处理模块504,用于在访问请求满足限流阈值的情况下,拒绝访问请求。
在本公开实施例中,通过接收来自用户终端的访问请求;确定与访问请求关联的限流配置信息;根据限流配置信息,确定访问请求是否满足限流阈值;在访问请求满足限流阈值的情况下,拒绝访问请求。通过对接收到的访问请求进行限流判断,有利于实现适用于分布式环境的网络访问限流,具体可以实现针对指定设备、指定应用或指定接口的网络访问限流,限流方式灵活,限流效果显著,有利于保障业务***的安全稳定运行。
作为一种可选的实施例,第一确定模块包括:限流器确定子模块,用于确定针对访问请求的限流器;限流配置信息确定子模块,用于确定与限流器关联的限流队列和限流阈值参数,以作为限流配置信息,其中,限流队列中包括至少一个元素,元素为被接入处理的访问请求的请求时间。
作为一种可选的实施例,第二确定模块包括:第一确定子模块,用于根据限流阈值参数中的限流数目阈值,确定限流队列中的元素总数是否达到限流数目阈值;以及第二确定子模块,用于在元素总数达到限流数目阈值的情况下,确定访问请求的请求时间与限流队列中的最后一个元素所表征的请求时间的差值;第三确定子模块,用于根据限流阈值参数中的限流频次阈值,确定差值是否达到限流频次阈值。
作为一种可选的实施例,访问请求处理模块包括:访问请求拒绝子模块,用于在差值未达到限流频次阈值的情况下,拒绝访问请求。
作为一种可选的实施例,访问请求处理模块还包括:访问请求接入子模块,用于在元素总数未达到限流数目阈值,或差值达到限流频次阈值的情况下,接入处理访问请求,并将访问请求的请求时间作为首个元素加入限流队列中。
作为一种可选的实施例,该装置还包括:分布式锁处理模块,用于在根据限流配置信息,确定访问请求是否满足限流阈值前,获取针对限流器的分布式锁,以实现针对限流器的单线程访问,以及在完成针对访问请求的限流判断后,释放分布式锁。
作为一种可选的实施例,第一确定模块包括:第四确定子模块,用于根据访问请求的请求类别,确定与请求类别关联的统计参数和优先级,其中,统计参数包括单位时间内的平均访问数量和平均访问频次;第五确定子模块,用于根据统计参数和优先级,确定针对访问请求的限流器。
作为一种可选的实施例,访问请求接入子模块包括:第一处理单元,用于确定与访问请求关联的业务接口,并将访问请求发送给业务接口;第二处理单元,用于接收业务接口基于针对业务请求的业务逻辑返回的业务数据,并将业务数据发送给用户终端。
可选地,访问请求接收模块501、第一确定模块502、第二确定模块503和访问请求处理模块504中的模块、子模块中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上***、基板上的***、封装上的***、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者根据本公开实施例的模块中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,访问请求接收模块501、第一确定模块502、第二确定模块503和访问请求处理模块504中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。可选地,访问请求接收模块501、第一确定模块502、第二确定模块503和访问请求处理模块504中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上***、基板上的***、封装上的***、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,访问请求接收模块501、第一确定模块502、第二确定模块503和访问请求处理模块504中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图6示意性示出了根据本公开实施例的适于实现网络访问的限流方法和装置的电子设备的框图。图6示出的计算机***仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图6所示,根据本公开实施例的计算机***600包括处理器601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。处理器601例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器601还可以包括用于缓存用途的板载存储器。处理器601可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 603中,存储有***600操作所需的各种程序和数据。处理器601、ROM 602以及RAM 603通过总线604彼此相连。处理器601通过执行ROM 602和/或RAM 603中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 602和RAM 603以外的一个或多个存储器中。处理器601也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
可选地,***600还可以包括输入/输出(I/O)接口605,输入/输出(I/O)接口605也连接至总线604。***600还可以包括连接至I/O接口605的以下部件中的一项或多项:包括键盘、鼠标等的输入部分607;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分606;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口606。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
可选地,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被处理器601执行时,执行本公开实施例的***中限定的上述功能。可选地,上文描述的***、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/***中所包含的;也可以是单独存在,而未装配入该设备/装置/***中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
可选地,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。例如,可选地,计算机可读存储介质可以包括上文描述的ROM 602和/或RAM 603和/或ROM 602和RAM 603以外的一个或多个存储器。
附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
Claims (11)
1.一种网络访问的限流方法,应用于分布式服务器,包括:
接收来自用户终端的访问请求;
确定与所述访问请求关联的限流配置信息;
根据所述限流配置信息,确定所述访问请求是否满足限流阈值;
在所述访问请求满足所述限流阈值的情况下,拒绝所述访问请求。
2.根据权利要求1所述的方法,其中,所述确定与所述访问请求关联的限流配置信息,包括:
确定针对所述访问请求的限流器;
确定与所述限流器关联的限流队列和限流阈值参数,以作为所述限流配置信息,其中,所述限流队列中包括至少一个元素,所述元素为被接入处理的访问请求的请求时间。
3.根据权利要求2所述的方法,其中,所述根据所述限流配置信息,确定所述访问请求是否满足限流阈值,包括:
根据所述限流阈值参数中的限流数目阈值,确定所述限流队列中的元素总数是否达到所述限流数目阈值;以及
在所述元素总数达到所述限流数目阈值的情况下,确定所述访问请求的请求时间与所述限流队列中的最后一个元素所表征的请求时间的差值;
根据所述限流阈值参数中的限流频次阈值,确定所述差值是否达到所述限流频次阈值。
4.根据权利要求3所述的方法,其中,所述在所述访问请求满足所述限流阈值的情况下,拒绝所述访问请求,包括:
在所述差值未达到所述限流频次阈值的情况下,拒绝所述访问请求。
5.根据权利要求3所述的方法,还包括:
在所述元素总数未达到所述限流数目阈值,或所述差值达到所述限流频次阈值的情况下,接入处理所述访问请求,并将所述访问请求的请求时间作为首个元素加入所述限流队列中。
6.根据权利要求3所述的方法,在根据所述限流配置信息,确定所述访问请求是否满足限流阈值前,包括:
获取针对所述限流器的分布式锁,以实现针对所述限流器的单线程访问,以及
在完成针对所述访问请求的限流判断后,释放所述分布式锁。
7.根据权利要求2所述的方法,其中,所述确定针对所述访问请求的限流器,包括:
根据所述访问请求的请求类别,确定与所述请求类别关联的统计参数和优先级,其中,所述统计参数包括单位时间内的平均访问数量和平均访问频次;
根据所述统计参数和优先级,确定针对所述访问请求的限流器。
8.根据权利要求5所述的方法,其中,所述接入处理所述访问请求,包括:
确定与所述访问请求关联的业务接口,并将所述访问请求发送给所述业务接口;
接收所述业务接口基于针对所述业务请求的业务逻辑返回的业务数据,并将所述业务数据发送给所述用户终端。
9.一种网络访问的限流装置,应用于分布式服务器,包括:
访问请求接收模块,用于接收来自用户终端的访问请求;
第一确定模块,用于确定与所述访问请求关联的限流配置信息;
第二确定模块,用于根据所述限流配置信息,确定所述访问请求是否满足限流阈值;
访问请求处理模块,用于在所述访问请求满足所述限流阈值的情况下,拒绝所述访问请求。
10.一种电子设备,包括:
一个或多个处理器;以及
存储器,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至8中任一项所述的方法。
11.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现权利要求1至8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011239588.8A CN113765814A (zh) | 2020-11-09 | 2020-11-09 | 网络访问的限流方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011239588.8A CN113765814A (zh) | 2020-11-09 | 2020-11-09 | 网络访问的限流方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113765814A true CN113765814A (zh) | 2021-12-07 |
Family
ID=78786005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011239588.8A Pending CN113765814A (zh) | 2020-11-09 | 2020-11-09 | 网络访问的限流方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113765814A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114513461A (zh) * | 2022-02-11 | 2022-05-17 | 联仁健康医疗大数据科技股份有限公司 | 限流方法、装置、电子设备及存储介质 |
CN115665074A (zh) * | 2022-10-08 | 2023-01-31 | 广州市玄武无线科技股份有限公司 | 消息限流发送方法、装置、设备及存储介质 |
CN117478600A (zh) * | 2023-12-28 | 2024-01-30 | 彩讯科技股份有限公司 | 服务于高并发多中心业务中台的流量控制方法与*** |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110401720A (zh) * | 2019-07-31 | 2019-11-01 | 中国工商银行股份有限公司 | 信息处理方法、装置、***、应用服务器和介质 |
-
2020
- 2020-11-09 CN CN202011239588.8A patent/CN113765814A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110401720A (zh) * | 2019-07-31 | 2019-11-01 | 中国工商银行股份有限公司 | 信息处理方法、装置、***、应用服务器和介质 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114513461A (zh) * | 2022-02-11 | 2022-05-17 | 联仁健康医疗大数据科技股份有限公司 | 限流方法、装置、电子设备及存储介质 |
CN115665074A (zh) * | 2022-10-08 | 2023-01-31 | 广州市玄武无线科技股份有限公司 | 消息限流发送方法、装置、设备及存储介质 |
CN115665074B (zh) * | 2022-10-08 | 2023-09-15 | 广州市玄武无线科技股份有限公司 | 消息限流发送方法、装置、设备及存储介质 |
CN117478600A (zh) * | 2023-12-28 | 2024-01-30 | 彩讯科技股份有限公司 | 服务于高并发多中心业务中台的流量控制方法与*** |
CN117478600B (zh) * | 2023-12-28 | 2024-03-08 | 彩讯科技股份有限公司 | 服务于高并发多中心业务中台的流量控制方法与*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113765814A (zh) | 网络访问的限流方法及装置 | |
CN109936511B (zh) | 一种令牌获取方法、装置、服务器、终端设备及介质 | |
CN110401720B (zh) | 信息处理方法、装置、***、应用服务器和介质 | |
US10217053B2 (en) | Provisioning service requests in a computer system | |
US10104037B2 (en) | Method and system for network access request control | |
US9645743B2 (en) | Selective I/O prioritization by system process/thread | |
US7694054B2 (en) | Governing access to a computing resource | |
US20110246688A1 (en) | Memory arbitration to ensure low latency for high priority memory requests | |
CN110099012B (zh) | 一种流量控制方法、***及电子设备和存储介质 | |
CN113794650B (zh) | 并发请求的处理方法、计算机设备和计算机可读存储介质 | |
CN114422439A (zh) | 接口限流方法、装置、计算机设备和存储介质 | |
US11005776B2 (en) | Resource allocation using restore credits | |
CN111125168B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN110635961A (zh) | 服务器的压测方法、装置和*** | |
CN110222016B (zh) | 一种文件处理方法及装置 | |
CN116489103A (zh) | 业务限流方法、装置及业务处理*** | |
CN116319810A (zh) | 分布式***的流量控制方法、装置、设备、介质及产品 | |
CN115269063A (zh) | 进程创建方法、***、设备及介质 | |
CN110851483B (zh) | 用于筛选对象的方法、装置、电子设备以及介质 | |
CN114090539A (zh) | 数据迁移方法、装置、计算机***及存储介质 | |
US10061614B2 (en) | Resource management for untrusted programs | |
CN113467924A (zh) | 一种资源分配方法、装置、服务器及计算机可读存储介质 | |
US8769175B2 (en) | Adjustment of post and non-post packet transmissions in a communication interconnect | |
CN118158163A (zh) | 网络流量控制方法、装置、设备、存储介质和程序产品 | |
CN109614255B (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 |