CN115037789B - 限流方法、装置、设备、存储介质和程序产品 - Google Patents

限流方法、装置、设备、存储介质和程序产品 Download PDF

Info

Publication number
CN115037789B
CN115037789B CN202210644799.2A CN202210644799A CN115037789B CN 115037789 B CN115037789 B CN 115037789B CN 202210644799 A CN202210644799 A CN 202210644799A CN 115037789 B CN115037789 B CN 115037789B
Authority
CN
China
Prior art keywords
service
current limiting
target
rule
micro
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.)
Active
Application number
CN202210644799.2A
Other languages
English (en)
Other versions
CN115037789A (zh
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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202210644799.2A priority Critical patent/CN115037789B/zh
Publication of CN115037789A publication Critical patent/CN115037789A/zh
Application granted granted Critical
Publication of CN115037789B publication Critical patent/CN115037789B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/66Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本申请涉及一种限流方法、装置、设备、存储介质和程序产品。所述方法包括:在接收到针对微服务系统的服务调用请求后,通过获取服务调用请求中的用于指示服务调用请求所调用的目标服务的服务标识、用于指示目标服务所属的目标服务群组的服务群组标识以及用于指示目标服务群组所属的目标应用的应用标识,然后,根据获取到的标识信息在限流规则集合中查找服务调用请求触发的目标限流规则,如果查找到目标限流规则,则对服务调用请求进行限流处理。采用本方法能够同时从服务维度、服务群组维度和应用维度设置对应的限流规则,限流效果更好。

Description

限流方法、装置、设备、存储介质和程序产品
技术领域
本申请涉及云计算技术领域,特别是涉及一种限流方法、装置、设备、存储介质和程序产品。
背景技术
微服务领域,定义服务为一种可调用以及可复用的经过封装的软件资源。通过不同的微服务开发框架可以实现不同的服务。目前Dubbo是一种广泛使用的微服务框架。在Dubbo微服务框架中,调用协议(Dubbo协议)为私有TCP协议,因此无法通过通用的HTTP协议直接调用Dubbo微服务框架开发的服务。所以一般增加微服务网关作为HTTP协议和Dubbo协议的转换入口,通过微服务网关方便调用方通过HTTP协议调用微服务网关后端的服务。
其中,在微服务网关上,网关临界资源指微服务网关能支持的HTTP请求最大并发量,当调用单个服务的HTTP请求过多时,会挤占其他服务的调用量,还可能影响微服务网关的正常运行,因此,需要对微服务网关的服务调用请求进行限流处理。而现有的微服务网关限流效果较差。
发明内容
基于此,有必要针对上述技术问题,提供一种能够多维度限流的限流方法、装置、设备、存储介质和程序产品。
第一方面,本申请提供了一种限流方法。该方法应用于微服务系统对应的微服务网关中,微服务系统包括多个微服务,该方法包括:
在接收到针对微服务系统的服务调用请求后,获取服务调用请求中的标识信息,标识信息包括服务标识、服务群组标识以及应用标识,服务标识用于指示服务调用请求所调用的目标服务,服务群组标识用于指示目标服务所属的目标服务群组,应用标识用于指示目标服务群组所属的目标应用;根据标识信息在限流规则集合中查找服务调用请求触发的目标限流规则,其中,限流规则集合包括针对服务的服务限流规则、针对服务群组的群组限流规则以及针对应用的应用限流规则;若查找到目标限流规则,则对服务调用请求进行限流处理。
在其中一个实施例中,根据标识信息在限流规则集合中查找服务调用请求触发的目标限流规则,包括:根据服务标识、服务群组标识以及应用标识依次查询限流规则集合;在每次查询后,判断查询结果是否满足目标条件,若满足,则确定查询到目标限流规则,并停止继续查询,若不满足,则确定未查询到目标限流规则,且,在不为最后一次查询的情况下,继续进行查询。
在其中一个实施例中,判断查询结果是否满足目标条件,包括:在根据服务标识查询限流规则集合的情况下,判断是否查询到与服务标识匹配的目标服务限流规则,若查询到目标服务限流规则,则判断服务调用请求是否触发目标服务限流规则,若触发目标服务限流规则,则确定查询结果满足目标条件,若未查询到目标服务限流规则,或者,未触发目标服务限流规则,则确定查询结果不满足目标条件;在根据服务群组标识查询限流规则集合的情况下,判断是否查询到与服务群组标识匹配的目标群组限流规则,若查询到目标群组限流规则,则判断服务调用请求是否触发目标群组限流规则,若触发目标群组限流规则,则确定查询结果满足目标条件,若未查询到目标群组限流规则,或者,未触发目标群组限流规则,则确定查询结果不满足目标条件;在根据应用标识查询限流规则集合的情况下,判断是否查询到与应用标识匹配的目标应用限流规则,若查询到目标应用限流规则,则判断服务调用请求是否触发目标应用限流规则,若触发目标应用限流规则,则确定查询结果满足目标条件,若未查询到目标应用限流规则,或者,未触发目标应用限流规则,则确定查询结果不满足目标条件。
在其中一个实施例中,对服务调用请求进行限流处理,包括:禁止对服务调用请求进行响应。
在其中一个实施例中,根据标识信息在限流规则集合中查找服务调用请求触发的目标限流规则之前,方法还包括:接收配置中心推送的限流配置信息;对限流配置信息进行封装处理,得到限流规则;基于封装处理得到的限流规则构建限流规则集合。
在其中一个实施例中,方法还包括:对候选微服务在预设时间段内的失败率和最高并发数进行统计处理,候选微服务为微服务系统中的任一微服务;根据失败率和最高并发数对候选微服务对应的服务限流规则进行调整处理。
在其中一个实施例中,根据失败率和最高并发数对候选微服务对应的服务限流规则进行调整处理,包括:若失败率大于等于第一失败率阈值,则将候选微服务对应的服务限流规则中的限流阈值修改为第一值和最高并发数/n中的最大值;若失败率小于第一失败率阈值且候选微服务对应的服务限流规则中的限流阈值已根据失败率和最高并发数进行过调整处理,则将服务限流规则中的限流阈值设置为当前阈值*k和线程池容量*m中的最小值;其中,当前阈值为服务限流规则中配置的限流阈值,线程池容量为微服务网关能支持的服务调用请求的最大值。
第二方面,本申请还提供了一种限流装置。所述装置包括:
获取模块,用于在接收到针对微服务系统的服务调用请求后,获取服务调用请求中的标识信息,标识信息包括服务标识、服务群组标识以及应用标识,服务标识用于指示服务调用请求所调用的目标服务,服务群组标识用于指示目标服务所属的目标服务群组,应用标识用于指示目标服务群组所属的目标应用;
查找模块,用于根据标识信息在限流规则集合中查找服务调用请求触发的目标限流规则,其中,限流规则集合包括针对服务的服务限流规则、针对服务群组的群组限流规则以及针对应用的应用限流规则;
限流模块,用于若查找到目标限流规则,则对服务调用请求进行限流处理。
在其中一个实施例中,该查找模块,具体用于根据服务标识、服务群组标识以及应用标识依次查询限流规则集合;在每次查询后,判断查询结果是否满足目标条件,若满足,则确定查询到目标限流规则,并停止继续查询,若不满足,则确定未查询到目标限流规则,且,在不为最后一次查询的情况下,继续进行查询。
在其中一个实施例中,该查找模块,具体用于在根据服务标识查询限流规则集合的情况下,判断是否查询到与服务标识匹配的目标服务限流规则,若查询到目标服务限流规则,则判断服务调用请求是否触发目标服务限流规则,若触发目标服务限流规则,则确定查询结果满足目标条件,若未查询到目标服务限流规则,或者,未触发目标服务限流规则,则确定查询结果不满足目标条件;在根据服务群组标识查询限流规则集合的情况下,判断是否查询到与服务群组标识匹配的目标群组限流规则,若查询到目标群组限流规则,则判断服务调用请求是否触发目标群组限流规则,若触发目标群组限流规则,则确定查询结果满足目标条件,若未查询到目标群组限流规则,或者,未触发目标群组限流规则,则确定查询结果不满足目标条件;在根据应用标识查询限流规则集合的情况下,判断是否查询到与应用标识匹配的目标应用限流规则,若查询到目标应用限流规则,则判断服务调用请求是否触发目标应用限流规则,若触发目标应用限流规则,则确定查询结果满足目标条件,若未查询到目标应用限流规则,或者,未触发目标应用限流规则,则确定查询结果不满足目标条件。
在其中一个实施例中,该限流模块,具体用于禁止对服务调用请求进行响应。
在其中一个实施例中,该装置还包括接收模块、封装模块和构建模块;
该接收模块,用于接收配置中心推送的限流配置信息;
该封装模块,用于对限流配置信息进行封装处理,得到限流规则;
该构建模块,用于基于封装处理得到的限流规则构建限流规则集合。
在其中一个实施例中,该装置还包括统计模块和调整模块;
该统计模块,用于对候选微服务在预设时间段内的失败率和最高并发数进行统计处理,候选微服务为微服务系统中的任一微服务;
该调整模块,用于根据失败率和最高并发数对候选微服务对应的服务限流规则进行调整处理。
在其中一个实施例中,该调整模块,具体用于若失败率大于等于第一失败率阈值,则将候选微服务对应的服务限流规则中的限流阈值修改为第一值和最高并发数/n中的最大值;若失败率小于第一失败率阈值且候选微服务对应的服务限流规则中的限流阈值已根据失败率和最高并发数进行过调整处理,则将服务限流规则中的限流阈值设置为当前阈值*k和线程池容量*m中的最小值;其中,当前阈值为服务限流规则中配置的限流阈值,线程池容量为微服务网关能支持的服务调用请求的最大值。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,该计算机程序被该处理器执行时实现上述第一方面任一所述的限流方法。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述第一方面任一所述的限流方法。
第五方面,本申请还提供了一种计算机程序产品。计算机程序被处理器执行时实现如上述第一方面任一所述的限流方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
在本申请实施例提供的限流方法中,在接收到针对微服务系统的服务调用请求后,通过获取服务调用请求中的用于指示服务调用请求所调用的目标服务的服务标识、用于指示目标服务所属的目标服务群组的服务群组标识以及用于指示目标服务群组所属的目标应用的应用标识,然后,根据获取到的标识信息在限流规则集合中查找服务调用请求触发的目标限流规则,如果查找到目标限流规则,则对服务调用请求进行限流处理。通过这种方式,在接收到服务调用请求后,通过获取服务调用请求中的服务标识、服务群组标识以及应用标识,根据各标识在限流规则集合中查找服务调用请求触发的目标限流规则,如果查找到目标限流规则,则对服务调用请求限流,禁止调用服务,这样同时从服务维度、服务群组维度和应用维度设置对应的限流规则,避免了单个服务、服务群组或应用占用过多瞬时并发量而影响其他服务的调用,限流效果更好。
附图说明
图1为一个实施例中限流方法的应用环境图;
图2为一个实施例中限流方法的流程示意图;
图3为另一个实施例中限流方法的流程示意图;
图4为另一个实施例中限流方法查询示意图;
图5为另一个实施例中限流方法的流程示意图;
图6为另一个实施例中限流规则配置流程图;
图7为另一个实施例中限流方法的流程示意图;
图8为另一个实施例中限流规则配置自适应配置的流程图;
图9为另一个实施例中限流方法的流程示意图;
图10为另一个实施例中限流步骤的流程图;
图11为另一个实施例中限流装置的框图;
图12为另一个实施例中限流装置的框图;
图13为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
微服务领域,定义服务为一种可调用以及可复用的经过封装的软件资源。通过不同的微服务开发框架可以实现不同协议的服务实体。一般由于服务调用请求的协议与微服务框架的协议不一定匹配,因此需要在微服务实体外层添加前置网关,称为微服务网关,通过增加微服务网关作为转换入口,服务调用请求可以调用微服务网关后端的服务。例如,目前Dubbo是一种广泛使用的微服务框架。在Dubbo微服务框架中,调用协议(Dubbo协议)为私有TCP协议,因此无法通过通用的HTTP协议直接调用Dubbo微服务框架开发的服务。所以增加微服务网关作为HTTP协议和Dubbo协议的转换入口,通过微服务网关方便调用方通过HTTP协议调用Dubbo微服务。
其中,在微服务网关上,网关临界资源指微服务网关能支持的服务调用请求最大并发量,当调用单个服务的调用请求过多占用过多瞬时并发量时,会挤占其他服务的调用量,还可能影响微服务网关的正常运行。因此,需要对微服务网关的服务调用请求进行限流处理,而现有的微服务网关限流效果较差。
有鉴于此,本申请实施例提供了一种限流方法,通过同时从服务维度、服务群组维度和应用维度设置对应的限流规则,避免了单个服务、服务群组或应用占用过多瞬时并发量而影响其他服务的调用,限流效果更好。
本申请实施例提供的限流方法,可以应用于如图1所示的应用环境中。该应用环境包括终端10、微服务网关20以及服务器30。服务器30上部署有微服务系统。终端10与微服务网关20以及服务器30建立通信连接,其中,该通信连接可以是局域网、WiFi等,本申请实施例对此不作具体限定。
其中,终端10可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。微服务网关20可以由网关服务器来实现。服务器30可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种限流方法,以该方法应用于图1中的微服务网关20为例进行说明,包括以下步骤:
步骤201,微服务网关在接收到针对微服务系统的服务调用请求后,获取服务调用请求中的标识信息。
其中,微服务系统包括多个微服务,终端通过发送服务调用请求,服务调用请求通过微服务网关进行转换,可以调用微服务系统中的微服务。
多个服务组合成一个服务群组,多个服务群组组合成一个应用。标识信息包括服务标识、服务群组标识以及应用标识,服务标识用于指示服务调用请求所调用的目标服务,服务群组标识用于指示目标服务所属的目标服务群组,应用标识用于指示目标服务群组所属的目标应用。微服务网关在接收到服务调用请求后,将服务调用请求中的服务标识、服务群组标识以及应用标识进行解析。
步骤202,微服务网关根据标识信息在限流规则集合中查找服务调用请求触发的目标限流规则。
其中,限流规则集合包括针对服务的服务限流规则、针对服务群组的群组限流规则以及针对应用的应用限流规则。微服务网关根据上一步骤获取的服务标识、服务群组标识以及应用标识,在限流规则集合中查找服务调用请求是否触发了服务标识对应的服务限流规则、服务群组对应的群组限流规则以及应用标识对应的应用限流规则,如果是,则将触发的限流规则定义为目标限流规则。
步骤203,微服务网关若查找到目标限流规则,则对服务调用请求进行限流处理。
微服务网关若查找到目标限流规则,表示服务调用请求有触发限流,因此对服务调用请求进行限流处理。
上述限流方法,在接收到针对微服务系统的服务调用请求后,通过获取服务调用请求中的用于指示服务调用请求所调用的目标服务的服务标识、用于指示目标服务所属的目标服务群组的服务群组标识以及用于指示目标服务群组所属的目标应用的应用标识,然后,根据获取到的标识信息在限流规则集合中查找服务调用请求触发的目标限流规则,如果查找到目标限流规则,则对服务调用请求进行限流处理。通过这种方式,在接收到服务调用请求后,通过获取服务调用请求中的服务标识、服务群组标识以及应用标识,根据各标识在限流规则集合中查找服务调用请求触发的目标限流规则,如果查找到目标限流规则,则对服务调用请求限流,禁止调用服务,这样同时从服务维度、服务群组维度和应用维度设置对应的限流规则,避免了单个服务、服务群组或应用占用过多瞬时并发量而影响其他服务的调用,限流效果更好。
在本申请的实施例中,如图3所示,根据标识信息在限流规则集合中查找服务调用请求触发的目标限流规则,包括:
步骤301,微服务网关根据服务标识、服务群组标识以及应用标识依次查询限流规则集合。
微服务网关首先根据服务标识查询服务标识对应的服务限流规则,然后根据服务群组标识查询服务群组对应的群组限流规则,最后根据应用标识查询应用对应的应用限流规则。
步骤302,微服务网关在每次查询后,判断查询结果是否满足目标条件,若满足,则确定查询到目标限流规则,并停止继续查询,若不满足,则确定未查询到目标限流规则,且,在不为最后一次查询的情况下,继续进行查询。
其中,目标条件为标识满足对应的限流规则,例如针对服务标识,如果该服务的服务调用请求已超过了服务标识对应的服务规则设置的限流阈值,表示该服务满足目标条件,即停止继续查询。不满足目标条件,表示该服务的服务调用请求没有超过服务规则设置的限流阈值,或者并没有查询到该服务对应的服务限流规则,则继续进行查询,直到查询完应用标识。
在一个实施例中,判断查询结果是否满足目标条件有以下三种情况,包括:
第一种情况,在根据服务标识查询限流规则集合的情况下,判断是否查询到与服务标识匹配的目标服务限流规则,若查询到目标服务限流规则,则判断服务调用请求是否触发目标服务限流规则,若触发目标服务限流规则,则确定查询结果满足目标条件,若未查询到目标服务限流规则,或者,未触发目标服务限流规则,则确定查询结果不满足目标条件。
第二种情况,在根据服务群组标识查询限流规则集合的情况下,判断是否查询到与服务群组标识匹配的目标群组限流规则,若查询到目标群组限流规则,则判断服务调用请求是否触发目标群组限流规则,若触发目标群组限流规则,则确定查询结果满足目标条件,若未查询到目标群组限流规则,或者,未触发目标群组限流规则,则确定查询结果不满足目标条件。
第三种情况,在根据应用标识查询限流规则集合的情况下,判断是否查询到与应用标识匹配的目标应用限流规则,若查询到目标应用限流规则,则判断服务调用请求是否触发目标应用限流规则,若触发目标应用限流规则,则确定查询结果满足目标条件,若未查询到目标应用限流规则,或者,未触发目标应用限流规则,则确定查询结果不满足目标条件。
可选的,如图4所示,选择Sentinel流量控制组件来执行限流规则,服务级资源映射器将服务标识映射到服务级资源,然后在Sentinel服务维度资源限流器中进行查询,不满足限流条件则继续查询,群组级资源映射器将服务群组标识映射到服务群组级资源,并在Sentinel群组维度资源限流器中进行查询,不满足限流条件则继续进行查询,最后应用级资源映射器将应用标识映射到应用级资源,并在Sentinel应用维度资源限流器中进行查询,在查询完成后微服务网关开始处理请求。
本实施例中,通过依次查询服务限流规则、服务群组限流规则以及应用限流规则,微服务网关能够同时感知服务、服务群组以及应用维度的并发量,能达到更好的限流效果,提升微服务网关的性能。
在本申请的实施例中,对服务调用请求进行限流处理的操作包括禁止对服务调用请求进行响应。
在一个实施例中,微服务的限流规则设置方法有两种,其中一种为根据配置中心的配置信息配置,如图5所示,具体步骤包括:
步骤501,微服务网关接收配置中心推送的限流配置信息。
其中,用户可以在配置中心更新网关限流配置信息,配置中心将更新后的限流配置信息推送至微服务网关,微服务网关配置监听器接收配置中心推送的限流配置信息数据。
步骤502,微服务网关对限流配置信息进行封装处理,得到限流规则。
可选的,微服务网关在接收到限流配置信息后,首先对配置项的合法性进行检测,在检测到配置信息数据符合要求后,则读取限流配置信息中的数据,并将数据进行封装处理,组装成为限流规则。例如,可使用sentinel组件进行限流,将数据按sentinel规则进行组装。
步骤503,微服务网关基于封装处理得到的限流规则构建限流规则集合。
其中,限流规则包括基于服务的服务限流规则,基于服务群组的群组限流规则,以及基于应用的应用限流规则。服务限流规则定义为某服务单独配置限流阈值,例如A服务限流阈值为40,即当A服务的服务调用请求超过40时则对A服务进行限流。群组限流规则定义为该服务群组下所有服务共享限流阈值,例如服务群组B包括服务B1、服务B2以及服务B3,服务群组B的限流阈值为80,即当B服务群组下的所有服务B1、B2以及B3的服务调用请求之和超过80时则对B服务群组下的所有服务进行限流。应用限流规则定义为该应用下所有服务共享限流阈值,例如应用C包括服务C1、服务C2、服务C3以及服务C4,应用C的限流阈值为100,即当应用C下的所有服务C1、C2、C3以及C4的服务调用请求之和超过100时则对该应用C下的所有服务进行限流。
服务限流规则、群组限流规则以及应用限流规则组成限流规则集合。在sentinel规则管理器更新规则。具体的限流规则配置流程如图6所示。
在一个实施例中,微服务的限流规则配置的另一种方法为自适应阈值配置,如图7所示,具体步骤包括:
步骤701,微服务网关对候选微服务在预设时间段内的失败率和最高并发数进行统计处理。
其中,候选微服务为微服务系统中的任一微服务。在微服务网关运行过程中,由于后端服务提供方的不稳定,因此可能出现在一段时间内服务调用失败率较高的现象,此时需要微服务网关能具备自适应限流能力,逐步缩小对失败率较高服务的请求量,将资源向其他可用的服务倾斜。
可选的,微服务网关每隔60秒统计一次候选微服务服务的失败率和最高并发数。
步骤702,微服务网关根据失败率和最高并发数对候选微服务对应的服务限流规则进行调整处理。
可选的,对候选微服务对应的服务限流规则调整包括两种情况:
第一种情况,若候选微服务的失败率大于等于第一失败率阈值,则将候选微服务对应的服务限流规则中的限流阈值修改为第一值和最高并发数/n中的最大值。
其中第一失败率阈值可以是50%,第一值可以是1,n可以为2,当候选微服务的失败率大于等于50%时,触发自适应限流,即删除原本的限流规则,将服务限流规则中的限流阈值修改为1和最高并发数/2中的最大值。各阈值可以根据服务需求进行配置,本申请对此不做限定。
第二种情况,若候选微服务的失败率小于第一失败率阈值且候选微服务对应的服务限流规则中的限流阈值已根据失败率和最高并发数进行过调整处理,则将服务限流规则中的限流阈值设置为当前阈值*k和线程池容量*m中的最小值;其中,当前阈值为服务限流规则中配置的限流阈值,线程池容量为微服务网关能支持的服务调用请求的最大值。
其中,当候选微服务的失败率小于50%同时之前配置过自适应限流阈值,参数k可以为2,参数m可以为10%,将服务限流规则中的限流阈值设置为当前阈值*2和线程池容量*10%中的最小值。例如候选微服务的当前限流阈值为20,线程容量为300时,将候选微服务的限流阈值设置为20*2=40和300*10%=30中的最小值,即设置为30。参数k和m的值可以根据服务需求进行配置,本申请对此不做限定。具体流程如图8所示。
上述实施例中,通过统计服务的失败率以及最高并发数,自适应对服务进行限流,限流效率更高,更加智能。
在本申请的实施例中,请参考图9,其示出了本申请实施例提供的一种限流方法的流程图,该限流方法包括以下步骤:
步骤901,微服务网关接收配置中心推送的限流配置信息。
步骤902,微服务网关对限流配置信息进行封装处理,得到限流规则。
步骤903,微服务网关基于封装处理得到的限流规则构建限流规则集合。
步骤904,微服务网关在接收到针对微服务系统的服务调用请求后,获取服务调用请求中的标识信息。
步骤905,微服务网关根据服务标识、服务群组标识以及应用标识依次查询限流规则集合。
步骤906,微服务网关在每次查询后,判断查询结果是否满足目标条件,若满足,则确定查询到目标限流规则,并停止继续查询,若不满足,则确定未查询到目标限流规则,且,在不为最后一次查询的情况下,继续进行查询。
步骤907,微服务网关若查找到目标限流规则,则对服务调用请求进行限流处理。
为了方便读者理解本申请实施例提供的技术方案,下面以Http请求调用dubbo微服务为例对本方案的限流方法进行介绍。请参考图10,具体步骤如下:
(1)解析Http请求,解析Http请求中携带的服务标识、服务群组标识以及应用标识。
(2)组装成服务级资源名。
(3)如果配置了服务限流规则,则经过服务级限流器,如果发生限流,提前结束。若未配置服务级限流规则或者未被限流进入(4)。
(4)组装成服务群组级资源名。
(5)如果配置了服务群组限流规则,则经过服务群组级限流器。如果发生限流,提前结束。若未配置服务群组级限流规则或者未被限流进入(6)。
(6)组装成应用级资源名。
(7)如果配置了应用限流规则,则经过应用级限流器。如果发生限流,提前结束。若未配置应用级限流规则或者未被限流进入(8)。
(8)进行dubbo服务调用,完成后结束。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的限流方法的限流装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个限流装置实施例中的具体限定可以参见上文中对于限流方法的限定,在此不再赘述。
在一个实施例中,如图11所示,提供了一种限流装置1100,包括:获取模块1101、查找模块1102和限流模块1103。
其中,该获取模块1101,用于在接收到针对微服务系统的服务调用请求后,获取服务调用请求中的标识信息,标识信息包括服务标识、服务群组标识以及应用标识,服务标识用于指示服务调用请求所调用的目标服务,服务群组标识用于指示目标服务所属的目标服务群组,应用标识用于指示目标服务群组所属的目标应用;
该查找模块1102,用于根据标识信息在限流规则集合中查找服务调用请求触发的目标限流规则,其中,限流规则集合包括针对服务的服务限流规则、针对服务群组的群组限流规则以及针对应用的应用限流规则;
该限流模块1103,用于若查找到目标限流规则,则对服务调用请求进行限流处理。
在其中一个实施例中,该查找模块1102,具体用于根据服务标识、服务群组标识以及应用标识依次查询限流规则集合;在每次查询后,判断查询结果是否满足目标条件,若满足,则确定查询到目标限流规则,并停止继续查询,若不满足,则确定未查询到目标限流规则,且,在不为最后一次查询的情况下,继续进行查询。
在其中一个实施例中,该查找模块1102,具体用于在根据服务标识查询限流规则集合的情况下,判断是否查询到与服务标识匹配的目标服务限流规则,若查询到目标服务限流规则,则判断服务调用请求是否触发目标服务限流规则,若触发目标服务限流规则,则确定查询结果满足目标条件,若未查询到目标服务限流规则,或者,未触发目标服务限流规则,则确定查询结果不满足目标条件;在根据服务群组标识查询限流规则集合的情况下,判断是否查询到与服务群组标识匹配的目标群组限流规则,若查询到目标群组限流规则,则判断服务调用请求是否触发目标群组限流规则,若触发目标群组限流规则,则确定查询结果满足目标条件,若未查询到目标群组限流规则,或者,未触发目标群组限流规则,则确定查询结果不满足目标条件;在根据应用标识查询限流规则集合的情况下,判断是否查询到与应用标识匹配的目标应用限流规则,若查询到目标应用限流规则,则判断服务调用请求是否触发目标应用限流规则,若触发目标应用限流规则,则确定查询结果满足目标条件,若未查询到目标应用限流规则,或者,未触发目标应用限流规则,则确定查询结果不满足目标条件。
在其中一个实施例中,该限流模块1103,具体用于禁止对服务调用请求进行响应。
在其中一个实施例中,如图12所示,该装置还包括接收模块1201、封装模块1202和构建模块1203。
该接收模块1201,用于接收配置中心推送的限流配置信息;
该封装模块1202,用于对限流配置信息进行封装处理,得到限流规则;
该构建模块1203,用于基于封装处理得到的限流规则构建限流规则集合。
在其中一个实施例中,请继续参照图12,该装置还包括统计模块1204和调整模块1205。
该统计模块1204,用于对候选微服务在预设时间段内的失败率和最高并发数进行统计处理,候选微服务为微服务系统中的任一微服务;
该调整模块1205,用于根据失败率和最高并发数对候选微服务对应的服务限流规则进行调整处理。
在其中一个实施例中,该调整模块1205,具体用于若失败率大于等于第一失败率阈值,则将候选微服务对应的服务限流规则中的限流阈值修改为第一值和最高并发数/n中的最大值;若失败率小于第一失败率阈值且候选微服务对应的服务限流规则中的限流阈值已根据失败率和最高并发数进行过调整处理,则将服务限流规则中的限流阈值设置为当前阈值*k和线程池容量*m中的最小值;其中,当前阈值为服务限流规则中配置的限流阈值,线程池容量为微服务网关能支持的服务调用请求的最大值。
上述限流装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图13所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储限流规则数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种限流方法。
本领域技术人员可以理解,图13中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中所提供的限流方法。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各方法实施例中所提供的限流方法。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中所提供的限流方法。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (10)

1.一种限流方法,其特征在于,应用于微服务系统对应的微服务网关中,所述微服务系统包括多个微服务,所述方法包括:
在接收到针对所述微服务系统的服务调用请求后,获取所述服务调用请求中的标识信息,所述标识信息包括服务标识、服务群组标识以及应用标识,所述服务标识用于指示所述服务调用请求所调用的目标服务,所述服务群组标识用于指示所述目标服务所属的目标服务群组,所述应用标识用于指示所述目标服务群组所属的目标应用;
根据所述标识信息在限流规则集合中查找所述服务调用请求触发的目标限流规则,其中,所述限流规则集合包括针对服务的服务限流规则、针对服务群组的群组限流规则以及针对应用的应用限流规则;
若查找到所述目标限流规则,则对所述服务调用请求进行限流处理;
对候选微服务在预设时间段内的失败率和最高并发数进行统计处理,所述候选微服务为所述微服务系统中的任一微服务;
根据所述失败率和所述最高并发数对所述候选微服务对应的服务限流规则进行调整处理;
所述根据所述失败率和所述最高并发数对所述候选微服务对应的服务限流规则进行调整处理,包括:
若所述失败率大于等于第一失败率阈值,则将所述候选微服务对应的服务限流规则中的限流阈值修改为第一值和所述最高并发数/n中的最大值;
若所述失败率小于第一失败率阈值且所述候选微服务对应的服务限流规则中的限流阈值已根据所述失败率和所述最高并发数进行过调整处理,则将服务限流规则中的限流阈值设置为当前阈值*k和线程池容量*m中的最小值;其中,所述当前阈值为服务限流规则中配置的限流阈值,所述线程池容量为所述微服务网关能支持的所述服务调用请求的最大值,所述第一值、所述n、所述k以及所述m的值根据服务需求进行配置。
2.根据权利要求1所述的方法,其特征在于,所述根据所述标识信息在限流规则集合中查找所述服务调用请求触发的目标限流规则,包括:
根据所述服务标识、所述服务群组标识以及所述应用标识依次查询所述限流规则集合;
在每次查询后,判断查询结果是否满足目标条件,若满足,则确定查询到所述目标限流规则,并停止继续查询,若不满足,则确定未查询到所述目标限流规则,且,在不为最后一次查询的情况下,继续进行查询。
3.根据权利要求2所述的方法,其特征在于,所述判断查询结果是否满足目标条件,包括:
在根据所述服务标识查询所述限流规则集合的情况下,判断是否查询到与所述服务标识匹配的目标服务限流规则,若查询到所述目标服务限流规则,则判断所述服务调用请求是否触发所述目标服务限流规则,若触发所述目标服务限流规则,则确定查询结果满足所述目标条件,若未查询到所述目标服务限流规则,或者,未触发所述目标服务限流规则,则确定查询结果不满足所述目标条件;
在根据所述服务群组标识查询所述限流规则集合的情况下,判断是否查询到与所述服务群组标识匹配的目标群组限流规则,若查询到所述目标群组限流规则,则判断所述服务调用请求是否触发所述目标群组限流规则,若触发所述目标群组限流规则,则确定查询结果满足所述目标条件,若未查询到所述目标群组限流规则,或者,未触发所述目标群组限流规则,则确定查询结果不满足所述目标条件;
在根据所述应用标识查询所述限流规则集合的情况下,判断是否查询到与所述应用标识匹配的目标应用限流规则,若查询到所述目标应用限流规则,则判断所述服务调用请求是否触发所述目标应用限流规则,若触发所述目标应用限流规则,则确定查询结果满足所述目标条件,若未查询到所述目标应用限流规则,或者,未触发所述目标应用限流规则,则确定查询结果不满足所述目标条件。
4.根据权利要求1至3任一所述的方法,其特征在于,所述对所述服务调用请求进行限流处理,包括:
禁止对所述服务调用请求进行响应。
5.根据权利要求1所述的方法,其特征在于,所述根据所述标识信息在限流规则集合中查找所述服务调用请求触发的目标限流规则之前,所述方法还包括:
接收配置中心推送的限流配置信息;
对所述限流配置信息进行封装处理,得到限流规则;
基于封装处理得到的限流规则构建所述限流规则集合。
6.一种限流装置,其特征在于,应用于微服务系统对应的微服务网关中,所述微服务系统包括多个微服务,所述装置包括:
获取模块,用于在接收到针对所述微服务系统的服务调用请求后,获取所述服务调用请求中的标识信息,所述标识信息包括服务标识、服务群组标识以及应用标识,所述服务标识用于指示所述服务调用请求所调用的目标服务,所述服务群组标识用于指示所述目标服务所属的目标服务群组,所述应用标识用于指示所述目标服务群组所属的目标应用;
查找模块,用于根据所述标识信息在限流规则集合中查找所述服务调用请求触发的目标限流规则,其中,所述限流规则集合包括针对服务的服务限流规则、针对服务群组的群组限流规则以及针对应用的应用限流规则;
限流模块,用于若查找到所述目标限流规则,则对所述服务调用请求进行限流处理;
统计模块,用于对候选微服务在预设时间段内的失败率和最高并发数进行统计处理,所述候选微服务为所述微服务系统中的任一微服务;
调整模块,用于根据所述失败率和所述最高并发数对所述候选微服务对应的服务限流规则进行调整处理;
所述调整模块,具体用于若所述失败率大于等于第一失败率阈值,则将所述候选微服务对应的服务限流规则中的限流阈值修改为第一值和所述最高并发数/n中的最大值;若所述失败率小于第一失败率阈值且所述候选微服务对应的服务限流规则中的限流阈值已根据所述失败率和所述最高并发数进行过调整处理,则将服务限流规则中的限流阈值设置为当前阈值*k和线程池容量*m中的最小值;其中,所述当前阈值为服务限流规则中配置的限流阈值,所述线程池容量为所述微服务网关能支持的所述服务调用请求的最大值,所述第一值、所述n、所述k以及所述m的值根据服务需求进行配置。
7.根据权利要求6所述的装置,其特征在于,所述限流模块,具体用于禁止对所述服务调用请求进行响应。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
接收模块,用于接收配置中心推送的限流配置信息;
封装模块,用于对所述限流配置信息进行封装处理,得到限流规则;
构建模块,用于基于封装处理得到的限流规则构建所述限流规则集合。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
CN202210644799.2A 2022-06-09 2022-06-09 限流方法、装置、设备、存储介质和程序产品 Active CN115037789B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210644799.2A CN115037789B (zh) 2022-06-09 2022-06-09 限流方法、装置、设备、存储介质和程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210644799.2A CN115037789B (zh) 2022-06-09 2022-06-09 限流方法、装置、设备、存储介质和程序产品

Publications (2)

Publication Number Publication Date
CN115037789A CN115037789A (zh) 2022-09-09
CN115037789B true CN115037789B (zh) 2024-03-26

Family

ID=83122153

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210644799.2A Active CN115037789B (zh) 2022-06-09 2022-06-09 限流方法、装置、设备、存储介质和程序产品

Country Status (1)

Country Link
CN (1) CN115037789B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115514650B (zh) * 2022-09-21 2024-10-01 杭州网易再顾科技有限公司 限流场景下的带宽管理方法、装置、介质及电子设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109309666A (zh) * 2018-08-22 2019-02-05 中国平安财产保险股份有限公司 一种网络安全中的接口安全控制方法及终端设备
CN110996352A (zh) * 2019-12-20 2020-04-10 众安在线财产保险股份有限公司 一种流量控制方法、装置、计算机设备及存储介质
CN111371684A (zh) * 2020-03-02 2020-07-03 中国邮政储蓄银行股份有限公司 路由处理方法及装置、双活数据中心系统
CN111600930A (zh) * 2020-04-09 2020-08-28 网宿科技股份有限公司 微服务请求的流量管理方法、装置、服务器及存储介质
WO2020220739A1 (zh) * 2019-04-28 2020-11-05 华为技术有限公司 一种请求控制方法、相关设备及计算机存储介质
CN112181541A (zh) * 2020-09-29 2021-01-05 京东数字科技控股股份有限公司 一种数据处理方法、装置、电子设备及存储介质
CN114553784A (zh) * 2022-01-25 2022-05-27 阿里巴巴(中国)有限公司 限流处理方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109309666A (zh) * 2018-08-22 2019-02-05 中国平安财产保险股份有限公司 一种网络安全中的接口安全控制方法及终端设备
WO2020220739A1 (zh) * 2019-04-28 2020-11-05 华为技术有限公司 一种请求控制方法、相关设备及计算机存储介质
CN110996352A (zh) * 2019-12-20 2020-04-10 众安在线财产保险股份有限公司 一种流量控制方法、装置、计算机设备及存储介质
CN111371684A (zh) * 2020-03-02 2020-07-03 中国邮政储蓄银行股份有限公司 路由处理方法及装置、双活数据中心系统
CN111600930A (zh) * 2020-04-09 2020-08-28 网宿科技股份有限公司 微服务请求的流量管理方法、装置、服务器及存储介质
CN112181541A (zh) * 2020-09-29 2021-01-05 京东数字科技控股股份有限公司 一种数据处理方法、装置、电子设备及存储介质
CN114553784A (zh) * 2022-01-25 2022-05-27 阿里巴巴(中国)有限公司 限流处理方法及装置

Also Published As

Publication number Publication date
CN115037789A (zh) 2022-09-09

Similar Documents

Publication Publication Date Title
CN107229619B (zh) 互联网业务链路调用情况的统计、展示方法及装置
US11650990B2 (en) Method, medium, and system for joining data tables
CN115037789B (zh) 限流方法、装置、设备、存储介质和程序产品
US11621950B2 (en) Data processing methods, servers, client devices and media for security authentication
CN113703996B (zh) 基于用户和yang模型分组的访问控制方法、设备及介质
CN108920326B (zh) 确定系统耗时异常的方法、装置及电子设备
CN112583941B (zh) 一种支持接入多电力终端的方法、单元节点及电力物联网
US12026390B2 (en) Record information management based on self-describing attributes
CN109871260B (zh) 一种基于容器间共享内存的多维度服务限流方法及系统
CN115277570B (zh) 流量分配方法、装置、计算机设备和存储介质
CN116366724A (zh) 业务流程的处理方法、装置、计算机设备、存储介质
WO2021052289A1 (zh) 事件通知方法、系统、服务器设备、计算机存储介质
US11106488B2 (en) Blockchain read/write data processing method, apparatus, and server
CN115190177B (zh) 请求处理方法、装置、计算机设备、存储介质和程序产品
CN118427409B (zh) 基于规则匹配的业务请求处理方法、系统和电子装置
CN117992243B (zh) 用于中间件的负载均衡方法、装置和计算机设备
CN112364338B (zh) 一种微服务框架的管理方法、装置、电子装置和存储介质
CN114840125B (zh) 设备资源配置、管理方法、装置、设备、介质和程序产品
CN118301161A (zh) 数据服务的处理方法、装置、计算机设备和存储介质
CN117172839A (zh) 资源数据处理方法、装置、计算机设备和存储介质
CN117041161A (zh) 业务请求处理方法、装置、计算机设备和存储介质
CN116112442A (zh) 请求响应方法、装置、计算机设备、存储介质和程序产品
CN117714465A (zh) 通信网络节点的动态构建方法及系统
CN114185949A (zh) 信息登记方法、装置、计算机设备、存储介质和程序产品
CN116862489A (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
GR01 Patent grant
GR01 Patent grant