CN110661717A - 一种限流方法、装置及电子设备 - Google Patents
一种限流方法、装置及电子设备 Download PDFInfo
- Publication number
- CN110661717A CN110661717A CN201911027940.9A CN201911027940A CN110661717A CN 110661717 A CN110661717 A CN 110661717A CN 201911027940 A CN201911027940 A CN 201911027940A CN 110661717 A CN110661717 A CN 110661717A
- Authority
- CN
- China
- Prior art keywords
- service
- current
- current limiting
- request
- interface
- 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
- 238000000034 method Methods 0.000 title claims abstract description 61
- 230000008859 change Effects 0.000 claims description 12
- 230000002159 abnormal effect Effects 0.000 claims description 11
- 238000004891 communication Methods 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 8
- 238000012217 deletion Methods 0.000 description 6
- 230000037430 deletion Effects 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000012795 verification Methods 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供一种限流方法、装置及电子设备,限流方法包括:查询所有的服务接口,并判断每一服务接口是否与配置的接口路径匹配;若一服务接口与配置的接口路径匹配,则统计服务接口的请求流量指标;在请求流量指标超出限流阈值参数时,对请求进行限流。因此,本申请实施例提供的限流方法,可以在服务接口与配置的接口路径匹配的基础上,根据服务接口的请求流量指标对请求进行限流。若请求流量指标超出限流阈值参数,则表明该服务接口的请求较多,可以对请求进行限流,以解决由于业务高峰期时的业务量较大出现不稳定的问题。
Description
技术领域
本申请涉及互联网业务领域,具体而言,涉及一种限流方法、装置及电子设备。
背景技术
在一般的大型企业中,生产系统纷繁复杂,在复杂的应用系统中有很多的依赖,都会不可避免地在某些时候响应失败,高并发的依赖失败时如果没有相应的措施,当前的应用就有被拖垮的风险。即使应用的硬件配置很高,也难免在应对业务高峰期的业务量时存在瓶颈。也就是说,系统由于在业务高峰期时的业务量较大,会使得系统出现不稳定的情况,甚至崩溃,影响系统的正常使用。
发明内容
本申请实施例的目的在于提供一种限流方法、装置及电子设备,用以解决系统由于在业务高峰期时的业务量较大出现不稳定的问题。
为了实现上述目的,本申请实施例所提供的技术方案如下所示:
第一方面,本申请实施例提供一种限流方法,所述限流方法包括:查询所有的服务接口,并判断每一服务接口是否与配置的接口路径匹配;若一所述服务接口与所述配置的接口路径匹配,则统计所述服务接口的请求流量指标;在所述请求流量指标超出限流阈值参数时,对请求进行限流。因此,本申请实施例提供的限流方法,可以在服务接口与配置的接口路径匹配的基础上,根据服务接口的请求流量指标对请求进行限流。若请求流量指标超出限流阈值参数,则表明该服务接口的请求较多,可以对请求进行限流,以解决由于业务高峰期时的业务量较大出现不稳定的问题。
在本申请的可选实施例中,在所述查询所有的服务接口之前,所述限流方法还包括:获取整个服务的限流参数,并判断所述限流参数的值是否为表征对整个服务限流的第一值;若所述限流参数的值为表征对整个服务限流的第一值,执行所述查询所有的服务接口,并判断每一服务接口是否与配置的接口路径匹配。因此,在对请求进行限流之前,可以先判断整个服务是否需要限流,若整个服务需要限流则在业务量较大时该服务中的请求进行限流,若整个服务不需要限流则可以不执行后续的限流操作。从而,既可以在业务高峰期业务量较大时解决不稳定的问题,同时也可以在整个服务不需要限流时节约服务器的运算量。
在本申请的可选实施例中,在所述查询所有的服务接口之前,所述限流方法还包括:获取请求路径参数以及限流类型参数;其中,所述请求路径参数用于判断每一服务接口是否与配置的接口路径匹配,所述限流类型参数用于统计所述服务接口的所述请求流量指标。因此,在对请求进行限流之前,可以先根据请求路径参数判断每一服务接口是否与配置的接口路径匹配,若服务接口与配置的接口路径匹配则可以对该服务路径进行限流,若服务接口与配置的接口路径不匹配则不执行后续的限流操作。从而,既可以保证整个服务中最重要的服务路径不会被限流,同时也可以在某个服务接口不需要限流时节约服务器的运算量。
在本申请的可选实施例中,在所述查询所有的服务接口之前,所述限流方法还包括:初始化限流配置参数;其中,所述限流配置参数包括所述整个服务的限流参数、所述请求路径参数、所述限流类型参数以及所述限流阈值参数;创建配置中心监听器,以监听所述限流配置参数是否发生变化;在所述限流配置参数发生变化时,重新初始化所述限流配置参数。因此,可以通过创建的中心监听器,监听限流配置参数是否发生变化,若限流配置参数发生变化,则说明限流配置参数有更新,此时直接重新初始化新的限流配置参数,从而不需要重启整个系统便可以实现对限流配置参数的修改并立即生效效果,以保证整个系统的正常运行。
在本申请的可选实施例中,在所述限流类型参数表征限流类型为并发线程数时,所述统计所述服务接口的请求,包括:统计所述服务接口的并发线程数。因此,当限流类型参数表征限流类型为并发线程数,则表明,在并发线程数较多时则说明此时业务量较大,可以对请求进行限流。
在本申请的可选实施例中,在所述限流类型表征限流类型为每秒查询率时,所述统计所述服务接口的请求,包括:统计所述服务接口的每秒查询率。因此,当限流类型参数表征限流类型为每秒查询率,则表明,在每秒查询率较大时则说明此时业务量较大,可以对请求进行限流。
在本申请的可选实施例中,在所述对请求进行限流之后,所述限流方法还包括:输出限流异常信息。因此,在对某个请求进行限流后,可以输出限流异常信息以告知用户其请求被限流,可以在业务量变小后再进行对应的请求。
在本申请的可选实施例中,在所述统计所述服务接口的请求流量指标之前,所述限流方法还包括:判断所述接口路径的限流标签是否表征对所述接口路径进行限流;若所述接口路径的限流标签表征对所述接口路径进行限流,执行统计所述服务接口的请求流量指标。因此,可以通过限流标签来判断是否对该接口路径进行限流,从而,既可以保证整个服务中最重要的服务路径不会被限流,同时也可以在某个服务接口不需要限流时节约服务器的运算量。
第二方面,本申请实施例提供一种限流装置,包括:查询模块,用于查询所有的服务接口,并判断每一服务接口是否与配置的接口路径匹配;统计模块,用于若一所述服务接口与所述配置的接口路径匹配,则统计所述服务接口的请求流量指标;限流模块,用于在所述请求流量指标超出限流阈值参数时,对请求进行限流。因此,本申请实施例提供的限流方法,可以在服务接口与配置的接口路径匹配的基础上,利用限流模块根据服务接口的请求流量指标对请求进行限流。若请求流量指标超出限流阈值参数,则表明该服务接口的请求较多,可以对请求进行限流,以解决由于业务高峰期时的业务量较大出现不稳定的问题。
在本申请的可选实施例中,所述限流装置还包括:第一获取模块,用于获取整个服务的限流参数,并判断所述限流参数的值是否为表征对整个服务限流的第一值;若所述限流参数的值为表征对整个服务限流的第一值,所述查询模块用于执行所述查询所有的服务接口,并判断每一服务接口是否与配置的接口路径匹配。因此,在对请求进行限流之前,可以利用第一获取模块先判断整个服务是否需要限流,若整个服务需要限流则在业务量较大时该服务中的请求进行限流,若整个服务不需要限流则可以不执行后续的限流操作。从而,既可以在业务高峰期业务量较大时解决不稳定的问题,同时也可以在整个服务不需要限流时节约服务器的运算量。
在本申请的可选实施例中,所述限流装置还包括:第二获取模块,用于获取请求路径参数以及限流类型参数;其中,所述请求路径参数用于判断每一服务接口是否与配置的接口路径匹配,所述限流类型参数用于统计所述服务接口的所述请求流量指标。因此,在对请求进行限流之前,可以先根据请求路径参数判断每一服务接口是否与配置的接口路径匹配,若服务接口与配置的接口路径匹配则可以对该服务路径进行限流,若服务接口与配置的接口路径不匹配则不执行后续的限流操作。从而,既可以保证整个服务中最重要的服务路径不会被限流,同时也可以在某个服务接口不需要限流时节约服务器的运算量。
在本申请的可选实施例中,所述限流装置还包括:第一初始化模块,用于初始化限流配置参数;其中,所述限流配置参数包括所述整个服务的限流参数、所述请求路径参数、所述限流类型参数以及所述限流阈值参数;创建模块,用于创建配置中心监听器,以监听所述限流配置参数是否发生变化;第二初始化模块,用于在所述限流配置参数发生变化时,重新初始化所述限流配置参数。因此,可以利用创建模块创建的中心监听器,监听限流配置参数是否发生变化,若限流配置参数发生变化,则说明限流配置参数有更新,此时直接重新初始化新的限流配置参数,从而不需要重启整个系统便可以实现对限流配置参数的修改并立即生效效果,以保证整个系统的正常运行。
在本申请的可选实施例中,在所述限流类型参数表征限流类型为并发线程数时,所述统计模块还用于:统计所述服务接口的并发线程数。因此,当限流类型参数表征限流类型为并发线程数,则表明,在并发线程数较多时则说明此时业务量较大,可以对请求进行限流。
在本申请的可选实施例中,在所述限流类型表征限流类型为每秒查询率时,所述统计模块还用于:统计所述服务接口的每秒查询率。因此,当限流类型参数表征限流类型为每秒查询率,则表明,在每秒查询率较大时则说明此时业务量较大,可以对请求进行限流。
在本申请的可选实施例中,所述限流装置还包括:输出模块,用于输出限流异常信息。因此,在对某个请求进行限流后,可以利用输出模块输出限流异常信息以告知用户其请求被限流,可以在业务量变小后再进行对应的请求。
在本申请的可选实施例中,所述限流装置还包括:判断模块,用于判断所述接口路径的限流标签是否表征对所述接口路径进行限流;若所述接口路径的限流标签表征对所述接口路径进行限流,统计模块执行统计所述服务接口的请求流量指标。因此,可以通过限流标签来判断是否对该接口路径进行限流,从而,既可以保证整个服务中最重要的服务路径不会被限流,同时也可以在某个服务接口不需要限流时节约服务器的运算量。
第三方面,本申请实施例提供一种电子设备,包括:处理器、存储器和总线;所述处理器和所述存储器通过所述总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如第一方面中所述的限流方法。
第四方面,本申请实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如第一方面中所述的限流方法。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举本申请实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种限流方法的流程图;
图2为本申请实施例提供的另一种限流方法的流程图;
图3为本申请实施例提供的另一种限流方法的流程图;
图4为本申请实施例提供的一种限流装置的结构框图;
图5为本申请实施例提供的一种电子设备的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
本申请实施例提供的限流方法可以用于Dubbo框架,其中,Dubbo是一个开源JavaRPC框架,使得应用可通过高性能的RPC实现服务的输出和输入功能。在Dubbo框架中,可以利用com.alibaba.dubbo.rpc.Filter接口实现本申请实施例提供的限流方法,并执行invoke()方法。其中,invoke()方法一种Java同构系统之间方法调用的实现方案。
作为一种实施方式,该限流方法可以用于一个企业的生产系统中。在许多企业中,生产系统功能复杂、使用人数多,很容易出现响应失败,甚至整个系统崩溃的情况。利用本申请实施例提供的限流方法,可以在生产系统中的某个服务业务量较大的时候,对服务中的一部分请求进行限流,从而解决由于业务高峰期时的业务量较大出现不稳定的问题。
需要说明的是,本申请实施例提供的限流方法不限于应用在上述生产系统中,还可以应用在其他系统中,例如:账单核销系统、任务分配系统等。
请参照图1,图1为本申请实施例提供的一种限流方法的流程图,该限流方法包括如下步骤:
步骤S101:查询所有的服务接口,并判断每一服务接口是否与配置的接口路径匹配。
示例性的,服务器可以首先查询一个服务中所有的服务接口,其中,用户可以通过服务接口向服务器发出请求,以使服务器根据请求执行服务中的相关任务。然后,服务器对查询到的每个服务接口进行判断,判断该服务接口是否与配置的接口路径匹配。在对服务进行限流之前,可以先对每一个服务接口与一个对应的接口路径进行配置,因此,在判断每一服务接口是否与配置的接口路径匹配时,即判断该服务接口对应的接口路径是否为事先配置的接口路径。若该服务接口与配置的接口路径匹配时,则执行后续步骤;若该服务接口与配置的接口路径不匹配时,则执行Invoker.invoker()方法。
除此之外,在对服务进行限流之前,还可以对每个接口路径是否需要限流进行配置。举例来说,服务中包括账单结算服务以及账单删除服务两种服务,与账单删除服务相比,账单结算服务更为重要,此时,为了保证在业务量较大的情况下,更重要的账单结算服务可以正常进行,因此可以对账单删除服务进行限流。即,将账单删除服务对应的接口路径配置为可限流,将账单结算服务对应的接口路径配置为不可限流。当用户通过某服务接口请求进行账单删除服务时,服务器判断该服务接口与配置的账单删除服务对应的接口路径匹配,因此可以对该用户的请求进行限流;与之相对,当用户通过某服务接口请求进行账单结算服务时,服务器判断该服务接口与配置的账单结算服务对应的接口路径不匹配,因此不对该用户的请求进行限流。从而,既可以在业务高峰期业务量较大时解决不稳定的问题,同时也可以在整个服务不需要限流时节约服务器的运算量。
再例如,服务可以由企业总经理以及企业普通员工进行请求,其中,企业总经理进行请求时的接口路径可以与企业普通员工进行请求时的接口路径不相同。与普通员工相比,企业总经理的请求更为重要,此时,为了保证在业务量较大的情况下,更重要的企业总经理的请求可以正常进行,因此可以对企业普通员工的请求进行限流。即,将企业普通员工的请求对应的接口路径配置为可限流,将企业总经理的请求对应的接口路径配置为不可限流。当企业普通员工通过某服务接口进行请求时,服务器判断该服务接口与配置的接口路径匹配,因此可以对该服务接口的请求进行限流;与之相对,当企业总经理通过某服务接口进行请求时,服务器判断该服务接口与配置的接口路径不匹配,因此不可以对该服务接口的请求进行限流。从而,既可以在业务高峰期业务量较大时解决不稳定的问题,同时也可以在整个服务不需要限流时节约服务器的运算量。
步骤S102:若一所述服务接口与所述配置的接口路径匹配,则统计所述服务接口的请求流量指标。
示例性的,在步骤S101中判断一个服务接口是否与配置的接口路径匹配之后,会有该服务接口与配置的接口路径匹配和该服务接口与配置的接口路径不匹配两种情况。若该服务接口与配置的接口路径匹配,则说明用户通过该服务接口发出的请求在业务量较大时可以被限流。此时,可以继续执行后续的限流操作。
服务器可以对该服务接口的请求流量指标进行统计,其中,对服务接口的请求流量指标进行统计的方式本申请实施例不作具体的限定,本领域技术人员可以根据实际情况进行合适的调整。举例来说,服务器可以直接读取某个服务接口对应的请求流量指标,也可以接收云端发送的请求流量指标数据等。其中,云端中存储的请求流量指标数据可以为一段时间内该服务接口的平均请求流量指标、该服务接口的瞬时请求流量指标等,这些请求流量数据可以为其他终端等获取的。
服务接口的请求流量指标的具体类型本申请实施例也不作具体的限定,本领域技术人员可以根据实际情况进行合适的调整。举例来说,请求流量指标可以为并发线程数、每秒查询率(Query Per Second,QPS)、请求服务的数据量等。
步骤S103:在所述请求流量指标超出限流阈值参数时,对请求进行限流。
示例性的,在步骤S102中统计了服务接口的请求流量指标之后,若请求流量指标超出限流阈值参数,则说明该服务接口的请求应该被限流。其中,限流阈值参数可以为事先配置好的,服务器直接读取或者接收该配置好的限流阈值参数;或者限流阈值参数可以动态调整,例如,在整个服务的业务量压力较大时,可以适当的降低其中某些服务的限流阈值参数,从而缓解整个服务的业务量压力。
服务器进行限流的方式本申请实施例也不作具体的限定,本领域技术人员可以根据实际情况进行合适的调整。举例来说,服务器可以设置一部分用户进行服务的权限、服务器可以直接禁止一部分用户对服务的访问等方式。
在本申请实施例中,本申请实施例提供的限流方法,可以在服务接口与配置的接口路径匹配的基础上,根据服务接口的请求流量指标对请求进行限流。若请求流量指标超出限流阈值参数,则表明该服务接口的请求较多,可以对请求进行限流,以解决由于业务高峰期时的业务量较大出现不稳定的问题。
进一步的,请参照图2,图2为本申请实施例提供的另一种限流方法的流程图,在步骤S101之前,该限流方法还包括如下步骤:
步骤S201:获取整个服务的限流参数,并判断所述限流参数的值是否为表征对整个服务限流的第一值。
步骤S202:若所述限流参数的值为表征对整个服务限流的第一值,执行步骤101。
示例性的,在步骤S101之前,服务器可以首先获取整个服务的限流参数,其中,整个服务的限流参数的值可以用于表征是否对整个服务进行限流。例如,整个服务的限流参数可以包括0以及1两个值,0为表示对整个服务进行限流的第一值,而1则表示不对整个服务进行限流的第二值。若该限流参数的值为表征对整个服务限流的第一值,则可以执行后续的限流操作。
在本申请实施例中,在对请求进行限流之前,可以先判断整个服务是否需要限流,若整个服务需要限流则在业务量较大时该服务中的请求进行限流,若整个服务不需要限流则可以不执行后续的限流操作。从而,既可以在业务高峰期业务量较大时解决不稳定的问题,同时也可以在整个服务不需要限流时节约服务器的运算量。
进一步的,在步骤S101之前,该限流方法还包括如下步骤:
获取请求路径参数以及限流类型参数。
示例性的,在步骤S101之前,服务器可以首先获取请求路径参数以及限流类型参数。其中,请求路径参数可以用于判断每一服务接口是否与配置的接口路径匹配,而限流类型参数可以用于表征统计的请求流量指标的类型。
需要说明的是,获取请求路径参数以及限流类型参数的方式本申请实施例不作具体的限定,本领域技术人员可以根据实际情况进行合适的调整。举例来说,服务器可以直接读取事先配置好的请求路径参数以及限流类型参数,也可以接收云端发送的请求路径参数以及限流类型参数等。其中,云端中存储的获取请求路径参数以及限流类型参数可以为在其他终端中事先配置好的。
在本申请实施例中,在对请求进行限流之前,可以先根据请求路径参数判断每一服务接口是否与配置的接口路径匹配,若服务接口与配置的接口路径匹配则可以对该服务路径进行限流,若服务接口与配置的接口路径不匹配则不执行后续的限流操作。从而,既可以保证整个服务中最重要的服务路径不会被限流,同时也可以在某个服务接口不需要限流时节约服务器的运算量。
进一步的,请参照图3,图3为本申请实施例提供的另一种限流方法的流程图,在步骤S101之前,该限流方法还包括如下步骤:
步骤S301:初始化限流配置参数。
示例性的,在对服务进行限流之前,可以首先初始化限流配置参数。作为一种实施方式,所述限流配置参数可以包括整个服务的限流参数、请求路径参数、限流类型参数以及限流阈值参数等。其中,整个服务的限流参数的值可以用于表征是否对整个服务进行限流;请求路径参数可以用于判断每一服务接口是否与配置的接口路径匹配;限流类型参数可以用于表征统计的请求流量指标的类型;若请求流量指标超出限流阈值参数,则说明该服务接口的请求应该被限流。作为一种实施方式,可以利用实现类构造器函数初始化限流配置参数。
需要说明的是,获取上述限流配置参数的方式本申请实施例不作具体的限定,本领域技术人员可以根据实际情况进行合适的调整。举例来说,服务器可以直接读取事先配置好的上述限流配置参数,也可以接收云端发送的上述限流配置参数等。其中,云端中存储的上述限流配置参数可以为在其他终端中事先配置好的。
步骤S302:创建配置中心监听器,以监听所述限流配置参数是否发生变化。
示例性的,服务器可以创建一个中心监听器用来监听限流配置参数是否发生变化。其中,限流配置参数可以根据实际情况自动进行更新,也可以为操作人员手动更改。
步骤S303:在所述限流配置参数发生变化时,重新初始化所述限流配置参数。
示例性的,若限流配置参数发生了变化,则说明应该对整个服务的限流情况进行一个更新,在中心监听器的监听下,可以在限流配置参数发生变化的时候,直接重新初始化限流配置参数,而不需要关闭整个服务,从而可以实现热部署功能。
在本申请实施例中,可以通过创建的中心监听器,监听限流配置参数是否发生变化,若限流配置参数发生变化,则说明限流配置参数有更新,此时直接重新初始化新的限流配置参数,从而不需要重启整个系统便可以实现对限流配置参数的修改并立即生效效果,以保证整个系统的正常运行。
进一步的,在所述限流类型参数表征限流类型为并发线程数时,步骤S102包括如下步骤:
统计所述服务接口的并发线程数。
示例性的,限流类型参数可以表征限流类型为并发线程数,其中,并发线程数表示该服务接口同时处理的业务数量。此时,可以对服务接口的并发线程数进行统计,并在服务接口的并发线程数超过限流阈值参数时,对该服务接口的请求进行限流。
在本申请实施例中,当限流类型参数表征限流类型为并发线程数,则表明,在并发线程数较多时则说明此时业务量较大,可以对请求进行限流。
进一步的,在所述限流类型表征限流类型为每秒查询率时,步骤S102包括如下步骤:
统计所述服务接口的每秒查询率。
示例性的,限流类型参数可以表征限流类型为每秒查询率,其中,每秒查询率表示在规定时间内该服务接口所处理流量的多少。此时,可以对服务接口的每秒查询率进行统计,并在服务接口的每秒查询率超过限流阈值参数时,对该服务接口的请求进行限流。
在本申请实施例中,当限流类型参数表征限流类型为每秒查询率,则表明,在每秒查询率较大时则说明此时业务量较大,可以对请求进行限流。
进一步的,在步骤S103之后,该限流方法还包括如下步骤:
输出限流异常信息。
示例性的,在对服务接口的请求进行限流之后,可以输出限流异常信息,用来告知用于其请求被限流。其中,服务器输出限流异常信息的方式本申请实施例不作具体的限定,本领域技术人员可以根据实际情况进行合适的调整。举例来说,服务器可以输出文字信息“请求被限流”、输出语音信息等。
在本申请实施例中,在对某个请求进行限流后,可以输出限流异常信息以告知用户其请求被限流,可以在业务量变小后再进行对应的请求。
进一步的,在统计所述服务接口的请求流量指标之前,该限流方法还包括如下步骤:
第一步,判断所述接口路径的限流标签是否表征对所述接口路径进行限流。
第二步,若所述接口路径的限流标签表征对所述接口路径进行限流,执行统计所述服务接口的请求流量指标。
示例性的,在服务接口与配置的接口路径匹配时,服务器可以根据与接口路径对应的限流标签判断该接口路径是否可以被限流。作为一种实施方式,可以在提供方的Dubbo配置文件中加入<dubbo:provider>标签配置请求路径参数,同时利用Dubbo的串行外设接口(Service Provider Interface,SPI)机制对Dubbo框架实现接入限流功能。
在本申请实施例中,请求路径参数中可以包括与服务接口对应的限流标签,用来表征与该服务接口对应的接口路径是否需要进行限流。从而,既可以保证整个服务中最重要的服务路径不会被限流,同时也可以在某个服务接口不需要限流时节约服务器的运算量。
请参照图4,图4为本申请实施例提供的一种限流装置,该限流装置400包括:查询模块401,用于查询所有的服务接口,并判断每一服务接口是否与配置的接口路径匹配;统计模块402,用于若一所述服务接口与所述配置的接口路径匹配,则统计所述服务接口的请求流量指标;限流模块403,用于在所述请求流量指标超出限流阈值参数时,对请求进行限流。
在本申请实施例中,本申请实施例提供的限流方法,可以在服务接口与配置的接口路径匹配的基础上,利用限流模块403根据服务接口的请求流量指标对请求进行限流。若请求流量指标超出限流阈值参数,则表明该服务接口的请求较多,可以对请求进行限流,以解决由于业务高峰期时的业务量较大出现不稳定的问题。
进一步的,所述限流装置400还包括:第一获取模块,用于获取整个服务的限流参数,并判断所述限流参数的值是否为表征对整个服务限流的第一值;若所述限流参数的值为表征对整个服务限流的第一值,所述查询模块401用于执行查询所有的服务接口。
在本申请实施例中,在对请求进行限流之前,可以利用第一获取模块先判断整个服务是否需要限流,若整个服务需要限流则在业务量较大时该服务中的请求进行限流,若整个服务不需要限流则可以不执行后续的限流操作。从而,既可以在业务高峰期业务量较大时解决不稳定的问题,同时也可以在整个服务不需要限流时节约服务器的运算量。
进一步的,所述限流装置400还包括:第二获取模块,用于获取请求路径参数以及限流类型参数;其中,所述请求路径参数用于判断每一服务接口是否与配置的接口路径匹配,所述限流类型参数用于统计所述服务接口的所述请求流量指标。
在本申请实施例中,在对请求进行限流之前,可以先根据请求路径参数判断每一服务接口是否与配置的接口路径匹配,若服务接口与配置的接口路径匹配则可以对该服务路径进行限流,若服务接口与配置的接口路径不匹配则不执行后续的限流操作。从而,既可以保证整个服务中最重要的服务路径不会被限流,同时也可以在某个服务接口不需要限流时节约服务器的运算量。
进一步的,所述限流装置400还包括:第一初始化模块,用于初始化限流配置参数;其中,所述限流配置参数包括所述整个服务的限流参数、所述请求路径参数、所述限流类型参数以及所述限流阈值参数;创建模块,用于创建配置中心监听器,以监听所述限流配置参数是否发生变化;第二初始化模块,用于在所述限流配置参数发生变化时,重新初始化所述限流配置参数。
在本申请实施例中,可以利用创建模块创建的中心监听器,监听限流配置参数是否发生变化,若限流配置参数发生变化,则说明限流配置参数有更新,此时直接重新初始化新的限流配置参数,从而不需要重启整个系统便可以实现对限流配置参数的修改并立即生效效果,以保证整个系统的正常运行。
进一步的,在所述限流类型参数表征限流类型为并发线程数时,所述统计模块402还用于:统计所述服务接口的并发线程数。
在本申请实施例中,当限流类型参数表征限流类型为并发线程数,则表明,在并发线程数较多时则说明此时业务量较大,可以对请求进行限流。
进一步的,在所述限流类型表征限流类型为每秒查询率时,所述统计模块402还用于:统计所述服务接口的每秒查询率。
在本申请实施例中,当限流类型参数表征限流类型为每秒查询率,则表明,在每秒查询率较大时则说明此时业务量较大,可以对请求进行限流。
进一步的,所述限流装置400还包括:输出模块,用于输出限流异常信息。
在本申请实施例中,在对某个请求进行限流后,可以利用输出模块输出限流异常信息以告知用户其请求被限流,可以在业务量变小后再进行对应的请求。
在本申请的可选实施例中,所述限流装置400还包括:判断模块,用于判断所述接口路径的限流标签是否表征对所述接口路径进行限流;若所述接口路径的限流标签表征对所述接口路径进行限流,统计模块402执行统计所述服务接口的请求流量指标。
在本申请实施例中,可以通过限流标签来判断是否对该接口路径进行限流,从而,既可以保证整个服务中最重要的服务路径不会被限流,同时也可以在某个服务接口不需要限流时节约服务器的运算量。
请参照图5,图5为本申请实施例提供的一种电子设备的结构框图,该电子设备包括:至少一个处理器501,至少一个通信接口502,至少一个存储器503和至少一个通信总线504。其中,通信总线504用于实现这些组件直接的连接通信,通信接口502用于与其他节点设备进行信令或数据的通信,存储器503存储有处理器501可执行的机器可读指令。当电子设备运行时,处理器501与存储器503之间通过通信总线504通信,机器可读指令被处理器501执行时执行上述限流方法。
处理器501可以是一种集成电路芯片,具有信号处理能力。上述处理器501可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。其可以实现或者执行本申请实施例中公开的各种方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器503可以包括但不限于随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
本申请实施例还提供一种计算机程序产品,包括存储在非暂态计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被计算机执行时,计算机能够执行上述实施例中限流方法的步骤,例如包括:查询所有的服务接口,并判断每一服务接口是否与配置的接口路径匹配;若一所述服务接口与所述配置的接口路径匹配,则统计所述服务接口的请求流量指标;在所述请求流量指标超出限流阈值参数时,对请求进行限流。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种限流方法,其特征在于,所述限流方法包括:
查询所有的服务接口,并判断每一服务接口是否与配置的接口路径匹配;
若一所述服务接口与所述配置的接口路径匹配,则统计所述服务接口的请求流量指标;
在所述请求流量指标超出限流阈值参数时,对请求进行限流。
2.根据权利要求1所述的限流方法,其特征在于,在所述查询所有的服务接口之前,所述限流方法还包括:
获取整个服务的限流参数,并判断所述限流参数的值是否为表征对整个服务限流的第一值;
若所述限流参数的值为表征对整个服务限流的第一值,执行所述查询所有的服务接口,并判断每一服务接口是否与配置的接口路径匹配。
3.根据权利要求2所述的限流方法,其特征在于,在所述查询所有的服务接口之前,所述限流方法还包括:
获取请求路径参数以及限流类型参数;其中,所述请求路径参数用于判断每一服务接口是否与配置的接口路径匹配,所述限流类型参数用于统计所述服务接口的所述请求流量指标。
4.根据权利要求3所述的限流方法,其特征在于,在所述查询所有的服务接口之前,所述限流方法还包括:
初始化限流配置参数;其中,所述限流配置参数包括所述整个服务的限流参数、所述请求路径参数、所述限流类型参数以及所述限流阈值参数;
创建配置中心监听器,以监听所述限流配置参数是否发生变化;
在所述限流配置参数发生变化时,重新初始化所述限流配置参数。
5.根据权利要求3或4所述的限流方法,其特征在于,在所述限流类型参数表征限流类型为并发线程数时,所述统计所述服务接口的请求,包括:
统计所述服务接口的并发线程数。
6.根据权利要求3或4所述的限流方法,其特征在于,在所述限流类型参数表征限流类型为每秒查询率时,所述统计所述服务接口的请求,包括:
统计所述服务接口的每秒查询率。
7.根据权利要求1-4任一项所述的限流方法,其特征在于,在所述对请求进行限流之后,所述限流方法还包括:
输出限流异常信息。
8.根据权利要求1-4任一项所述的限流方法,其特征在于,在所述统计所述服务接口的请求流量指标之前,所述限流方法还包括:
判断所述接口路径的限流标签是否表征对所述接口路径进行限流;
若所述接口路径的限流标签表征对所述接口路径进行限流,执行统计所述服务接口的请求流量指标。
9.一种限流装置,其特征在于,包括:
查询模块,用于查询所有的服务接口,并判断每一服务接口是否与配置的接口路径匹配;
统计模块,用于若一所述服务接口与所述配置的接口路径匹配,则统计所述服务接口的请求流量指标;
限流模块,用于在所述请求流量指标超出限流阈值参数时,对请求进行限流。
10.一种电子设备,其特征在于,包括:处理器、存储器和总线;
所述处理器和所述存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1-8任一项所述的限流方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911027940.9A CN110661717A (zh) | 2019-10-25 | 2019-10-25 | 一种限流方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911027940.9A CN110661717A (zh) | 2019-10-25 | 2019-10-25 | 一种限流方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110661717A true CN110661717A (zh) | 2020-01-07 |
Family
ID=69041841
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911027940.9A Pending CN110661717A (zh) | 2019-10-25 | 2019-10-25 | 一种限流方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110661717A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111831448A (zh) * | 2020-07-16 | 2020-10-27 | 北京字节跳动网络技术有限公司 | 请求的处理方法、装置和电子设备 |
CN113381944A (zh) * | 2021-06-09 | 2021-09-10 | 中国工商银行股份有限公司 | 系统限流方法、装置、电子设备、介质和程序产品 |
CN113596050A (zh) * | 2021-08-04 | 2021-11-02 | 四川英得赛克科技有限公司 | 异常流量的分离过滤方法、系统、存储介质及电子设备 |
CN113765692A (zh) * | 2021-01-28 | 2021-12-07 | 北京京东拓先科技有限公司 | 限流方法、装置、电子设备和计算机可读介质 |
WO2022252085A1 (zh) * | 2021-05-31 | 2022-12-08 | 华为技术有限公司 | 计算机系统及总线流量控制方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106375472A (zh) * | 2016-09-29 | 2017-02-01 | 北京三快在线科技有限公司 | 访问请求处理方法、装置和服务器 |
CN108111333A (zh) * | 2017-11-22 | 2018-06-01 | 链家网(北京)科技有限公司 | 一种基于web的流量限制方法及系统 |
CN110191160A (zh) * | 2019-05-10 | 2019-08-30 | 深圳前海微众银行股份有限公司 | 一种并发控制方法和装置 |
-
2019
- 2019-10-25 CN CN201911027940.9A patent/CN110661717A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106375472A (zh) * | 2016-09-29 | 2017-02-01 | 北京三快在线科技有限公司 | 访问请求处理方法、装置和服务器 |
CN108111333A (zh) * | 2017-11-22 | 2018-06-01 | 链家网(北京)科技有限公司 | 一种基于web的流量限制方法及系统 |
CN110191160A (zh) * | 2019-05-10 | 2019-08-30 | 深圳前海微众银行股份有限公司 | 一种并发控制方法和装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111831448A (zh) * | 2020-07-16 | 2020-10-27 | 北京字节跳动网络技术有限公司 | 请求的处理方法、装置和电子设备 |
CN113765692A (zh) * | 2021-01-28 | 2021-12-07 | 北京京东拓先科技有限公司 | 限流方法、装置、电子设备和计算机可读介质 |
CN113765692B (zh) * | 2021-01-28 | 2024-05-21 | 北京京东拓先科技有限公司 | 限流方法、装置、电子设备和计算机可读介质 |
WO2022252085A1 (zh) * | 2021-05-31 | 2022-12-08 | 华为技术有限公司 | 计算机系统及总线流量控制方法 |
CN113381944A (zh) * | 2021-06-09 | 2021-09-10 | 中国工商银行股份有限公司 | 系统限流方法、装置、电子设备、介质和程序产品 |
CN113596050A (zh) * | 2021-08-04 | 2021-11-02 | 四川英得赛克科技有限公司 | 异常流量的分离过滤方法、系统、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110661717A (zh) | 一种限流方法、装置及电子设备 | |
CN107222426B (zh) | 控流的方法、装置及系统 | |
US10447789B2 (en) | Distributed flow control | |
CN108776934B (zh) | 分布式数据计算方法、装置、计算机设备及可读存储介质 | |
WO2019169724A1 (zh) | 服务器并发数控制方法、装置、计算机设备及存储介质 | |
CN111447150A (zh) | 访问请求限流方法、服务器及存储介质 | |
CN108462760B (zh) | 电子装置、集群访问域名自动生成方法及存储介质 | |
CN109871305B (zh) | 告警信息的处理方法、装置、计算机设备及存储介质 | |
US9384114B2 (en) | Group server performance correction via actions to server subset | |
WO2021013058A1 (zh) | 大数据产品的异常提示方法、装置、系统、设备及介质 | |
CN109510842B (zh) | 一种工控网络文件强制访问控制策略配置的方法及装置 | |
US10848366B2 (en) | Network function management method, management unit, and system | |
EP3264723B1 (en) | Method, related apparatus and system for processing service request | |
CN109669835B (zh) | MySQL数据库监控方法、装置、设备及可读存储介质 | |
CN110188121B (zh) | 业务数据监控方法、装置、计算机设备及存储介质 | |
CN108572898B (zh) | 一种控制接口的方法、装置、设备、以及存储介质 | |
CN108616429A (zh) | 一种推送服务的重连方法及设备 | |
CN109495343B (zh) | 异常流量数据的处理方法、装置及服务器 | |
CN111400039A (zh) | 云平台的控制方法和装置、云平台系统、电子设备 | |
CN107729213B (zh) | 一种后台任务监控方法及装置 | |
CN115396954A (zh) | 一种分布式多维度限流系统及方法 | |
CN109561045B (zh) | 数据拦截方法及装置、存储介质和电子设备 | |
CN110569114B (zh) | 一种业务处理方法、装置、设备及存储介质 | |
CN111182536A (zh) | Sim卡状态检测方法、装置、网络设备及存储介质 | |
CN115022171B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200107 |