CN110996352B - 一种流量控制方法、装置、计算机设备及存储介质 - Google Patents
一种流量控制方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN110996352B CN110996352B CN201911328945.5A CN201911328945A CN110996352B CN 110996352 B CN110996352 B CN 110996352B CN 201911328945 A CN201911328945 A CN 201911328945A CN 110996352 B CN110996352 B CN 110996352B
- Authority
- CN
- China
- Prior art keywords
- service
- flow control
- control threshold
- threshold
- utilization rate
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000006731 degradation reaction Methods 0.000 claims description 16
- 238000004422 calculation algorithm Methods 0.000 claims description 15
- 230000015556 catabolic process Effects 0.000 claims description 15
- 230000008569 process Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 10
- 238000004883 computer application Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005111 flow chemistry technique Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W28/00—Network traffic management; Network resource management
- H04W28/02—Traffic management, e.g. flow control or congestion control
- H04W28/10—Flow control between communication endpoints
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W28/00—Network traffic management; Network resource management
- H04W28/02—Traffic management, e.g. flow control or congestion control
- H04W28/0215—Traffic management, e.g. flow control or congestion control based on user or device properties, e.g. MTC-capable devices
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- Data Exchanges In Wide-Area Networks (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开一种流量控制方法、装置、计算机设备及存储介质,属于计算机应用技术领域,方法包括:周期性地采集应用程序的每一个服务的多个运行资源参数;根据各服务当前的多个运行资源参数和各服务的预设最大限流阈值,对各服务的流控阈值进行调整,获得各服务的最新流控阈值;基于各服务的最新流控阈值,对各服务进行流量控制,输出对比结果。本发明实施例通过基于各服务的多个运行资源参数,动态地调整各服务的流控阈值,不但保证各服务能够平稳地进行业务处理,而且避免服务处理能力较差的服务超负荷运行而导致服务不可用的风险,从而保证系统的可用性。
Description
技术领域
本发明涉及计算机应用技术领域,尤其涉及一种流量控制方法、装置、计算机设备及存储介质。
背景技术
在微服务架构模式下,一个复杂的业务系统在实现时通常会拆成多个独立的服务,每个独立的服务各自负责某一项或某一领域的业务功能。在业务系统提供多个服务的过程中,为了保护业务系统,需要对各个服务进行流量控制,以避免系统宕机,达到保护系统的目的。
现有技术中,通常对各个服务通过配置固定的流控阈值进行流量控制,然而,在实际应用中,由于各个服务的自身业务逻辑的复杂程度和服务运行环境的不同,服务自身的处理能力不尽相同,这样通常会导致服务处理能力较差的服务超负荷运行而导致服务不可用的风险,从而就无法保证系统的可用性。
发明内容
为了解决上述背景技术中提到的至少一个问题,本发明提供了一种流量控制方法、装置、计算机设备及存储介质。
本发明实施例提供的具体技术方案如下:
第一方面,提供了一种流量控制方法,所述方法包括:
周期性地采集应用程序的每一个服务的多个运行资源参数;
根据各所述服务的多个运行资源参数和各所述服务的预设最大限流阈值,对各所述服务的流控阈值进行调整,获得各所述服务的最新流控阈值;
基于各所述服务的最新流控阈值,对各所述服务进行流量控制。
进一步地,所述多个运行资源参数包括系统资源参数和应用资源参数;
其中,一个服务的系统应用资源参数包括该服务所在服务器的内存使用率、CPU使用率中的至少一种,所述应用资源参数包括JVM堆内存大小、线程池资源使用率、服务响应时间中的至少一种。
进一步地,所述根据各所述服务的多个运行资源参数和各所述服务的预设最大限流阈值,对各所述服务的流控阈值进行调整,获得各所述服务的最新流控阈值,包括:
从各所述服务的多个运行资源参数中确定各所述服务所在服务器的内存使用率和CPU使用率;
确定各所述服务的服务类型,其中,所述服务的服务类型用于指示所述服务是计算密集型服务还是IO密集型服务;
基于各所述服务所在服务器的内存使用率、CPU使用率和各所述服务的预设最大限流阈值,按照各所述服务的服务类型分别对应的预设计算算法,对各所述服务的流控阈值进行调整,获得各所述服务的最新流控阈值。
进一步地,所述基于各所述服务的最新流控阈值,对各所述服务进行流量控制,包括:
基于各所述服务的最新流控阈值,采用令牌桶算法配置各所述服务的预设令牌桶中令牌的数量;
当接收到针对任一所述服务的服务请求时,拦截所述服务请求;
判断是否从所述服务的预设令牌桶中成功获取所述服务请求所需的令牌;
若获取成功,则调用所述服务对所述服务请求进行处理。
进一步地,所述方法还包括:
若获取失败,判断是否为所述服务预先设置对应的降级处理规则;
若是,则根据所述服务的降级处理规则对所述服务请求进行降级处理;
若否,则禁止该服务接收所述服务请求。
第二方面,提供了一种流量控制装置,所述装置包括:
流控参数采集模块,用于周期性地采集应用程序的每一个服务的多个运行资源参数;
流控阈值管理模块,用于根据各所述服务的多个运行资源参数和各所述服务的预设最大限流阈值,对各所述服务的流控阈值进行调整,获得各所述服务的最新流控阈值;
流量控制处理模块,用于基于各所述服务的最新流控阈值,对各所述服务进行流量控制。
进一步地,所述多个运行资源参数包括系统资源参数和应用资源参数;
其中,一个服务的系统应用资源参数包括该服务所在服务器的内存使用率、CPU使用率中的至少一种,所述应用资源参数包括JVM堆内存大小、线程池资源使用率、服务响应时间中的至少一种。
进一步地,所述流控阈值管理模块具体用于:
从各所述服务的多个运行资源参数中确定各所述服务的内存使用率和CPU使用率;
确定各所述服务的服务类型,其中,所述服务的服务类型用于指示所述服务是计算密集型服务还是IO密集型服务;
基于各所述服务的内存使用率、CPU使用率和各所述服务的预设最大限流阈值,按照各所述服务的服务类型分别对应的预设计算算法,对各所述服务的流控阈值进行调整,获得各所述服务的最新流控阈值。
进一步地,所述流量控制处理模块具体用于:
基于各所述服务的最新流控阈值,采用令牌桶算法配置各所述服务的预设令牌桶中令牌的数量;
当接收到针对任一所述服务的服务请求时,拦截所述服务请求;
判断是否从所述服务的预设令牌桶中成功获取所述服务请求所需的令牌;
若获取成功,则调用所述服务对所述服务请求进行处理。
进一步地,所述流量控制处理模块具体还用于:
若获取失败,判断是否为所述服务预先设置对应的降级处理规则;
若是,则根据所述服务的降级处理规则对所述服务请求进行降级处理;
若否,则禁止该服务接收所述服务请求。
第三方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面的所述流量控制方法的步骤。
第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的流量控制方法的步骤。
本发明实施例提供的技术方案,通过周期性地采集应用程序的每一个服务的多个运行资源参数;根据各服务的多个运行资源参数和各服务的预设最大限流阈值,对各服务的流控阈值进行调整获得各服务的最新流控阈值;基于各服务的最新流控阈值,对各服务进行流量控制;如此,通过基于各服务的多个运行资源参数,动态地调整各服务的流控阈值,不但保证各服务能够平稳地进行业务处理,而且避免服务处理能力较差的服务超负荷运行而导致服务不可用的风险,从而保证系统的可用性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种流量控制方法的流程示意图;
图2为图1所示方法中步骤S102的具体流程图;;
图3为图1所示方法中步骤S103的具体流程图;;
图4为本发明实施例提供的一种流量控制装置的结构示意图;
图5为本发明实施例提供的计算机设备的内部结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在业务系统提供多个服务的过程中,为了保护业务系统,需要对各个服务进行流量控制,以避免系统宕机,达到保护系统的目的。现有技术中,通常对各个服务通过配置固定的流控阈值进行流量控制,然而,在实际应用中,由于各个服务的自身业务逻辑的复杂程度和服务运行环境的不同,服务自身的处理能力不尽相同,这样通常会导致服务处理能力较差的服务超负荷运行而导致服务不可用的风险,从而就无法保证系统的可用性。为此,本发明实施例提供一种流量控制方法,该方法通过周期性地采集应用程序的每一个服务的多个运行资源参数,并根据各服务的多个运行资源参数和各服务的预设最大限流阈值,对各服务的流控阈值进行调整,以及基于各服务的流控阈值,对各服务进行流量控制,这样能够避免导致服务处理能力较差的服务超负荷运行而导致服务不可用的风险,从而达到流量控制的目的,保证系统可用性,本发明实施例提供的流量控制方法可以应用于基于微服务架构设计的业务系统中。
在一个实施例中,提供了一种流量控制方法,该方法可以由流量控制装置作为执行主体,其中,流量控制装置包括流控参数采集模块、流控阈值管理模块和流量控制处理模块,参考图1所示,该方法可以包括:
步骤S101,周期性地采集应用程序的每一个服务的多个运行资源参数。
其中,应用程序提供一个或多个服务,每个服务对应应用程序中相对独立的功能模块,这里,一个服务的多个运行资源参数包括系统资源参数和应用资源参数,具体来说,一个服务的系统应用资源参数包括该服务所在服务器的内存使用率、CPU使用率中的至少一种,一个服务的应用资源参数包括JVM堆内存大小、线程池资源使用率、服务响应时间中的至少一种。
具体地,在应用程序启动时,创建一个独立的采集线程作为流控参数采集模块,通过该采集线程周期性地采集应用程序的各服务的多个运行资源参数,并上报到流控阈值管理模块中。其中,可以通过java语言提供的API及基于拦截器等方式把采集到的运行资源参数通过基于http的Restful api方式上报给流控阈值管理模块,其中,上报的数据格式描述如下表1所示。
表1:
本实施例中,可以通过Java MxBean接口提供的方法进行采集CPU使用率、内存使用率、JVM内存信息,具体来说,通过OperatingSystemMXBean采集CPU使用率,MemoryMXBean采集内存使用率、JVM内存信息);可以通过ThreadPoolExecutor类提供的方法获取线程池资源使用率信息;可以通过拦截器(如servlet的filter机制)进行服务响应时间的统计。
另外,考虑到指标采集的过程本身比较轻量,通常不会出现异常情况,如特殊情况下出现异常,则忽略该次运行资源参数的采集。
步骤S102,根据各服务的多个运行资源参数和各服务的预设最大限流阈值,对各服务的流控阈值进行调整,获得各服务的最新流控阈值。
其中,一个服务的预设最大限流阈值可以通过对该服务进行压力测试而获取得到,不同服务的预设最大限流阈值可以不同。一个服务的预设最大限流阈值用于限制该服务在单位时间内允许接收的访问请求数量。
具体地,流控阈值管理模块可以根据各个服务的预设最大限流阈值对应用程序包含的各个服务进行流控阈值的初始化配置,在接收到流控参数采集模块上报的各个服务的多个运行资源参数后,通过预先配置的计算规则对各服务的流控阈值进行调整,并生成对应的流控阈值变更消息。
其中,系统吞吐量有几个重要参数:并发数、TPS、平均响应时间,且这三者间存在如下关系:TPS=并发数/平均响应时间;当平均响应时间增加时,往往意味着系统资源、应用资源负荷增高,从而导致系统吞吐量下降。为了降低系统及应用资源超负荷运行引发服务宕机的风险,所以当平均响应时间增加时,需要降低对系统的并发访问数。鉴于每个业务系统的业务复杂性的不同,所以计算并发数的逻辑需要根据不同的业务场景进行个性化配置。
在一个具体实施方式中,如图2所示,上述步骤S102的实现过程可以包括:
步骤S201,从各服务的多个运行资源参数中确定各服务所在服务器的内存使用率和CPU使用率。
步骤S202,确定各服务的服务类型,其中,服务的服务类型用于指示服务是计算密集型服务还是IO密集型服务。
步骤S203,基于各服务所在服务器的内存使用率、CPU使用率和各服务的预设最大限流阈值,按照各服务的服务类型分别对应的预设计算算法,对各服务的流控阈值进行调整,获得各服务的最新流控阈值。
具体地,当服务是计算密集型服务时,对应的预设计算算法如下:
最新流控阈值=预设最大限流阈值*((1-CPU使用率)*a+(1-内存使用率*b));
其中,a大于0.5且小于1,b大于0且小于0.5。优选地,a为0.8,b为0.2。
当服务是IO密集型服务时,对应的预设计算算法如下:
最新流控阈值=预设最大限流阈值*((1-CPU使用率)*c+(1-内存使用率*d));
其中,c大于0且小于0.5,d大于0.5且小于1。优选地,c为0.2,d为0.8。
需要说明的是,步骤S102的实现过程除了上述方式之外,还可以通过其他方式实现该过程,例如,预先建立各个服务的运行资源参数的数值与限流值之间的对应关系,以内存使用率作为运行资源参数为例说明,当某个服务的内存使用率达到一预设值时,以与该预设值对应的限流值作为该服务的最新流控阈值。本发明实施例对具体的方式不加以限定。
步骤S103,基于各服务的最新流控阈值,对各服务进行流量控制。
具体地,当流控阈值管理模块对应用程序的任一服务的流控阈值进行调整后,会通知到流量控制处理模块,流量控制处理模块接收到该服务最新的流控阈值后,基于令牌桶算法实现限流器的初始化;当接收到针对应用程序的某个服务的服务请求时,该服务请求会经过拦截器的处理,拦截器通过限流器获取令牌,当获取令牌失败时拦截掉该服务请求,并返回错误信息,从而实现流量动态调整的目的。在实际应用中,基于Java Servlet技术实现的Restful接口支持过滤器机制,在应用程序启动时会在Java Servlet的过滤器链中加入流量处理的拦截器,拦截器实现标准的javax.servlet.Filter接口,并添加到过滤器链的首位。拦截器进行初始化时从流控阈值管理模块获取该服务的流控阈值并初始化限流器,同时向流控阈值管理模块注册阈值变更的监听器,以监听流控阈值管理模块是否对应用程序的任一服务的流控阈值进行调整。
在一个具体实施方式中,如图3所示,上述步骤S103的实现过程可以包括:
步骤S301,基于各服务的最新流控阈值,采用令牌桶算法配置各服务的预设令牌桶中令牌的数量。
其中,不同服务具有不同的预设令牌桶,基于各服务的最新流控阈值配置各服务的预设令牌桶内装有的令牌(token)数量,当接收到任一服务访问请求时,会检查下对应的令牌桶中是否包含足够多的令牌(一个请求可能需要多个令牌),再从该令牌桶中消费令牌,若令牌数量足够,则消费掉桶中的令牌。
步骤S302,当接收到针对任一服务的服务请求时,拦截服务请求。
具体地,以拦截器的方式拦截该服务请求。
步骤S303,判断是否从该服务的预设令牌桶中成功获取服务请求所需的令牌,若获取成功,则执行步骤S304,若获取失败,则执行步骤S305。
步骤S304,调用该服务对服务请求进行处理。
步骤S305,判断是否为该服务预先设置对应的降级处理规则,若是,则执行步骤S306,若否,则执行步骤S307。
步骤S306,根据该服务的降级处理规则对服务请求进行降级处理。
其中,降级处理包括延迟处理或者部分拒绝处理。
步骤S307,禁止该服务接收服务请求。
具体地,在禁止该服务接收服务请求后,返回限流拦截信息。
综上,本发明实施例提供的流量控制方法,通过周期性地采集应用程序的每一个服务的多个运行资源参数;根据各服务的多个运行资源参数和各服务的预设最大限流阈值,对各服务的流控阈值进行调整获得各服务的最新流控阈值;基于各服务的最新流控阈值,对各服务进行流量控制;如此,通过基于各服务的多个运行资源参数,动态地调整各服务的流控阈值,不但保证各服务能够平稳地进行业务处理,而且避免服务处理能力较差的服务超负荷运行而导致服务不可用的风险,从而保证系统的可用性。
在一个实施例中,提供了一种流量控制装置,如图4所示,该流量控制装置可以包括:
流控参数采集模块41,用于周期性地采集应用程序的每一个服务的多个运行资源参数;
流控阈值管理模块42,用于根据各服务的多个运行资源参数和各服务的预设最大限流阈值,对各服务的流控阈值进行调整,获得各所述服务的最新流控阈值;
流量控制处理模块43,用于基于各服务的最新流控阈值,对各服务进行流量控制。
进一步地,多个运行资源参数包括系统资源参数和应用资源参数;
其中,一个服务的系统应用资源参数包括该服务所在服务器的内存使用率、CPU使用率中的至少一种,应用资源参数包括JVM堆内存大小、线程池资源使用率、服务响应时间中的至少一种。
进一步地,流控阈值管理模块42具体用于:
从各服务的多个运行资源参数中确定各服务的内存使用率和CPU使用率;
确定各服务的服务类型,其中,服务的服务类型用于指示服务是计算密集型服务还是IO密集型服务;
基于各服务的内存使用率、CPU使用率和各服务的预设最大限流阈值,按照各服务的服务类型分别对应的预设计算算法,对各服务的流控阈值进行调整。
进一步地,流量控制处理模块43具体用于:
基于各服务的流控阈值,采用令牌桶算法配置各服务的预设令牌桶中令牌的数量;
当接收到针对任一服务的服务请求时,拦截服务请求;
判断是否从该服务的预设令牌桶中成功获取服务请求所需的令牌;
若获取成功,则调用该服务对服务请求进行处理。
进一步地,流量控制处理模块43具体还用于:
若获取失败,判断是否为该服务预先设置对应的降级处理规则;
若是,则根据该服务的降级处理规则对服务请求进行降级处理;
若否,则禁止该服务接收服务请求。
需要说明的是:本实施例提供的流量控制装置中,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,本实施例的流量控制装置与上述实施例中的流量控制方法实施例属于同一构思,其具体实现过程和有益效果详见流量控制方法实施例,这里不再赘述。
图5为本发明实施例提供的计算机设备的内部结构图。该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种流量控制方法。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
周期性地采集应用程序的每一个服务的多个运行资源参数;
根据各服务的多个运行资源参数和各服务的预设最大限流阈值,对各服务的流控阈值进行调整,获得各服务的最新流控阈值;
基于各服务的最新流控阈值,对各服务进行流量控制。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
周期性地采集应用程序的每一个服务的多个运行资源参数;
根据各服务的多个运行资源参数和各服务的预设最大限流阈值,对各服务的流控阈值进行调整,获得各服务的最新流控阈值;
基于各服务的最新流控阈值,对各服务进行流量控制。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (8)
1.一种流量控制方法,其特征在于,所述方法包括:
周期性地采集应用程序的每一个服务的多个运行资源参数;
根据各所述服务的多个运行资源参数和各所述服务的预设最大限流阈值,对各所述服务的流控阈值进行调整,获得各所述服务的最新流控阈值;
基于各所述服务的最新流控阈值,对各所述服务进行流量控制;
允许不同所述服务的预设最大限流阈值不同;
所述根据各所述服务的多个运行资源参数和各所述服务的预设最大限流阈值,对各所述服务的流控阈值进行调整,获得各所述服务的最新流控阈值,包括:
从各所述服务当前的多个运行资源参数中确定各所述服务所在服务器的内存使用率和CPU使用率;
确定各所述服务的服务类型,其中,所述服务的服务类型用于指示所述服务是计算密集型服务还是IO密集型服务;
基于各所述服务所在服务器的内存使用率、CPU使用率和各所述服务的预设最大限流阈值,按照各所述服务的服务类型分别对应的预设计算算法,对各所述服务的流控阈值进行调整,获得各所述服务的最新流控阈值。
2.根据权利要求1所述的方法,其特征在于,所述多个运行资源参数包括系统资源参数和应用资源参数;
其中,一个服务的系统应用资源参数包括该服务所在服务器的内存使用率、CPU使用率中,所述应用资源参数包括JVM堆内存大小、线程池资源使用率、服务响应时间中的至少一种。
3.根据权利要求1至2任一所述的方法,其特征在于,所述基于各所述服务的最新流控阈值,对各所述服务进行流量控制,包括:
基于各所述服务的最新流控阈值,采用令牌桶算法配置各所述服务的预设令牌桶中令牌的数量;
当接收到针对任一所述服务的服务请求时,拦截所述服务请求;
判断是否从所述服务的预设令牌桶中成功获取所述服务请求所需的令牌;
若获取成功,则调用所述服务对所述服务请求进行处理。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若获取失败,判断是否为所述服务预先设置对应的降级处理规则;
若是,则根据所述服务的降级处理规则对所述服务请求进行降级处理;
若否,则禁止该服务接收所述服务请求。
5.一种流量控制装置,其特征在于,所述装置包括:
流控参数采集模块,用于周期性地采集应用程序的每一个服务的多个运行资源参数;
流控阈值管理模块,用于根据各所述服务的多个运行资源参数和各所述服务的预设最大限流阈值,对各所述服务的流控阈值进行调整,获得各所述服务的最新流控阈值;
流量控制处理模块,用于基于各所述服务的最新流控阈值,对各所述服务进行流量控制;
允许不同所述服务的预设最大限流阈值不同;
所述流控阈值管理模块具体用于:
从各所述服务的多个运行资源参数中确定各所述服务的内存使用率和CPU使用率;
确定各所述服务的服务类型,其中,所述服务的服务类型用于指示所述服务是计算密集型服务还是IO密集型服务;
基于各所述服务的内存使用率、CPU使用率和各所述服务的预设最大限流阈值,按照各所述服务的服务类型分别对应的预设计算算法,对各所述服务的流控阈值进行调整,获得各所述服务的最新流控阈值。
6.根据权利要求5所述的装置,其特征在于,所述流量控制处理模块具体用于:
基于各所述服务的最新流控阈值,采用令牌桶算法配置各所述服务的预设令牌桶中令牌的数量;
当接收到针对任一所述服务的服务请求时,拦截所述服务请求;
判断是否从所述服务的预设令牌桶中成功获取所述服务请求所需的令牌;
若获取成功,则调用所述服务对所述服务请求进行处理。
7.一种计算机设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至4任一所述流量控制方法的步骤。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4任一所述流量控制方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911328945.5A CN110996352B (zh) | 2019-12-20 | 2019-12-20 | 一种流量控制方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911328945.5A CN110996352B (zh) | 2019-12-20 | 2019-12-20 | 一种流量控制方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110996352A CN110996352A (zh) | 2020-04-10 |
CN110996352B true CN110996352B (zh) | 2023-12-26 |
Family
ID=70074401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911328945.5A Active CN110996352B (zh) | 2019-12-20 | 2019-12-20 | 一种流量控制方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110996352B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111767142B (zh) * | 2020-06-23 | 2023-08-08 | 中国工商银行股份有限公司 | 服务节点的限流阈值设置方法和服务端设备 |
CN111913815A (zh) * | 2020-07-12 | 2020-11-10 | 中信银行股份有限公司 | 调用请求的处理方法、装置、电子设备及可读存储介质 |
CN114124757A (zh) * | 2020-08-11 | 2022-03-01 | 财付通支付科技有限公司 | 参数调整方法、装置、相关设备及存储介质 |
CN111930507B (zh) * | 2020-08-14 | 2023-09-08 | 中国工商银行股份有限公司 | 限流方法及装置 |
CN112579396A (zh) * | 2020-12-25 | 2021-03-30 | 上海安畅网络科技股份有限公司 | 软件系统动态限流方法、装置及设备 |
CN112804216B (zh) * | 2020-12-31 | 2023-02-24 | 中国工商银行股份有限公司 | 一种多粒度自适应服务流量接入控制方法及装置 |
CN113760989A (zh) * | 2021-02-04 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种无界流数据处理方法、装置、设备及存储介质 |
CN113220723B (zh) * | 2021-04-27 | 2024-08-02 | 深圳市云网万店科技有限公司 | 一种流量控制方法、装置、计算机设备及存储介质 |
CN113765821A (zh) * | 2021-09-09 | 2021-12-07 | 南京优飞保科信息技术有限公司 | 一种多维度访问流量控制系统 |
CN114969112A (zh) * | 2021-09-29 | 2022-08-30 | 中移互联网有限公司 | 一种针对分布式缓存系统的流控方法、装置及电子设备 |
CN114039893A (zh) * | 2021-11-08 | 2022-02-11 | 航天信息股份有限公司 | 一种api网关限速方法及装置 |
CN114221910B (zh) * | 2021-11-19 | 2023-04-14 | 广州市玄武无线科技股份有限公司 | 一种传输通道的数据控制方法及装置 |
CN114443162B (zh) * | 2022-01-05 | 2023-05-23 | 福建天泉教育科技有限公司 | 一种云原生微服务流控的方法与服务端 |
CN114500381A (zh) * | 2022-01-20 | 2022-05-13 | 北京奇艺世纪科技有限公司 | 网络带宽限制方法、系统、电子设备及可读存储介质 |
CN114116235A (zh) * | 2022-01-26 | 2022-03-01 | 杭州米络星科技(集团)有限公司 | 流量控制方法、装置、电子设备及计算机可读存储介质 |
CN114553775B (zh) * | 2022-02-15 | 2024-04-26 | 维沃移动通信有限公司 | 流量控制方法、装置 |
CN114726791A (zh) * | 2022-03-18 | 2022-07-08 | 中国建设银行股份有限公司 | 流控阈值的确定方法、装置、电子设备及计算机存储介质 |
CN114827033B (zh) * | 2022-04-15 | 2024-04-19 | 咪咕文化科技有限公司 | 数据流控方法、装置、设备与计算机可读存储介质 |
CN115037789B (zh) * | 2022-06-09 | 2024-03-26 | 中国工商银行股份有限公司 | 限流方法、装置、设备、存储介质和程序产品 |
CN117459458A (zh) * | 2023-10-11 | 2024-01-26 | 宁波尚闻科技(集团)有限公司 | 一种基于云服务的流量控制方法、系统及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107547433A (zh) * | 2017-07-03 | 2018-01-05 | 阿里巴巴集团控股有限公司 | 基于令牌漏桶进行限流的方法、装置和设备 |
CN109005125A (zh) * | 2018-08-24 | 2018-12-14 | 阿里巴巴集团控股有限公司 | 动态限流方法、装置及系统 |
CN109246026A (zh) * | 2018-08-13 | 2019-01-18 | 中国平安人寿保险股份有限公司 | 流量管控方法、装置、设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8706902B2 (en) * | 2011-02-22 | 2014-04-22 | Cisco Technology, Inc. | Feedback-based internet traffic regulation for multi-service gateways |
CN107222426B (zh) * | 2016-03-21 | 2021-07-20 | 阿里巴巴集团控股有限公司 | 控流的方法、装置及系统 |
-
2019
- 2019-12-20 CN CN201911328945.5A patent/CN110996352B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107547433A (zh) * | 2017-07-03 | 2018-01-05 | 阿里巴巴集团控股有限公司 | 基于令牌漏桶进行限流的方法、装置和设备 |
CN109246026A (zh) * | 2018-08-13 | 2019-01-18 | 中国平安人寿保险股份有限公司 | 流量管控方法、装置、设备及存储介质 |
CN109005125A (zh) * | 2018-08-24 | 2018-12-14 | 阿里巴巴集团控股有限公司 | 动态限流方法、装置及系统 |
Non-Patent Citations (1)
Title |
---|
"基于令牌桶算法的流量控制服务的设计与实现";仲思惠;《中国优秀硕士学位论文全文数据库 (基础科学辑)》;20170315;第1-11页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110996352A (zh) | 2020-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110996352B (zh) | 一种流量控制方法、装置、计算机设备及存储介质 | |
CN110351357B (zh) | 服务器限流方法、装置、计算机设备以及存储介质 | |
CN109787908B (zh) | 服务器限流方法、系统、计算机设备及存储介质 | |
CN108848037B (zh) | 业务请求处理方法、装置、计算机设备和存储介质 | |
CN110597858A (zh) | 任务数据处理方法、装置、计算机设备和存储介质 | |
CN111198759B (zh) | 一种内存优化方法、系统、终端设备及可读存储介质 | |
CN111104208B (zh) | 进程调度管理方法、装置、计算机设备及存储介质 | |
CN111309644B (zh) | 一种内存分配方法、装置和计算机可读存储介质 | |
CN110362402B (zh) | 一种负载均衡方法、装置、设备及可读存储介质 | |
CN111817974A (zh) | 基于令牌桶的接口限流方法、装置、系统及可读存储介质 | |
CN112422610B (zh) | 一种基于分布式对象存储的智能网关方法和系统 | |
CN111209110A (zh) | 一种实现负载均衡的任务调度管理方法、系统和存储介质 | |
US20180309686A1 (en) | Reducing rate limits of rate limiters | |
CN110661815A (zh) | 基于频率限制微服务的请求处理方法、装置、系统及介质 | |
US11438271B2 (en) | Method, electronic device and computer program product of load balancing | |
CN110838987B (zh) | 队列限流方法、存储介质 | |
CN111338803B (zh) | 一种线程处理方法和装置 | |
CN111538585A (zh) | 一种基于node.js的服务器进程调度方法、系统和装置 | |
US9274921B2 (en) | System and method for managing code displacement | |
US11303546B2 (en) | Service system and control method of the same | |
CN107040566A (zh) | 业务处理方法及装置 | |
CN112671945A (zh) | 管理ip代理池的方法、装置、计算机设备及存储介质 | |
CN110049350B (zh) | 视频转码处理方法、装置、计算机设备和存储介质 | |
CN114422530A (zh) | 流量控制方法、装置和计算机设备和存储介质 | |
CN114374657B (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 |