CN111367651A - 服务限流系统、方法、装置及电子设备 - Google Patents
服务限流系统、方法、装置及电子设备 Download PDFInfo
- Publication number
- CN111367651A CN111367651A CN201811603485.8A CN201811603485A CN111367651A CN 111367651 A CN111367651 A CN 111367651A CN 201811603485 A CN201811603485 A CN 201811603485A CN 111367651 A CN111367651 A CN 111367651A
- Authority
- CN
- China
- Prior art keywords
- application
- current limiting
- load
- current
- threshold
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5022—Workload threshold
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了服务限流系统、方法和装置,电子设备。其中,所述系统通过分别部署在应用系统相关的多个应用服务器中的应用限流装置,获取各个应用服务器的负载数据,并将负载数据发送至限流参数协调装置,限流参数协调装置根据多个应用服务器的负载数据,判断是否变更所述应用服务器的限流阈值,若是,则向应用限流装置发送阈值变更指示信息,应用限流装置接收到该指示信息后,根据指示信息确定所述应用服务器的限流阈值,对应用服务器提供的服务执行访问限流。由于实时感知应用系统的多个应用间的调用关系和应用负载情况,基于全局负载情况,动态调整上下游应用的限流阈值,实现应用之间联动协调限流阈值;因此,可以有效提升限流阈值的准确度。
Description
技术领域
本申请涉及计算机技术领域,具体涉及服务限流系统、方法和装置,以及电子设备。
背景技术
随着互联网技术的不断发展,越来越多的应用系统由单应用的服务架构演变为多应用的服务架构。基于多应用服务架构的应用系统,其处理一个访问请求时的完整调用过程可能横跨多个应用,各个应用之间相对独立,可能由不同团队、不同语言实现。图1示出了一个请求完整的调用链,经过多个应用服务,调用关系复杂,以电商系统为例,其订单服务包括下单、支付、物流、底层系统等多个应用。
限流是保护应用高可用的重要手段,为每个接口或者API配置不同的限流阈值,能够起到保护应用高可用的目的。目前,一种典型的服务限流方式是基于独立设置单应用限流阈值的服务限流方案,即:根据每个应用的负载情况分别设置各个应用的限流阈值,例如,根据应用A的负载情况设置应用A的限流阈值,根据应用B的负载情况设置应用B的限流阈值,具体可以是使用启动参数、配置文件、硬编码等方式在程序启动的时候一次性设置限流阈值方案。
然而,在实现本发明过程中,发明人发现该技术方案至少存在如下问题:服务调用链上的各个应用之间具有上下游依赖关系,单独对上游应用设置限流阈值,使得只能保护该上游应用本身的安全,但实际通过的流量可能已经超出其下游应用的承载能力,而该上游应用却对此并不知情,直到下游应用无法提供服务甚至崩溃之后才被发现,下游应用的故障将导致上游应用无法提供服务。
综上所述,现有方案只保护整个应用系统中的某个应用,而忽略了应用之间的依赖关系,因而导致不同应用之间的限流阈值并不匹配,从而严重降低应用系统的可用性。
发明内容
本申请提供服务限流系统,以解决现有技术存在的应用系统可用性较低的问题。本申请另外提供服务限流方法和装置,以及电子设备。
本申请提供一种服务限流系统,包括:
限流参数协调装置和部署在多个应用服务器中的应用限流装置;所述多个应用服务器包括与服务调用链上多个应用对应的应用服务器;
所述应用限流装置,用于获取所述应用服务器的负载数据,将所述负载数据发送至所述限流参数协调装置;以及,接收所述限流参数协调装置发送的阈值变更指示信息,根据所述指示信息确定所述应用服务器的限流阈值,根据确定的限流阈值对面向所述应用服务器的访问请求执行限流;
所述限流参数协调装置,用于接收所述应用限流装置发送的所述负载数据,根据所述多个应用对应的应用服务器的所述负载数据,判断是否变更所述应用服务器的限流阈值,若是,则向所述应用限流装置发送所述指示信息。
可选的,所述应用限流装置,具体用于根据所述指示信息包括的限流阈值,对所述访问请求执行限流;
所述限流参数协调装置,还用于根据所述多个应用对应的应用服务器的所述负载数据,确定所述应用服务器的限流阈值。
可选的,所述限流参数协调装置,具体用于根据所述多个应用对应的应用服务器的所述负载数据,判断具有调用关系的应用间负载是否匹配,若否,则根据具有调用关系的应用的负载数据,确定所述应用服务器的限流阈值。
可选的,所述限流参数协调装置,具体用于根据所述应用对应的应用服务器的所述负载数据,确定所述应用的负载度;根据应用负载度,判断具有调用关系的应用间负载是否匹配。
可选的,所述限流参数协调装置,具体用于获取所述应用对应的多个应用服务器的负载数据的累计值;根据所述累计值,确定所述应用负载度。
可选的,所述限流参数协调装置,具体用于针对两个具有调用关系的应用,获取上游应用的应用负载度变化率,以及,获取下游应用的应用负载度变化率,根据所述上游应用的应用负载度变化率与所述下游应用的应用负载度变化率,获取两个应用间的负载匹配度;若所述负载匹配度在预设范围内,则判定两个应用间负载匹配。
可选的,所述限流参数协调装置,具体用于获取所述上游应用与所述下游应用之间的调用延迟时间,根据所述调用延迟时间,确定上游应用的应用负载度变化率,以及,确定下游应用的应用负载度变化率。
可选的,所述应用负载度包括归一化的负载数据。
可选的,所述限流参数协调装置,具体用于若上游应用的负载度大于下游应用的负载度,则降低所述上游应用的限流阈值或增大所述下游应用的限流阈值。
可选的,所述限流参数协调装置,具体用于若上游应用的负载度小于下游应用的负载度,则增大所述上游应用的限流阈值或降低所述下游应用的限流阈值。
可选的,所述应用限流装置,还用于获取所述应用服务器的性能数据,将所述性能数据发送至所述限流参数协调装置;
所述限流参数协调装置,还用于根据所述应用服务器的性能数据,确定待调整限流阈值的目标应用。
可选的,所述限流参数协调装置,还用于若所述应用服务器的本次性能数据高于上次性能数据,则将本次目标应用设置为上次目标应用的相对应用。
可选的,所述性能数据包括所述应用服务器的资源占用数据。
可选的,所述限流参数协调装置,具体用于根据预设比例或预设限流阈值挡位,调整所述限流阈值。
可选的,所述限流参数协调装置,还用于获取所述服务调用链上多个应用之间的调用关系。
可选的,所述限流参数协调装置,具体用于根据所述应用的请求方信息,实时应用之间的动态调用关系。
可选的,所述负载数据包括所述应用服务器未完成请求的数量。
可选的,所述应用限流装置,具体用于获取所述应用服务器正在处理的访问请求数量、及正在排队等待处理的访问请求数量,将所述正在处理的访问请求数量和所述正在排队等待处理的访问请求数量的累计值作为所述应用服务器未完成请求的数量。
可选的,所述应用限流装置,具体用于根据第一预设时间间隔,将所述负载数据发送至所述限流参数协调装置。
可选的,所述限流参数协调装置,还用于将所述应用服务器的标识、所述负载数据和负载数据采集时间之间的对应记录存储在数据库中;以及,根据第二预设时间间隔从所述数据库中读取各个应用服务器最近采集时间的所述对应记录。
本申请还提供一种服务限流方法,包括:
获取应用服务器的负载数据;
将所述负载数据发送至限流参数协调装置;
接收所述限流参数协调装置发送的阈值变更指示信息;
根据所述指示信息确定所述应用服务器的限流阈值;
根据确定的限流阈值对面向所述应用服务器的访问请求执行限流。
可选的,所述根据所述指示信息确定所述应用服务器的限流阈值,包括:
获取所述指示信息包括的限流阈值。
可选的,还包括:
获取所述应用服务器的性能数据;
将所述性能数据发送至所述限流参数协调装置。
可选的,所述性能数据包括所述应用服务器的资源占用数据。
可选的,所述负载数据包括所述应用服务器未完成请求的数量。
可选的,所述将所述负载数据发送至限流参数协调装置,包括:
根据第一预设时间间隔,将所述负载数据发送至所述限流参数协调装置。
本申请还提供一种服务限流方法,包括:
接收部署在多个应用服务器中的应用限流装置发送的所述应用服务器的负载数据;所述多个应用服务器包括服务调用链上多个应用对应的应用服务器;
根据所述多个应用对应的应用服务器的所述负载数据,判断是否变更所述应用服务器的限流阈值;
若上述判断结果为是,则向所述应用限流装置发送针对所述应用服务器的阈值变更指示信息。
可选的,在所述向所述应用限流装置发送针对所述应用服务器的阈值变更指示信息之前,还包括:
根据所述多个应用对应的应用服务器的所述负载数据,确定所述应用服务器的限流阈值。
可选的,所述根据所述多个应用对应的应用服务器的所述负载数据,并确定所述应用服务器的限流阈值,包括:
根据所述多个应用对应的应用服务器的所述负载数据,判断具有调用关系的应用间负载是否匹配;
若否,则根据具有调用关系的应用的负载数据,确定所述应用服务器的限流阈值。
可选的,所述根据所述多个应用对应的应用服务器的所述负载数据,并判断具有调用关系的应用间负载是否匹配,包括:
根据所述应用对应的应用服务器的所述负载数据,确定所述应用的负载度;
根据应用负载度,判断具有调用关系的应用间负载是否匹配。
可选的,所述根据所述应用对应的应用服务器的所述负载数据,并确定所述应用的负载度,包括:
获取所述应用对应的多个应用服务器的负载数据的累计值;
根据所述累计值,确定所述应用负载度。
可选的,所述根据应用负载度,并判断具有调用关系的应用间负载是否匹配,包括:
针对两个具有调用关系的应用,获取上游应用的应用负载度变化率,以及,获取下游应用的应用负载度变化率;
根据所述上游应用的应用负载度变化率与所述下游应用的应用负载度变化率,获取两个应用间的负载匹配度;
若所述负载匹配度在预设范围内,则判定两个应用间负载匹配。
可选的,所述针对两个具有调用关系的应用,并获取上游应用的应用负载度变化率,并获取下游应用的应用负载度变化率,包括:
获取所述上游应用与所述下游应用之间的调用延迟时间;
根据所述调用延迟时间,确定上游应用的应用负载度变化率,以及,确定下游应用的应用负载度变化率。
可选的,所述应用负载度包括归一化的负载数据。
可选的,所述根据所述多个应用对应的应用服务器的所述负载数据,并确定所述应用服务器的限流阈值,包括:
若上游应用的负载度大于下游应用的负载度,则降低所述上游应用的限流阈值或增大所述下游应用的限流阈值。
可选的,所述根据所述多个应用对应的应用服务器的所述负载数据,并确定所述应用服务器的限流阈值,包括:
若上游应用的负载度小于下游应用的负载度,则增大所述上游应用的限流阈值或降低所述下游应用的限流阈值。
可选的,还包括:
接收所述应用限流装置上传的所述应用服务器的性能数据;
根据所述多个应用服务器的性能数据,确定待调整限流阈值的目标应用。
可选的,还包括:
若所述应用服务器的本次性能数据高于上次性能数据,则将本次目标应用设置为上次目标应用的相对应用。
可选的,所述性能数据包括所述应用服务器的资源占用数据。
可选的,所述根据所述多个应用对应的应用服务器的所述负载数据,并确定所述应用服务器的限流阈值,包括:
根据预设比例或预设限流阈值挡位,调整所述限流阈值。
可选的,还包括:
获取所述服务调用链上多个应用之间的调用关系。
可选的,所述获取所述服务调用链上多个应用之间的调用关系,包括:
根据所述应用的请求方信息,实时获取应用之间的动态调用关系。
可选的,还包括:
将所述应用服务器的标识、所述负载数据和负载数据采集时间之间的对应记录存储在数据库中;
根据第二预设时间间隔从所述数据库中读取各个应用服务器最近采集时间的所述对应记录。
本申请还提供一种服务限流装置,包括:
负载数据获取单元,用于获取应用服务器的负载数据;
负载数据发送单元,用于将所述负载数据发送至限流参数协调装置;
指示信息接收单元,用于接收所述限流参数协调装置发送的阈值变更指示信息;
限流阈值确定单元,用于根据所述指示信息确定所述应用服务器的限流阈值;
限流单元,用于根据确定的限流阈值对面向所述应用服务器的访问请求执行限流。
本申请还提供一种服务限流装置,包括:
负载数据接收单元,用于接收部署在多个应用服务器中的应用限流装置发送的所述应用服务器的负载数据;所述多个应用服务器包括服务调用链上多个应用对应的应用服务器;
判断单元,用于根据所述多个应用对应的应用服务器的所述负载数据,判断是否变更所述应用服务器的限流阈值;
指示信息发送单元,用于若上述判断结果为是,则向所述应用限流装置发送针对所述应用服务器的阈值变更指示信息。
本申请还提供一种电子设备,包括:
处理器;以及
存储器,用于存储实现服务限流方法的程序,该设备通电并通过所述处理器运行该服务限流方法的程序后,执行下述步骤:获取应用服务器的负载数据;将所述负载数据发送至限流参数协调装置;接收所述限流参数协调装置发送的阈值变更指示信息;根据所述指示信息确定所述应用服务器的限流阈值;根据确定的限流阈值对面向所述应用服务器的访问请求执行限流。
本申请还提供一种电子设备,包括:
处理器;以及
存储器,用于存储实现服务限流方法的程序,该设备通电并通过所述处理器运行该服务限流方法的程序后,执行下述步骤:接收部署在多个应用服务器中的应用限流装置发送的所述应用服务器的负载数据;所述多个应用服务器包括服务调用链上多个应用对应的应用服务器;根据所述多个应用对应的应用服务器的所述负载数据,判断是否变更所述应用服务器的限流阈值;若上述判断结果为是,则向所述应用限流装置发送针对所述应用服务器的阈值变更指示信息。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各种方法。
本申请还提供一种包括指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各种方法。
与现有技术相比,本申请具有以下优点:
本申请实施例提供的服务限流系统,通过分别部署在应用系统相关的多个应用服务器中的应用限流装置获取各个应用服务器的负载数据,并将负载数据发送至限流参数协调装置,限流参数协调装置根据多个应用服务器的负载数据,判断是否变更所述应用服务器的限流阈值,若是,则向应用限流装置发送阈值变更指示信息,应用限流装置接收到该指示信息后,根据指示信息确定所述应用服务器的限流阈值,对应用服务器提供的服务执行访问限流;这种处理方式,使得实时感知应用系统相关的多个应用之间的调用关系和应用负载情况,基于全局负载情况,动态调整上下游应用的限流阈值,由此实现应用之间联动协调限流阈值;因此,可以有效提升限流阈值的准确度,从而提升上下游应用间的负载匹配度,进而提升应用系统的可用性。此外,这种基于全局负载情况动态协调上下游应用的限流阈值的处理方式,还可避免限流阈值一旦设置不可修改,因而,可以有效提升限流阈值设置的灵活度。
附图说明
图1现有技术的应用系统的架构图;
图2本申请提供的一种服务限流系统的实施例的结构示意图;
图3本申请提供的一种服务限流系统的实施例的交互示意图;
图4本申请提供的一种服务限流系统的实施例的具体结构示意图;
图5是本申请提供的一种服务限流方法的实施例的流程图;
图6是本申请提供的一种服务限流装置的实施例的示意图;
图7是本申请提供的一种电子设备的实施例的示意图;
图8是本申请提供的另一种服务限流方法的实施例的流程图;
图9是本申请提供的另一种服务限流装置的实施例的示意图;
图10是本申请提供的另一种电子设备的实施例的示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本申请中,提供了服务限流系统,服务限流方法和装置,以及电子设备。在下面的实施例中逐一进行详细说明。
第一实施例
请参考图2,其为本申请的服务限流系统的结构图。所述系统包括:限流参数协调装置1和分别部署在多个应用服务器中的应用限流装置2。
其中,所述多个应用服务器包括应用系统向外提供的服务的调用链上多个应用对应的应用服务器,而不仅仅是某个应用集群中的多个应用服务器。
所述应用系统,其向外提供的服务需要多个应用的支撑,即要经过调用关系复杂的多个应用,才能向用户提供完整的服务,例如,电商系统向外提供的订单服务就需要下单应用、支付应用、物流应用等多个应用的支撑。
所述应用系统的架构包括多个应用分别对应的应用服务器,所述应用限流装置2可部署于各个应用服务器中,专用于为应用服务器提供的服务进行限流处理。
应用系统中每一个应用的系统架构,可以是集中式架构,也可以是分布式架构。其中,集中式架构可以只包括一台应用服务器,分布式架构即应用服务器集群。如果一个应用基于分布式架构,则可在集群中的各个应用服务器上分别部署所述应用限流装置2,也可以在集群的负载均衡设备中部署所述应用限流装置2,还可以在负载均衡设备和各个应用服务器中均部署所述应用限流装置2。
所述限流参数协调装置1,用于为应用系统包括的多个应用服务器协同调整限流阈值,又称为访问量阈值。所述限流参数协调装置1可部署于服务器,如独立于应用服务器的服务器或应用系统中任意应用服务器,但并不局限于服务器,也可以是能够实现相应功能的任何设备。
本申请实施例提供的系统,所述应用限流装置2,用于获取所述应用服务器的负载数据,将所述负载数据发送至所述限流参数协调装置1;所述限流参数协调装置1在接收到多个所述应用限流装置发送的所述负载数据后,根据所述多个应用对应的应用服务器的所述负载数据,判断是否变更所述应用服务器的限流阈值,若是,则向所述应用限流装置发送所述指示信息;所述应用限流装置2接收所述限流参数协调装置发送的阈值变更指示信息,并根据所述指示信息确定所述应用服务器的限流阈值,再根据确定的限流阈值对面向所述应用服务器的访问请求执行限流。其中,所述阈值变更指示信息,可包括应用服务器标识。
在一个示例中,限流参数协调装置1在判定要变更所述应用服务器的限流阈值后,并不调整限流阈值,而是向应用限流装置2发送只包括指示限流阈值变化的信息,并不发送调整后的限流阈值,由应用限流装置2根据所述指示信息确定应用服务器的限流阈值,这样通过几次调整后,使得应用服务器的限流阈值达到理想的限流阈值。
请参考图3,其为本申请实施例的服务限流系统的交互示意图。由图3可见,所述应用限流装置1,用于获取所述应用服务器的负载数据,向所述限流参数协调装置2上传所述负载数据;以及,接收所述限流参数协调装置2发送的阈值变更指示信息,根据所述指示信息包括的限流阈值,对面向所述应用服务器的访问请求执行限流。相应的,所述限流参数协调装置2,具体用于接收所述多个应用限流装置1发送的所述应用服务器的负载数据,根据所述多个应用对应的应用服务器的所述负载数据,确定所述应用服务器的限流阈值,向所述应用限流装置1发送所述指示信息。
所述阈值变更指示信息,可包括应用服务器标识和调整后的限流阈值。
在一个示例中,所述限流参数协调装置2,具体用于根据所述多个应用对应的应用服务器的所述负载数据,判断具有调用关系的应用间负载是否匹配,也可以说是否均衡,如果上下游应用间的负载并不匹配,则根据上下游应用间负载匹配度,确定所述应用服务器的限流阈值。
具体实施时,可以以服务调用链上各个应用的正向调用顺序,针对应用的两两组合,判断两个应用间负载是否匹配,若否,则根据两个应用间负载匹配度,确定两个应用对应的应用服务器的限流阈值。
如图1所示的调用链,可先确定应用A和应用B的限流阈值,以及应用A和应用C的限流阈值,然后再确定应用B和应用D的限流阈值,以及应用C和应用E的限流阈值。
具体实施时,可以以服务调用链上各个应用的被调用顺序,针对应用的两两组合,判断两个应用间负载是否匹配,若否,则根据两个应用间负载匹配度,确定两个应用对应的应用服务器的限流阈值。
如图1所示的调用链,可先确定应用B和应用D的限流阈值,以及应用C和应用E的限流阈值,然后再确定应用A和应用B的限流阈值,以及应用A和应用C的限流阈值。
所述负载数据,包括但不限于:所述应用服务器未完成请求的数量。所述未完成请求,可以是应用服务器正在处理的访问请求,也可以是正在排队等待处理的访问请求。所述未完成请求数量,可以是应用服务器正在处理的访问请求数量、与正在排队等待处理的访问请求数量的累计值。
所述应用限流装置1在获取到所述应用服务器的负载数据后,就可以向所述限流参数协调装置2上传所述负载数据。具体实施时,所述应用限流装置1可根据第一预设时间间隔,将所述负载数据发送至所述限流参数协调装置。所述第一预设时间间隔,可以是秒级的时间间隔,例如每5秒上传一次负载数据。
所述限流参数协调装置2,可接收多个应用对应的多个应用服务器中的应用限流装置1发送的所述应用服务器的负载数据,并可将所述应用服务器的标识、所述负载数据和负载数据采集时间之间的对应记录存储在数据库中;以及,根据第二预设时间间隔从所述数据库中读取各个应用服务器最近采集时间的所述对应记录。所述第二预设时间间隔,可以是秒级的时间间隔,例如每10秒轮询一次上传的负载数据。
所述限流参数协调装置2,在获得多个应用对应的多个应用服务器中的应用限流装置1发送的所述应用服务器的负载数据后,就可获知服务调用链上所有应用的负载数据,也即所述限流参数协调装置2可获知应用系统的全局负载信息,并根据全局负载信息,确定各个应用的限流阈值。
在一个示例中,所述限流参数协调装置2,具体用于根据所述应用对应的应用服务器的所述负载数据,确定所述应用的负载度;根据应用负载度,判断具有调用关系的应用间负载是否匹配。
所述应用负载度,是指用于衡量应用负载程度的指标,可以是负载数据本身,也可以是负载数据的函数,如归一化的负载数据等等。
所述归一化的负载数据,包括将应用服务器的负载数据转换为0-1之间的数据。通过使用所述归一化的负载数据,使得具有不同请求量级别(负载级别)的不同应用之间的负载具有可比性;因此,可以有提升负载匹配结果的准确度。
在一个示例中,所述负载数据为未完成请求数量,且所述应用的系统架构为应用集群;在这种情况下,要确定所述应用负载度,可包括如下子步骤:1)获取所述应用对应的多个应用服务器的未完成请求数量的累计值;2)根据所述累计值,确定所述应用负载度。
1)获取所述应用对应的多个应用服务器的未完成请求数量的累计值。
所述应用的系统架构,可以为集中式,也可以是分布式。如果所述应用的系统架构是分布式架构,即应用对应一个应用服务器集群,而非仅一台应用服务器,那么,所述应用对应的未完成请求数量可以是集群中各个应用服务器对应的未完成请求数量之和。
2)根据所述累计值,确定所述应用负载度。
在本实施例中,将归一化的累计值作为所述应用负载度。例如,可采用如下公式进行计算:
应用未完成请求数=∑应用中每台机器正在被处理或者正在排队的请求数
应用负载度=f(应用未完成请求数)
由上述公式可见,应用负载度使用所述应用的未完成请求数的函数f来表示,函数f可以是将应用未完成请求数进行归一化处理的函数等等。需要说明的是,应用负载度与应用未完成请求数正相关。
具体实施中,所述限流参数协调装置2,还用于获取服务调用链上多个应用之间的调用关系,由此可确定上下游应用,进而可对上下游应用的限流阈值进行联调处理。
在一个示例中,所述限流参数协调装置2,可根据所述应用的请求方信息,实时感知应用之间的动态调用关系。
所述请求方信息,包括但不限于:网络地址,主机地址,请求时间,请求方标识等等。例如,应用B的请求方的网络地址为应用A对应的网络地址,则可确定应用A与应用B之间具有调用关系。
为了方便描述,本实施例将具有调用关系的应用中的调用方(请求方)称为上游应用,将被调用方称为下游应用。
在另一个示例中,所述限流参数协调装置2,也可根据预先设定的不同应用之间的调用关系,获知应用间的调用关系,该调用关系通常为静态调用关系。例如,可在所述限流参数协调装置2中预先设置并保存应用系统的静态应用调用关系。
所述限流参数协调装置2,在获取到服务调用链上多个应用之间的调用关系后,就可以针对具有调用关系的至少两个应用,根据所述应用的负载数据,判断具有调用关系的应用间负载是否匹配,例如,根据所述应用的负载度,判断具有调用关系的应用间负载是否匹配。
在一个示例中,所述限流参数协调装置2,具体用于获取上游应用的应用负载度变化率,以及,获取下游应用的应用负载度变化率,根据所述上游应用的应用负载度变化率与所述下游应用的应用负载度变化率,获取应用间的负载匹配度;若所述负载匹配度在预设范围内,则判定具有调用关系的应用间负载匹配。
所述应用负载度变化率,包括当前时间与上一时间的应用负载度间的比值。所述当前时间,包括本次接收到的所述负载数据对应的数据采集时间。所述上一时间,包括上一次接收到的所述负载数据对应的数据采集时间。当前时间与上一时间之间的时间间隔,可以是秒级的时间间隔,例如,所述限流参数协调装置2每5秒采集一次各个应用服务器的负载数据,并根据相邻两次采集的负载数据,计算所述应用负载度变化率,如当前时间的应用负载度为0.8,上一时间的应用负载度为0.9,则应用负载度变化率为0.89。
在本实施例中,所述应用负载度变化率采用如下公式计算:
如果所述应用负载度变化率大于1,则表示请求速率在增加;如果所述应用负载度变化率小于1,则表示请求速率在降低。
所述负载匹配度,又称为负载均衡度,可以是两个具有调用关系的应用间的负载均衡度。
在一个示例中,所述负载均衡度可采用如下公式计算:
所述负载均衡度=f(上游应用的负载度变化率,△t)/下游应用的负载度变化率
其中,△t表示上下游应用之间的调用延迟时间,例如,上游应用A在处理一个访问请求时要调用下游应用B,上游应用A在t1时刻接收到访问请求,上游应用A处理该请求的时间为△t,并在t2=t1+△t时刻调用下游应用B。采用这种处理方式,使得上下游应用分别对应的负载度变化率为与同一次服务相关的负载度变化率,避免根据不同次服务的负载度变化率确定负载匹配度;因此,可以有效提升负载匹配度的准确度。
具体实施时,△t可根据应用A与应用B的埋点数据计算确定,即△t可测试得到,而无需预先设定。
在获取到所述负载均衡度后,若所述负载匹配度在预设范围内,则判定具有调用关系的应用间负载匹配。
所述预设范围,是指负载匹配度的正常数据范围,例如,所述负载均衡度等于或接近1,都表示两个应用的负载相近,负载是匹配的;如果所述负载均衡度并不等于或接近1,则表示两个应用的负载并不匹配。所述预设范围,可根据业务需求设置。
在一个示例中,如果两个应用的负载并不匹配,且所述负载均衡度大于1,则表示上游应用负载较大;这种情况下,可以减小应用A的限流阈值,或增大应用B的限流阈值,或即减小应用A的限流阈值,同时增大应用B的限流阈值。
例如,应用A在t1时刻的应用负载度变化率为1.25,△t=0.5秒,应用B在t1+△t时刻的应用负载度变化率为1.05,预设范围为[0.9,1.1],由于应用A与应用B的负载均衡度为1.25/1.05=1.19>1,且1.19并不在[0.9,1.1]内,因此可确定应用A较应用B的负载更大,需要调小应用A的限流阈值或调大应用B的限流阈值。
在另一个示例中,如果两个应用的负载并不匹配,且所述负载均衡度小于1,则表示下游应用负载较大;这种情况下,可以增大应用A的限流阈值,或减小应用B的限流阈值,或即增大应用A的限流阈值,同时减小应用B的限流阈值。
例如,应用A在t1时刻的应用负载度变化率为1.25,△t=0.5秒,应用B在t1+△t时刻的应用负载度变化率为1.5,预设范围为[0.9,1.1],由于应用A与应用B的负载均衡度为1.25/1.5=0.83<1,且0.83并不在[0.9,1.1]内,因此可确定应用A较应用B的负载更小,需要提升应用A和/或调小应用B的限流阈值。
在一个示例中,如果两个应用的负载并不匹配,则可先确定调整哪一个应用的限流阈值,然后再确定所述应用服务器的限流阈值。
在一个示例中,所述应用限流装置1,还用于获取所述应用服务器的性能数据,将所述性能数据发送至所述限流参数协调装置2;相应的,所述限流参数协调装置2可根据所述应用服务器的性能数据,确定调整哪一个应用的限流阈值。
所述性能数据,可以是CPU、内存、网络、磁盘IO等可体现资源占用情况的数据,也可以是数据库查询响应时间等数据。
本申请实施例提供的系统,所述限流参数协调装置2可根据所述应用服务器的性能数据,决定是调整上游应用的限流阈值,还是调整下游应用的限流阈值。
例如,如果两个应用的负载并不匹配,且上游应用负载较大,则理论上既可降低应用A的限流阈值,也可提升应用B的限流阈值。但是,如果应用A的CPU占用率较高,而应用B的CPU占用率较低,则由于降低应用A的限流阈值,可导致降低应用A的服务器的CPU使用率,因此降低应用A的限流阈值的处理方式将优于提升应用B的限流阈值的处理方式,可以有效提升应用A的请求处理速度,更具有实用性。
再例如,如果两个应用的负载并不匹配,且下游应用负载较大,则理论上既可提升应用A的限流阈值,也可降低应用B的限流阈值。但是,如果应用A的CPU占用率较低,而应用B的CPU占用率较高,则由于降低应用B的限流阈值,可导致降低应用B的服务器的CPU使用率,因此降低应用B的限流阈值的处理方式将优于提升应用A的限流阈值的处理方式,可以有效提升应用B的请求处理速度,更具有实用性。
又例如,如果应用A和应用B的CPU占用率均较低,则即可以降低应用A的限流阈值,也可以提升应用B的限流阈值,两种处理方式无优劣之分。
具体实施时,如果应用为存储密集型,则可根据存储资源占用情况确定调整哪个应用;如果应用为计算密集型,则可根据CPU占用情况确定调整哪个应用。
在确定待调整限流阈值的目标应用后,就可以进一步确定所述限流阈值的具体调整数值。
在一个示例中,可以根据预设比例调整限流阈值,例如每次调整5%,当要调大阈值时,调整后阈值可以为(1+5%)调整前阈值;当要调小阈值时,调整后阈值可以为(1-5%)调整前阈值。
具体实施时,也可以根据预设限流阈值挡位调整限流阈值。
在另一个示例中,所述限流参数协调装置2,还用于若所述应用服务器的本次性能数据高于上次性能数据,则将本次目标应用设置为上次目标应用的相对应用。采用这种处理方式,使得可以修改调整目标,例如,应用A调用应用B,上次调整应用A的限流阈值,如果发现本次性能数据较上次性能数据变差,则可以改变调整目标,由调整应用A的限流阈值改为调整应用B的限流阈值。
请参考图4,其为本申请提供的一种服务限流系统实施例的具体结构示意图。由图3可见,每个应用服务器中均部署由所述应用限流装置1,限流参数协调装置2单独部署在一台服务器中。所述应用限流装置1包括负载数据上传模块、负载数据获取模块、阈值存储模块和阈值作用模块。其中,负载数据上传模块用于向限流参数协调装置2上传应用负载数据,负载数据获取模块用于获取应用服务器的负载数据,阈值存储模块用于存储限流阈值,阈值作用模块用于对请求执行限流处理。所述限流参数协调装置2包括限流阈值确定模块、负载数据分析模块和负载数据接收模块。其中,负载数据接收模块用于接收应用限流装置1上传的应用负载数据,负载数据分析模块用于判断上下游应用的负载是否匹配,限流阈值确定模块用于在负载不匹配时,根据全局负载信息调整各个应用的限流阈值。
从上述实施例可见,本申请实施例提供的服务限流系统,通过分别部署在应用系统相关的多个应用服务器中的应用限流装置获取各个应用服务器的负载数据,并将负载数据发送至限流参数协调装置,限流参数协调装置根据多个应用服务器的负载数据,判断是否变更所述应用服务器的限流阈值,若是,则向应用限流装置发送阈值变更指示信息,应用限流装置接收到该指示信息后,根据指示信息确定所述应用服务的限流阈值,对应用服务器提供的服务执行访问限流;这种处理方式,使得实时感知应用系统相关的多个应用之间的调用关系和应用负载情况,基于全局负载情况,动态调整上下游应用的限流阈值,由此实现应用之间联动协调限流阈值;因此,可以有效提升限流阈值的准确度,从而提升上下游应用间的负载匹配度,进而提升应用系统的可用性。此外,这种基于全局负载情况动态协调上下游应用的限流阈值的处理方式,还可避免限流阈值一旦设置不可修改,因而,可以有效提升限流阈值设置的灵活度。
第二实施例
与上述的服务限流系统相对应,本申请还提供一种服务限流方法,该方法的执行主体为服务限流装置,该装置通常部署于服务器,但并不局限于服务器,也可以是能够实现所述服务限流方法的任何设备。
请参考图5,其为本申请提供的一种服务限流方法实施例的流程图,本实施例与第一实施例内容相同的部分不再赘述,请参见实施例一中的相应部分。本申请提供的一种服务限流方法包括:
步骤S501:获取应用服务器的负载数据。
所述负载数据包括所述应用服务器未完成请求的数量。
步骤S503:将所述负载数据发送至限流参数协调装置。
在一个示例中,所述将所述负载数据发送至限流参数协调装置,可采用如下方式:根据第一预设时间间隔,将所述负载数据发送至所述限流参数协调装置。
步骤S505:接收所述限流参数协调装置发送的阈值变更指示信息。
步骤S507:根据所述指示信息确定所述应用服务器的限流阈值。
在一个示例中,所述指示信息包括的限流阈值,步骤S507可采用如下方式实现:获取所述指示信息包括的限流阈值。
步骤S509:根据确定的限流阈值对面向所述应用服务器的访问请求执行限流。
在一个示例中,所述方法还包括如下步骤:1)获取所述应用服务器的性能数据;2)将所述性能数据发送至所述限流参数协调装置。
所述性能数据包括所述应用服务器的资源占用数据。
从上述实施例可见,本申请实施例提供的服务限流方法,通过分别部署在应用系统相关的多个应用服务器中的应用限流装置获取各个应用服务器的负载数据,并将负载数据发送至限流参数协调装置,限流参数协调装置根据多个应用服务器的负载数据,判断是否变更应用服务器的限流阈值,若是,则向应用限流装置发送阈值变更指示信息,应用限流装置接收到该指示信息后,根据指示信息确定所述应用服务的限流阈值,对应用服务器提供的服务执行访问限流;这种处理方式,使得实时感知应用系统相关的多个应用之间的调用关系和应用负载情况,基于全局负载情况,动态调整上下游应用的限流阈值,由此实现应用之间联动协调限流阈值;因此,可以有效提升限流阈值的准确度,从而提升上下游应用间的负载匹配度,进而提升应用系统的可用性。此外,这种基于全局负载情况动态协调上下游应用的限流阈值的处理方式,还可避免限流阈值一旦设置不可修改,因而,可以有效提升限流阈值设置的灵活度。
在上述的实施例中,提供了一种服务限流方法,与之相对应的,本申请还提供一种服务限流装置。该装置是与上述方法的实施例相对应。
第三实施例
请参看图6,其为本申请的服务限流装置的实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
本申请另外提供一种服务限流装置,包括:
负载数据获取单元601,用于获取应用服务器的负载数据;
负载数据发送单元603,用于将所述负载数据发送至限流参数协调装置;
指示信息接收单元605,用于接收所述限流参数协调装置发送的阈值变更指示信息;
限流阈值确定单元607,用于根据所述指示信息确定所述应用服务器的限流阈值;
限流单元609,用于根据确定的限流阈值对面向所述应用服务器的访问请求执行限流。
可选的,所述限流阈值确定单元607,具体用于获取所述指示信息包括的限流阈值。
可选的,所述方法还包括如下单元:
性能数据获取单元,用于获取所述应用服务器的性能数据;
性能数据发送单元,用于将所述性能数据发送至所述限流参数协调装置。
可选的,所述性能数据包括所述应用服务器的资源占用数据。
可选的,所述负载数据包括所述应用服务器未完成请求的数量。
可选的,所述负载数据发送单元603,具体用于根据第一预设时间间隔,将所述负载数据发送至所述限流参数协调装置。
从上述实施例可见,本申请实施例提供的服务限流装置,通过分别部署在应用系统相关的多个应用服务器中的应用限流装置获取各个应用服务器的负载数据,并将负载数据发送至限流参数协调装置,限流参数协调装置根据多个应用服务器的负载数据,判断是否变更应用服务器的限流阈值,若是,则向应用限流装置发送阈值变更指示信息,应用限流装置接收到该指示信息后,根据指示信息确定所述应用服务的限流阈值,对应用服务器提供的服务执行访问限流;这种处理方式,使得实时感知应用系统相关的多个应用之间的调用关系和应用负载情况,基于全局负载情况,动态调整上下游应用的限流阈值,由此实现应用之间联动协调限流阈值;因此,可以有效提升限流阈值的准确度,从而提升上下游应用间的负载匹配度,进而提升应用系统的可用性。此外,这种基于全局负载情况动态协调上下游应用的限流阈值的处理方式,还可避免限流阈值一旦设置不可修改,因而,可以有效提升限流阈值设置的灵活度。
第四实施例
请参考图7,其为本申请的电子设备实施例的示意图。由于设备实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的设备实施例仅仅是示意性的。
本实施例的一种电子设备,该电子设备包括:处理器701和存储器702;存储器,用于存储实现服务限流方法的程序,该设备通电并通过所述处理器运行该服务限流方法的程序后,执行下述步骤:获取应用服务器的负载数据;将所述负载数据发送至限流参数协调装置;接收所述限流参数协调装置发送的阈值变更指示信息;根据所述指示信息确定所述应用服务器的限流阈值;根据确定的限流阈值对面向所述应用服务器的访问请求执行限流。
第五实施例
与上述的服务限流系统相对应,本申请还提供一种服务限流方法,该方法的执行主体部署在应用服务器中的服务限流装置。
请参考图8,其为本申请提供的一种服务限流方法实施例的流程图,本实施例与第一实施例内容相同的部分不再赘述,请参见实施例一中的相应部分。本申请提供的一种服务限流方法包括:
步骤S801:接收部署在多个应用服务器中的应用限流装置发送的所述应用服务器的负载数据。
所述多个应用服务器包括服务调用链上多个应用对应的应用服务器。
在一个示例中,所述方法还包括如下步骤:1)将所述应用服务器的标识、所述负载数据和负载数据采集时间之间的对应记录存储在数据库中;2)根据第二预设时间间隔从所述数据库中读取各个应用服务器最近采集时间的所述对应记录。
步骤S803:根据所述多个应用对应的应用服务器的所述负载数据,判断是否变更所述应用服务器的限流阈值。
步骤S805:若上述判断结果为是,则向所述应用限流装置发送针对所述应用服务器的阈值变更指示信息。
在一个示例中,在所述向所述应用限流装置发送针对所述应用服务器的阈值变更指示信息之前,还包括如下步骤:根据所述多个应用对应的应用服务器的所述负载数据,确定所述应用服务器的限流阈值。
在一个示例中,所述根据所述多个应用对应的应用服务器的所述负载数据,并确定所述应用服务器的限流阈值,可包括如下子步骤:1)根据所述多个应用对应的应用服务器的所述负载数据,判断具有调用关系的应用间负载是否匹配;2)若否,则根据具有调用关系的应用的负载数据,确定所述应用服务器的限流阈值。
在一个示例中,所述方法还包括如下步骤:获取所述服务调用链上多个应用之间的调用关系。
在一个示例中,所述获取所述服务调用链上多个应用之间的调用关系,可采用如下方式实现:根据所述应用的请求方信息,实时获取应用之间的动态调用关系。
在一个示例中,所述根据所述多个应用对应的应用服务器的所述负载数据,并判断具有调用关系的应用间负载是否匹配,包括如下子步骤:1)根据所述应用对应的应用服务器的所述负载数据,确定所述应用的负载度;2)根据应用负载度,判断具有调用关系的应用间负载是否匹配。
所述应用负载度包括归一化的负载数据。
在一个示例中,所述根据所述应用对应的应用服务器的所述负载数据,并确定所述应用的负载度,包括如下子步骤:1)获取所述应用对应的多个应用服务器的负载数据的累计值;2)根据所述累计值,确定所述应用负载度。
在一个示例中,所述根据应用负载度,并判断具有调用关系的应用间负载是否匹配,包括如下子步骤:1)针对两个具有调用关系的应用,获取上游应用的应用负载度变化率,以及,获取下游应用的应用负载度变化率;2)根据所述上游应用的应用负载度变化率与所述下游应用的应用负载度变化率,获取两个应用间的负载匹配度;3)若所述负载匹配度在预设范围内,则判定两个应用间负载匹配。
在一个示例中,所述针对两个具有调用关系的应用,并获取上游应用的应用负载度变化率,并获取下游应用的应用负载度变化率,包括如下子步骤:1)获取所述上游应用与所述下游应用之间的调用延迟时间;2)根据所述调用延迟时间,确定上游应用的应用负载度变化率,以及,确定下游应用的应用负载度变化率。
在一个示例中,所述根据所述多个应用对应的应用服务器的所述负载数据,并确定所述应用服务器的限流阈值,可采用如下方式:若上游应用的负载度大于下游应用的负载度,则降低所述上游应用的限流阈值或增大所述下游应用的限流阈值。
在一个示例中,所述根据所述多个应用对应的应用服务器的所述负载数据,并确定所述应用服务器的限流阈值,可采用如下方式:若上游应用的负载度小于下游应用的负载度,则增大所述上游应用的限流阈值或降低所述下游应用的限流阈值。
在一个示例中,所述方法还包括如下步骤:1)接收所述应用限流装置上传的所述应用服务器的性能数据;2)根据所述多个应用服务器的性能数据,确定待调整限流阈值的目标应用。
所述性能数据包括所述应用服务器的资源占用数据。
在一个示例中,所述方法还包括如下步骤:若所述应用服务器的本次性能数据高于上次性能数据,则将本次目标应用设置为上次目标应用的相对应用。
在一个示例中,所述根据所述多个应用对应的应用服务器的所述负载数据,并确定所述应用服务器的限流阈值,可采用如下方式实现:根据预设比例或预设限流阈值挡位,调整所述限流阈值。
从上述实施例可见,本申请实施例提供的服务限流方法,通过分别部署在应用系统相关的多个应用服务器中的应用限流装置获取各个应用服务器的负载数据,并将负载数据发送至限流参数协调装置,限流参数协调装置根据多个应用服务器的负载数据,判断是否变更所述应用服务器的限流阈值,若是,则向应用限流装置发送阈值变更指示信息,应用限流装置接收到该指示信息后,根据指示信息确定所述应用服务器的限流阈值,对应用服务器提供的服务执行访问限流;这种处理方式,使得实时感知应用系统相关的多个应用之间的调用关系和应用负载情况,基于全局负载情况,动态调整上下游应用的限流阈值,由此实现应用之间联动协调限流阈值;因此,可以有效提升限流阈值的准确度,从而提升上下游应用间的负载匹配度,进而提升应用系统的可用性。此外,这种基于全局负载情况动态协调上下游应用的限流阈值的处理方式,还可避免限流阈值一旦设置不可修改,因而,可以有效提升限流阈值设置的灵活度。
在上述的实施例中,提供了一种服务限流方法,与之相对应的,本申请还提供一种服务限流装置。该装置是与上述方法的实施例相对应。
第六实施例
请参看图9,其为本申请的服务限流装置的实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
本申请另外提供一种服务限流装置,包括:
负载数据接收单元901,用于接收部署在多个应用服务器中的应用限流装置发送的所述应用服务器的负载数据;所述多个应用服务器包括服务调用链上多个应用对应的应用服务器;
判断单元903,用于根据所述多个应用对应的应用服务器的所述负载数据,判断是否变更所述应用服务器的限流阈值;
指示信息发送单元905,用于若上述判断结果为是,则向所述应用限流装置发送针对所述应用服务器的阈值变更指示信息。
可选的,所述方法还包括如下单元:
限流阈值确定单元,用于根据所述多个应用对应的应用服务器的所述负载数据,确定所述应用服务器的限流阈值。
可选的,所述限流阈值确定单元包括:
第一子单元,用于根据所述多个应用对应的应用服务器的所述负载数据,判断具有调用关系的应用间负载是否匹配;
第二子单元,用于若否,则根据具有调用关系的应用的负载数据,确定所述应用服务器的限流阈值。
可选的,所述第一子单元包括:
第三子单元,用于根据所述应用对应的应用服务器的所述负载数据,确定所述应用的负载度;
第四子单元,用于根据应用负载度,判断具有调用关系的应用间负载是否匹配。
可选的,所述第三子单元包括:
第五子单元,用于获取所述应用对应的多个应用服务器的负载数据的累计值;
第六子单元,用于根据所述累计值,确定所述应用负载度。
可选的,所述第四子单元包括:
第七子单元,用于针对两个具有调用关系的应用,获取上游应用的应用负载度变化率,以及,获取下游应用的应用负载度变化率;
第八子单元,用于根据所述上游应用的应用负载度变化率与所述下游应用的应用负载度变化率,获取两个应用间的负载匹配度;
第九子单元,用于若所述负载匹配度在预设范围内,则判定两个应用间负载匹配。
可选的,所述第七子单元包括:
第十子单元,用于获取所述上游应用与所述下游应用之间的调用延迟时间;
第十一子单元,用于根据所述调用延迟时间,确定上游应用的应用负载度变化率,以及,确定下游应用的应用负载度变化率。
可选的,所述应用负载度包括归一化的负载数据。
可选的,所述限流阈值确定单元,具体用于若上游应用的负载度大于下游应用的负载度,则降低所述上游应用的限流阈值或增大所述下游应用的限流阈值。
可选的,所述限流阈值确定单元,具体用于若上游应用的负载度小于下游应用的负载度,则增大所述上游应用的限流阈值或降低所述下游应用的限流阈值。
可选的,还包括:
性能数据接收单元,用于接收所述应用限流装置上传的所述应用服务器的性能数据;
目标应用确定单元,用于根据所述多个应用服务器的性能数据,确定待调整限流阈值的目标应用。
可选的,还包括:
目标应用设置单元,用于若所述应用服务器的本次性能数据高于上次性能数据,则将本次目标应用设置为上次目标应用的相对应用。
可选的,所述性能数据包括所述应用服务器的资源占用数据。
可选的,所述限流阈值确定单元,具体用于根据预设比例或预设限流阈值挡位,调整所述限流阈值。
可选的,还包括:
调用关系获取单元,用于获取所述服务调用链上多个应用之间的调用关系。
可选的,所述调用关系获取单元,具体用于根据所述应用的请求方信息,实时获取应用之间的动态调用关系。
可选的,还包括:
数据存储单元,用于将所述应用服务器的标识、所述负载数据和负载数据采集时间之间的对应记录存储在数据库中;
数据读取单元,用于根据第二预设时间间隔从所述数据库中读取各个应用服务器最近采集时间的所述对应记录。
从上述实施例可见,本申请实施例提供的服务限流装置,通过分别部署在应用系统相关的多个应用服务器中的应用限流装置获取各个应用服务器的负载数据,并将负载数据发送至限流参数协调装置,限流参数协调装置根据多个应用服务器的负载数据,判断是否变更所述应用服务器的限流阈值,若是,则向应用限流装置发送阈值变更指示信息,应用限流装置接收到该指示信息后,根据指示信息确定所述应用服务器的限流阈值,对应用服务器提供的服务执行访问限流;这种处理方式,使得实时感知应用系统相关的多个应用之间的调用关系和应用负载情况,基于全局负载情况,动态调整上下游应用的限流阈值,由此实现应用之间联动协调限流阈值;因此,可以有效提升限流阈值的准确度,从而提升上下游应用间的负载匹配度,进而提升应用系统的可用性。此外,这种基于全局负载情况动态协调上下游应用的限流阈值的处理方式,还可避免限流阈值一旦设置不可修改,因而,可以有效提升限流阈值设置的灵活度。
第七实施例
请参考图10,其为本申请的电子设备实施例的示意图。由于设备实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的设备实施例仅仅是示意性的。
本实施例的一种电子设备,该电子设备包括:处理器1001和存储器1002;所述存储器,用于存储实现服务限流方法的程序,该设备通电并通过所述处理器运行该服务限流方法的程序后,执行下述步骤:接收部署在多个应用服务器中的应用限流装置发送的所述应用服务器的负载数据;所述多个应用服务器包括服务调用链上多个应用对应的应用服务器;根据所述多个应用对应的应用服务器的所述负载数据,判断是否变更所述应用服务器的限流阈值;若上述判断结果为是,则向所述应用限流装置发送针对所述应用服务器的阈值变更指示信息。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
Claims (28)
1.一种服务限流系统,其特征在于,包括:
限流参数协调装置和部署在多个应用服务器中的应用限流装置;所述多个应用服务器包括与服务调用链上多个应用对应的应用服务器;
所述应用限流装置,用于获取所述应用服务器的负载数据,将所述负载数据发送至所述限流参数协调装置;以及,接收所述限流参数协调装置发送的阈值变更指示信息,根据所述指示信息确定所述应用服务器的限流阈值,根据确定的限流阈值对面向所述应用服务器的访问请求执行限流;
所述限流参数协调装置,用于接收所述应用限流装置发送的所述负载数据,根据所述多个应用对应的应用服务器的所述负载数据,判断是否变更所述应用服务器的限流阈值,若是,则向所述应用限流装置发送所述指示信息。
2.根据权利要求1所述的系统,其特征在于,
所述应用限流装置,具体用于根据所述指示信息包括的限流阈值,对所述访问请求执行限流;
所述限流参数协调装置,还用于根据所述多个应用对应的应用服务器的所述负载数据,确定所述应用服务器的限流阈值。
3.根据权利要求2所述的系统,其特征在于,
所述限流参数协调装置,具体用于根据所述多个应用对应的应用服务器的所述负载数据,判断具有调用关系的应用间负载是否匹配,若否,则根据具有调用关系的应用的负载数据,确定所述应用服务器的限流阈值。
4.根据权利要求3所述的系统,其特征在于,
所述限流参数协调装置,具体用于根据所述应用对应的应用服务器的所述负载数据,确定所述应用的负载度;根据应用负载度,判断具有调用关系的应用间负载是否匹配。
5.根据权利要求4所述的系统,其特征在于,
所述限流参数协调装置,具体用于获取所述应用对应的多个应用服务器的负载数据的累计值;根据所述累计值,确定所述应用负载度。
6.根据权利要求4所述的系统,其特征在于,
所述限流参数协调装置,具体用于针对两个具有调用关系的应用,获取上游应用的应用负载度变化率,以及,获取下游应用的应用负载度变化率,根据所述上游应用的应用负载度变化率与所述下游应用的应用负载度变化率,获取两个应用间的负载匹配度;若所述负载匹配度在预设范围内,则判定两个应用间负载匹配。
7.根据权利要求6所述的系统,其特征在于,
所述限流参数协调装置,具体用于获取所述上游应用与所述下游应用之间的调用延迟时间,根据所述调用延迟时间,确定上游应用的应用负载度变化率,以及,确定下游应用的应用负载度变化率。
8.根据权利要求4所述的系统,其特征在于,
所述应用负载度包括归一化的负载数据。
9.根据权利要求3所述的系统,其特征在于,
所述限流参数协调装置,具体用于若上游应用的负载度大于下游应用的负载度,则降低所述上游应用的限流阈值或增大所述下游应用的限流阈值。
10.根据权利要求3或9所述的系统,其特征在于,
所述限流参数协调装置,具体用于若上游应用的负载度小于下游应用的负载度,则增大所述上游应用的限流阈值或降低所述下游应用的限流阈值。
11.根据权利要求9所述的系统,其特征在于,
所述应用限流装置,还用于获取所述应用服务器的性能数据,将所述性能数据发送至所述限流参数协调装置;
所述限流参数协调装置,还用于根据所述应用服务器的性能数据,确定待调整限流阈值的目标应用。
12.根据权利要求11所述的系统,其特征在于,
所述限流参数协调装置,还用于若所述应用服务器的本次性能数据高于上次性能数据,则将本次目标应用设置为上次目标应用的相对应用。
13.根据权利要求11所述的系统,其特征在于,
所述性能数据包括所述应用服务器的资源占用数据。
14.根据权利要求2所述的系统,其特征在于,
所述限流参数协调装置,具体用于根据预设比例或预设限流阈值挡位,调整所述限流阈值。
15.根据权利要求1所述的系统,其特征在于,
所述限流参数协调装置,还用于获取所述服务调用链上多个应用之间的调用关系。
16.根据权利要求15所述的系统,其特征在于,
所述限流参数协调装置,具体用于根据所述应用的请求方信息,实时应用之间的动态调用关系。
17.根据权利要求1所述的系统,其特征在于,
所述负载数据包括所述应用服务器未完成请求的数量。
18.根据权利要求17所述的系统,其特征在于,
所述应用限流装置,具体用于获取所述应用服务器正在处理的访问请求数量、及正在排队等待处理的访问请求数量,将所述正在处理的访问请求数量和所述正在排队等待处理的访问请求数量的累计值作为所述应用服务器未完成请求的数量。
19.根据权利要求1所述的系统,其特征在于,
所述应用限流装置,具体用于根据第一预设时间间隔,将所述负载数据发送至所述限流参数协调装置。
20.根据权利要求1所述的系统,其特征在于,
所述限流参数协调装置,还用于将所述应用服务器的标识、所述负载数据和负载数据采集时间之间的对应记录存储在数据库中;以及,根据第二预设时间间隔从所述数据库中读取各个应用服务器最近采集时间的所述对应记录。
21.一种服务限流方法,其特征在于,包括:
获取应用服务器的负载数据;
将所述负载数据发送至限流参数协调装置;
接收所述限流参数协调装置发送的阈值变更指示信息;
根据所述指示信息确定所述应用服务器的限流阈值;
根据确定的限流阈值对面向所述应用服务器的访问请求执行限流。
22.根据权利要求21所述的方法,其特征在于,所述根据所述指示信息确定所述应用服务器的限流阈值,包括:
获取所述指示信息包括的限流阈值。
23.一种服务限流方法,其特征在于,包括:
接收部署在多个应用服务器中的应用限流装置发送的所述应用服务器的负载数据;所述多个应用服务器包括服务调用链上多个应用对应的应用服务器;
根据所述多个应用对应的应用服务器的所述负载数据,判断是否变更所述应用服务器的限流阈值;
若上述判断结果为是,则向所述应用限流装置发送针对所述应用服务器的阈值变更指示信息。
24.根据权利要求23所述的方法,其特征在于,在所述向所述应用限流装置发送针对所述应用服务器的阈值变更指示信息之前,还包括:
根据所述多个应用对应的应用服务器的所述负载数据,确定所述应用服务器的限流阈值。
25.一种服务限流装置,其特征在于,包括:
负载数据获取单元,用于获取应用服务器的负载数据;
负载数据发送单元,用于将所述负载数据发送至限流参数协调装置;
指示信息接收单元,用于接收所述限流参数协调装置发送的阈值变更指示信息;
限流阈值确定单元,用于根据所述指示信息确定所述应用服务器的限流阈值;
限流单元,用于根据确定的限流阈值对面向所述应用服务器的访问请求执行限流。
26.一种服务限流装置,其特征在于,包括:
负载数据接收单元,用于接收部署在多个应用服务器中的应用限流装置发送的所述应用服务器的负载数据;所述多个应用服务器包括服务调用链上多个应用对应的应用服务器;
判断单元,用于根据所述多个应用对应的应用服务器的所述负载数据,判断是否变更所述应用服务器的限流阈值;
指示信息发送单元,用于若上述判断结果为是,则向所述应用限流装置发送针对所述应用服务器的阈值变更指示信息。
27.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储实现服务限流方法的程序,该设备通电并通过所述处理器运行该服务限流方法的程序后,执行下述步骤:获取应用服务器的负载数据;将所述负载数据发送至限流参数协调装置;接收所述限流参数协调装置发送的阈值变更指示信息;根据所述指示信息确定所述应用服务器的限流阈值;根据确定的限流阈值对面向所述应用服务器的访问请求执行限流。
28.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储实现服务限流方法的程序,该设备通电并通过所述处理器运行该服务限流方法的程序后,执行下述步骤:接收部署在多个应用服务器中的应用限流装置发送的所述应用服务器的负载数据;所述多个应用服务器包括服务调用链上多个应用对应的应用服务器;根据所述多个应用对应的应用服务器的所述负载数据,判断是否变更所述应用服务器的限流阈值;若上述判断结果为是,则向所述应用限流装置发送针对所述应用服务器的阈值变更指示信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811603485.8A CN111367651B (zh) | 2018-12-26 | 2018-12-26 | 服务限流系统、方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811603485.8A CN111367651B (zh) | 2018-12-26 | 2018-12-26 | 服务限流系统、方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111367651A true CN111367651A (zh) | 2020-07-03 |
CN111367651B CN111367651B (zh) | 2023-04-11 |
Family
ID=71208745
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811603485.8A Active CN111367651B (zh) | 2018-12-26 | 2018-12-26 | 服务限流系统、方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111367651B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112769657A (zh) * | 2020-12-26 | 2021-05-07 | 上海优扬新媒信息技术有限公司 | 一种流量控制方法及装置 |
CN112953945A (zh) * | 2021-02-24 | 2021-06-11 | 中国工商银行股份有限公司 | 访问请求处理方法和系统 |
CN113014506A (zh) * | 2021-02-10 | 2021-06-22 | 中国工商银行股份有限公司 | 一种生产运维方法、装置及系统 |
CN113381944A (zh) * | 2021-06-09 | 2021-09-10 | 中国工商银行股份有限公司 | 系统限流方法、装置、电子设备、介质和程序产品 |
CN114928572A (zh) * | 2022-02-28 | 2022-08-19 | 中国农业银行股份有限公司 | 一种分布式系统的流量控制方法、装置、介质及设备 |
CN115242718A (zh) * | 2022-06-21 | 2022-10-25 | 平安科技(深圳)有限公司 | 集群限流方法、装置、设备及介质 |
CN116074384A (zh) * | 2023-01-10 | 2023-05-05 | 安芯网盾(北京)科技有限公司 | 一种控制业务请求数量的方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105635191A (zh) * | 2014-10-27 | 2016-06-01 | 阿里巴巴集团控股有限公司 | 服务流量的调用导向系统及调用导向方法 |
US9413819B1 (en) * | 2014-03-21 | 2016-08-09 | Amazon Technologies, Inc. | Operating system interface implementation using network-accessible services |
CN107370684A (zh) * | 2017-06-15 | 2017-11-21 | 腾讯科技(深圳)有限公司 | 业务限流方法及业务限流装置 |
CN107872402A (zh) * | 2017-11-15 | 2018-04-03 | 北京奇艺世纪科技有限公司 | 全局流量调度的方法、装置及电子设备 |
CN108173938A (zh) * | 2017-12-28 | 2018-06-15 | 泰康保险集团股份有限公司 | 服务器负载分流方法及装置 |
CN108683605A (zh) * | 2018-06-12 | 2018-10-19 | 阿里巴巴集团控股有限公司 | 一种服务调用的限流方法和装置 |
-
2018
- 2018-12-26 CN CN201811603485.8A patent/CN111367651B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9413819B1 (en) * | 2014-03-21 | 2016-08-09 | Amazon Technologies, Inc. | Operating system interface implementation using network-accessible services |
CN105635191A (zh) * | 2014-10-27 | 2016-06-01 | 阿里巴巴集团控股有限公司 | 服务流量的调用导向系统及调用导向方法 |
CN107370684A (zh) * | 2017-06-15 | 2017-11-21 | 腾讯科技(深圳)有限公司 | 业务限流方法及业务限流装置 |
CN107872402A (zh) * | 2017-11-15 | 2018-04-03 | 北京奇艺世纪科技有限公司 | 全局流量调度的方法、装置及电子设备 |
CN108173938A (zh) * | 2017-12-28 | 2018-06-15 | 泰康保险集团股份有限公司 | 服务器负载分流方法及装置 |
CN108683605A (zh) * | 2018-06-12 | 2018-10-19 | 阿里巴巴集团控股有限公司 | 一种服务调用的限流方法和装置 |
Non-Patent Citations (3)
Title |
---|
FELIX MOHR等: "Automated Online Service Composition" * |
张晶;黄小锋;李春阳;: "微服务框架的设计与实现" * |
杨叶宁: "Mashup应用开发技术研究" * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112769657A (zh) * | 2020-12-26 | 2021-05-07 | 上海优扬新媒信息技术有限公司 | 一种流量控制方法及装置 |
CN113014506A (zh) * | 2021-02-10 | 2021-06-22 | 中国工商银行股份有限公司 | 一种生产运维方法、装置及系统 |
CN113014506B (zh) * | 2021-02-10 | 2023-04-07 | 中国工商银行股份有限公司 | 一种生产运维方法、装置及系统 |
CN112953945A (zh) * | 2021-02-24 | 2021-06-11 | 中国工商银行股份有限公司 | 访问请求处理方法和系统 |
CN113381944A (zh) * | 2021-06-09 | 2021-09-10 | 中国工商银行股份有限公司 | 系统限流方法、装置、电子设备、介质和程序产品 |
CN114928572A (zh) * | 2022-02-28 | 2022-08-19 | 中国农业银行股份有限公司 | 一种分布式系统的流量控制方法、装置、介质及设备 |
CN115242718A (zh) * | 2022-06-21 | 2022-10-25 | 平安科技(深圳)有限公司 | 集群限流方法、装置、设备及介质 |
CN115242718B (zh) * | 2022-06-21 | 2024-01-30 | 平安科技(深圳)有限公司 | 集群限流方法、装置、设备及介质 |
CN116074384A (zh) * | 2023-01-10 | 2023-05-05 | 安芯网盾(北京)科技有限公司 | 一种控制业务请求数量的方法及系统 |
CN116074384B (zh) * | 2023-01-10 | 2024-01-30 | 安芯网盾(北京)科技有限公司 | 一种控制业务请求数量的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111367651B (zh) | 2023-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111367651B (zh) | 服务限流系统、方法、装置及电子设备 | |
US10291538B2 (en) | Flow control in connection with an access request | |
US10432551B1 (en) | Network request throttling | |
US11379836B2 (en) | Methods and systems for recording data based on plurality of blockchain networks | |
US9229778B2 (en) | Method and system for dynamic scaling in a cloud environment | |
CN113535721B (zh) | 一种数据写入方法及装置 | |
CN106713028B (zh) | 业务降级方法、装置和分布式任务调度系统 | |
US11050550B2 (en) | Methods and systems for reading data based on plurality of blockchain networks | |
US11500861B2 (en) | Methods and systems for recording data based on plurality of blockchain networks | |
CN110188990B (zh) | 一种资源请求和资金请求分流方法、装置及设备 | |
CN111562884B (zh) | 一种数据存储方法、装置及电子设备 | |
US11005776B2 (en) | Resource allocation using restore credits | |
CN113923216A (zh) | 一种分布式集群限流系统及方法和分布式集群节点 | |
CN114020218B (zh) | 混合重复数据删除调度方法及系统 | |
CN115499513A (zh) | 数据请求的处理方法、装置、计算机设备和存储介质 | |
CN117519956A (zh) | 资源配额确定方法、装置、计算设备及介质 | |
JP2004302525A (ja) | コンピューターシステムの構成装置の性能バランス評価とサイジングを行う装置と方法 | |
US20210157787A1 (en) | Methods and systems for reading data based on plurality of blockchain networks | |
CN109561123B (zh) | 令牌token的缓存方法及装置 | |
US20050038971A1 (en) | Adjustment of free storage capacity for improved usage | |
CN110032488B (zh) | 集群中特定节点的监控系统、方法、装置及业务服务器 | |
CN114201113B (zh) | 多对象存储桶的选择方法、装置及处理器 | |
CN111641704B (zh) | 资源相关数据发送方法、装置、计算机设备和存储介质 | |
CN117407919B (zh) | 敏感数据的处理方法、装置、存储介质和电子设备 | |
CN110650217B (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 |