本发明涉及信息处理技术领域,尤其涉及一种服务接口流控方法及装置。
背景技术:
随着信息技术的不断发展,微服务的应用越来越广泛,其中,每个微服务节点均集成有一个或多个服务接口供其他应用调用。目前,为了保障微服务节点运行的可靠性,通常会对微服务节点的服务接口进行限流或流控,也即仅允许一定数量的请求通过,超过则拒绝请求。
然而现有技术中,通常是基于人工观察各个服务接口的响应情况,分别为微服务节点的各个服务接口设置限流阈值,这种方式不仅效率较低,而且设置的限流阈值往往不够准确,容易导致资源浪费或是资源不够用的问题。
技术实现要素:
本发明实施例提供一种服务接口流控方法及装置,以解决现有技术中对服务接口进行限流控制的准确性较差从而导致资源浪费或是资源不够用的问题。
为了解决上述技术问题,本发明的具体实现方案如下:
第一方面,本发明实施例提供了一种服务接口流控方法。该方法包括:
获取微服务节点的每个服务接口的资源使用参数和能力参数;
根据所述微服务节点的每个服务接口的资源使用参数和能力参数,分别计算每个所述服务接口的限流阈值;
分别根据每个所述服务接口的限流阈值对每个所述服务接口进行流控。
第二方面,本发明实施例还提供一种服务接口流控装置。该服务接口流控装置包括:
第一获取模块,用于获取微服务节点的每个服务接口的资源使用参数和能力参数;
第一计算模块,用于根据所述微服务节点的每个服务接口的资源使用参数和能力参数,分别计算每个所述服务接口的限流阈值;
流控模块,用于分别根据每个所述服务接口的限流阈值对每个所述服务接口进行流控。
第三方面,本发明实施例还提供一种服务接口流控装置,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述的服务接口流控方法的步骤。
第四方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的服务接口流控方法的步骤。
本发明实施例中,通过获取微服务节点的每个服务接口的资源使用参数和能力参数;根据所述微服务节点的每个服务接口的资源使用参数和能力参数,分别计算每个所述服务接口的限流阈值;分别根据每个所述服务接口的限流阈值对每个所述服务接口进行流控。由于综合微服务节点的每个服务接口的资源使用参数和能力参数计算每个服务接口的限流阈值以对各个服务接口进行流控,可以提高服务接口流控的准确性,减少资源浪费或是资源不够用的情况出现。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的服务接口流控方法的流程图;
图2是本发明实施例提供的服务接口流控方法可应用的一种网络架构的示意图;
图3是本发明实施例提供的服务接口流控装置的结构图;
图4是本发明又一实施例提供的服务接口流控装置的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种服务接口流控方法。参见图1,图1是本发明实施例提供的服务接口流控方法的流程图,如图1所示,包括以下步骤:
步骤101、获取微服务节点的每个服务接口的资源使用参数和能力参数。
本实施例中,上述微服务节点可以集成有至少一个服务接口,至少一个服务接口可以被其他应用调用。
上述服务接口的资源使用参数可以是指可以反映服务接口的资源使用情况的参数。可选的,所述服务接口的资源使用参数可以包括但不限于如下至少一项:单位时间cpu的平均使用时间,单位时间内存使用大小的平均值,单位时间网络带宽消耗的平均值。
上述服务接口的能力参数可以是指可以反映服务接口的能力情况的参数。可选的,所述服务接口的能力参数可以包括但不限于如下至少一项:单位时间平均处理耗时,接口基准响应时间,单位时间下游服务接口调用平均耗时,单位时间被调用次数。
需要说明的是,上述单位时间可以根据实际需求进行合理设置,例如,上述单位时间可以是1分钟、30秒钟或1秒钟等,本实施例对此不做限定。
步骤102、根据所述微服务节点的每个服务接口的资源使用参数和能力参数,分别计算每个所述服务接口的限流阈值。
本实施例中,可以综合微服务节点的每个服务接口的资源使用参数和能力参数分别计算每个所述服务接口的限流阈值,由于每个服务接口的限流阈值的计算不仅考虑了其自身的资源使用参数和能力参数,还考虑了其他服务接口的资源使用参数和能力参数,这样可以使得微服务节点的资源可以被充分利用。
步骤103、分别根据每个所述服务接口的限流阈值对每个所述服务接口进行流控。
本发明实施例提供的服务接口流控方法,通过获取微服务节点的每个服务接口的资源使用参数和能力参数;根据所述微服务节点的每个服务接口的资源使用参数和能力参数,分别计算每个所述服务接口的限流阈值;分别根据每个所述服务接口的限流阈值对每个所述服务接口进行流控。由于综合微服务节点的每个服务接口的资源使用参数和能力参数计算每个服务接口的限流阈值以对各个服务接口进行流控,可以提高服务接口流控的准确性,减少资源浪费或是资源不够用的情况出现。
可选的,上述步骤102,也即所述根据所述微服务节点的每个服务接口的资源使用参数和能力参数,分别计算每个所述服务接口的限流阈值,可以包括:
分别根据每个所述服务接口的单位时间cpu的平均使用时间、单位时间内存使用大小的平均值和单位时间网络带宽消耗的平均值,计算每个所述服务接口的资源消耗值;
分别根据每个所述服务接口的单位时间平均处理耗时、接口基准响应时间和单位时间被调用次数计算每个所述服务接口的最大限流阈值;
根据每个所述服务接口的资源消耗值和最大限流阈值,分别计算每个所述服务接口的限流阈值。
本实施例中,上述单位时间cpu的平均使用时间可以是指服务接口在单位时间内cup的平均使用时长,以上述单位时间为1分钟为例,上述单位时间cpu的平均使用时间的单位可以为毫秒。上述单位时间内存使用大小的平均值可以是指服务接口在单位时间内内存的使用大小的平均值,也即服务接口在单位时间内所占用的内存空间的大小的平均值,其单位可以是字节。上述单位时间网络带宽消耗的平均值可以是指服务接口在单位时间内所消耗的网络带宽的平均值,其单位可以是字节。
上述单位时间平均处理耗时可以是指服务接口在单位时间内进行处理的平均耗时,以单位时间为1分钟为例,上述单位时间平均处理耗时的单位可以为毫秒。上述接口基准响应时间可以是指服务接口的响应时间的基准值,其单位可以为毫秒。上述单位时间被调用次数可以是指服务接口在单位时间内被调用的次数。
可选的,所述分别根据每个所述服务接口的单位时间cpu的平均使用时间、单位时间内存使用大小的平均值和单位时间网络带宽消耗的平均值,计算每个所述服务接口的资源消耗值,可以包括:基于预先训练的机器学习模型,分别根据每个所述服务接口的单位时间cpu的平均使用时间、单位时间内存使用大小的平均值和单位时间网络带宽消耗的平均值,计算每个所述服务接口的资源消耗值。
可选的,所述分别根据每个所述服务接口的单位时间cpu的平均使用时间、单位时间内存使用大小的平均值和单位时间网络带宽消耗的平均值,计算每个所述服务接口的资源消耗值,可以包括:
根据计算公式r=cvt*b1+uvm*b2+nvm*b3,分别计算每个所述服务接口的资源消耗值;
其中,r表示资源消耗值,cvt表示单位时间cpu的平均使用时间,uvm表示单位时间内存使用大小的平均值,nvm表示单位时间网络带宽消耗,b1表示第二预设值,b2表示第三预设值,b3表示第四预设值。
上述b1、b2和b3分别可以表示cvt、uvm、nvm影响资源消耗的占比比例,均可以根据实际需求进行合理设置。例如,其中b1所占比例的取值范围可以为[40%,80%],其取值范围可以为[400,800];上述b2所占比例的取值范围可以为[10%,100%],其取值范围可以为[0.001,0.01];上述b3所占比例的取值范围可以为(0%,10%],其取值范围可以为(0,0.010]。本实施例中可以优先选取b1为600,优先选取b2为0.003,优先选取b3为0.0025。
具体的,可以分别根据各个服务接口的单位时间cpu的平均使用时间、单位时间内存使用大小的平均值和单位时间网络带宽消耗的平均值,采用上述计算公式计算各个服务接口的资源消耗值。例如,上述b1可以是600,上述b2可以是0.003,上述b3可以是0.0025,微服务节点存在服务接口i1和i2,服务接口i1的单位时间cpu的平均使用时间、单位时间内存使用大小的平均值和单位时间网络带宽消耗分别为6ms、128000byte(即字节)、32000byte,服务接口i2的单位时间cpu的平均使用时间、单位时间内存使用大小的平均值和单位时间网络带宽消耗分别为45ms、512000byte、16000byte,则可以计算得到服务接口i1的资源消耗值r1为4784,服务接口i2的资源消耗值r2为28576。
本实施例根据计算公式r=cvt*b1+uvm*b2+nvm*b3,分别计算每个所述服务接口的资源消耗值,可以使得计算得到的各个服务接口的资源消耗值可以较为准确的反映各个服务接口的资源消耗情况。
可选的,所述分别根据每个所述服务接口的单位时间平均处理耗时、接口基准响应时间和单位时间被调用次数计算每个所述服务接口的最大限流阈值,可以包括:
在第一服务接口存在调用外部接口的情况下,根据所述第一服务接口的单位时间平均处理耗时、接口基准响应时间、单位时间被调用次数和单位时间下游服务接口调用平均耗时计算所述第一服务接口的最大限流阈值;
在第一服务接口不存在调用外部接口的情况下,根据所述第一服务接口的单位时间平均处理耗时、接口基准响应时间和单位时间被调用次数计算所述第一服务接口的最大限流阈值;
其中,所述第一服务接口为所述微服务节点中的任意服务接口。
需要说明的是,上述微服务节点的每个服务接口均可以采用本实施例方式提供的方式计算最大限流阈值,本实施例仅是以第一服务接口为例进行说明。
实际应用中,在服务接口存在调用外部接口的情况下该服务接口的能力情况往往会受其调用的外部接口能力的影响,因此,本实施例在服务接口调用外部接口的情况下,综合该服务接口的单位时间平均处理耗时、接口基准响应时间、单位时间被调用次数和单位时间下游服务接口调用平均耗时计算该服务接口的最大限流阈值。其中,上述单位时间下游服务接口调用平均耗时可以是指在单位时间内调用下游服务接口的平均耗时,以单位时间为1分钟为例,上述单位时间下游服务接口调用平均耗时的单位可以是毫米。
本实施例中,在第一服务接口存在调用外部接口的情况下,根据所述第一服务接口的单位时间平均处理耗时、接口基准响应时间、单位时间被调用次数和单位时间下游服务接口调用平均耗时计算所述第一服务接口的最大限流阈值,在第一服务接口不存在调用外部接口的情况下,根据所述第一服务接口的单位时间平均处理耗时、接口基准响应时间和单位时间被调用次数计算所述第一服务接口的最大限流阈值,这样可以使得计算得到的第一服务接口的最大限流阈值可以更为准确的反映第一服务接口的最大能力情况。
可选的,所述在第一服务接口存在调用外部接口的情况下,根据所述第一服务接口的单位时间平均处理耗时、接口基准响应时间、单位时间被调用次数和单位时间下游服务接口调用平均耗时计算所述第一服务接口的最大限流阈值,包括:
在第一服务接口存在调用外部接口的情况下,根据计算公式l=a1*cc*(rt/pvt)*(ncvt/pvt),计算所述第一服务接口的最大限流阈值;
所述在第一服务接口不存在调用外部接口的情况下,根据所述第一服务接口的单位时间平均处理耗时、接口基准响应时间和单位时间被调用次数计算所述第一服务接口的最大限流阈值,包括:
在第一服务接口不存在调用外部接口的情况下,根据计算公式l=a1*cc*(rt/pvt),计算所述第一服务接口的最大限流阈值;
其中,l表示最大限流阈值,a1表示第一预设值,cc表示单位时间被调用次数,rt表示接口基准响应时间,pvt表示单位时间平均处理耗时,ncvt表示单位时间下游服务接口调用平均耗时。
上述a1可以根据实际需求进行合理设置,例如,a1的取值范围可以为[5,8]。本实施例中可以优先选取a1为8。
本实施例在第一服务接口存在调用外部接口的情况下,根据计算公式l=a1*cc*(rt/pvt)*(ncvt/pvt),计算所述第一服务接口的最大限流阈值;在第一服务接口不存在调用外部接口的情况下,根据计算公式l=a1*cc*(rt/pvt),计算所述第一服务接口的最大限流阈值,可以使得计算得到第一服务接口的最大限流阈值可以更为准确的反映第一服务接口的最大能力情况。
可选的,所述根据所述微服务节点的每个服务接口的资源使用参数和能力参数,分别计算每个所述服务接口的限流阈值之前,所述方法还可以包括:
获取所述微服务节点的服务级别和所述微服务节点中每个服务接口的接口级别;
分别根据所述微服务节点的服务级别和所述微服务节点中每个服务接口的接口级别,计算每个所述服务接口的接口权重;
所述根据每个所述服务接口的资源消耗值和最大限流阈值,分别计算每个所述服务接口的限流阈值,可以包括:
根据每个所述服务接口的资源消耗值、最大限流阈值和接口权重,分别计算每个所述服务接口的限流阈值。
本实施例中,上述微服务节点的服务级别可以用于反映微服务节点的重要程度。可选的,上述服务级别可以通过1至255中的任一数值表示,其中,数值越大,服务级别越高。上述服务接口的接口级别可以用于反映服务接口的重要程度。可选的,上述接口级别也可以通过1至255中的任一数值表示,其中,数值越大,接口级别越高。
本实施例根据每个所述服务接口的资源消耗值、最大限流阈值和接口权重,分别计算每个所述服务接口的限流阈值,可以优先保证重要程度越高的微服务节点中重要程度越高的服务接口的正常工作。
可选的,所述分别根据所述微服务节点的服务级别和所述微服务节点中每个服务接口的接口级别,计算每个所述服务接口的接口权重,可以包括:
根据计算公式w=sl+d1*il,分别计算每个所述服务接口的接口权重;
其中,w表示接口权重,sl表示服务级别,il表示接口级别,d1表示第六预设值。
上述d1可以根据实际需求以及接口级别影响接口权重的重要性进行合理设置,上述d1的取值范围可以是[0.1,1]。本实施例中可以优先选取上述d1为0.3。基于微服务节点的服务级别和各个服务接口的接口级别,按照计算公式w=sl+d1*il分别计算各个服务接口的接口权重,可以使得计算得到的服务接口的接口权重可以较为准确的反映该服务接口的重要程度或优先级。
可选的,所述根据所述微服务节点的每个服务接口的资源使用参数和能力参数,分别计算每个所述服务接口的限流阈值之前,所述方法还可以包括:
获取所述微服务节点的资源使用参数,所述微服务节点的资源使用参数包括如下至少一项:cpu利用率,内存利用率,网络带宽利用率;
根据所述微服务节点的资源使用参数计算限流加权值;
所述根据每个所述服务接口的资源消耗值、最大限流阈值和接口权重,分别计算每个所述服务接口的限流阈值,可以包括:
根据所述限流加权值以及每个所述服务接口的资源消耗值、最大限流阈值和接口权重,分别计算每个所述服务接口的限流阈值。
本实施例中,上述微服务节点的资源使用参数可以是指可以反映微服务节点的资源使用情况的参数,其中,微服务节点的资源使用参数可以包括但不限于如下至少一项:cpu利用率,内存利用率,网络带宽利用率。上述限流加权值可以直观反映微服务节点的资源的使用情况。
可选的,所述根据所述微服务节点的资源使用参数计算限流加权值,可以包括:
根据计算公式p=c1/max(cvp,mvp,nvp),计算限流加权值;
其中,p表示限流加权值,cvp表示cpu利用率,mvp表示内存利用率,nvp表示网络带宽利用率,c1表示第五预设值。
上述可以根据实际需求进行合理设置,例如,上述c1的取值范围可以为[0.1,0.9]。本实施例中,可以优先选取上述c1为0.8。上述max(cvp,mvp,nvp)表示取cvp、mvp和nvp中的最大值。
本实施例根据所述限流加权值以及每个所述服务接口的资源消耗值、最大限流阈值和接口权重,分别计算每个所述服务接口的限流阈值,可以使得计算得到的服务接口的限流阈值更为准确。
可选的,所述根据所述限流加权值以及每个所述服务接口的资源消耗值、最大限流阈值和接口权重,分别计算每个所述服务接口的限流阈值,包括:
根据计算公式
其中,si表示所述微服务节点中第i个服务接口的限流阈值,li表示所述微服务节点中第i个服务接口的最大限流阈值,ri表示所述微服务节点中第i个服务接口的资源消耗值,wi表示所述微服务节点中第i个服务接口的接口权重,n表示所述微服务节点中服务接口数量,p表示限流加权值。
本实施例中,可以根据所述限流加权值以及每个所述服务接口的资源消耗值、最大限流阈值和接口权重,按照上述计算公式
例如,微服务节点a存在3个服务接口,也即服务接口i1、服务接口i2和服务接口i3,服务接口i1存在调用外部接口c1;当前cvp=0.2,mvp=0.4,nvp=0.05;服务接口i1的pvt=546ms,cvt=6ms,uvm=128000byte,nvm=32000byte,外部接口c1的调用耗时ncvt=300ms,cc=60,sl=56,il=20,rt=1500ms;服务接口i2的pvt=1200ms,cvt=45ms,uvm=512000byte,nvm=16000byte,cc=10,sl=56,il=128,rt=2500ms;服务接口i3的pvt=24ms,cvt=1ms,uvm=234000byte,nvm=24000byte,cc=30,sl=56,il=3,rt=1000ms。
基于上述内容,根据计算公式r=cvt*600+uvm*0.003+nvm*0.0025,可以得到服务接口i1的资源消耗值r1=4784,服务接口i2的资源消耗值r2=28576,服务接口i3的资源消耗值r3=1363;根据计算公式l=8*cc*(rt/pvt)*(ncvt/pvt),可以得到服务接口i1的最大限流阈值l1=712,根据计算公式l=8*cc*(rt/pvt),可以得到服务接口i2的最大限流阈值l2=166,服务接口i3的最大限流阈值l3=439;根据计算公式w=sl+0.3*il可以得到服务接口i1的接口权重w1=62,服务接口i2的接口权重w2=94.4,服务接口i1的接口权重w3=56.9;根据计算公式p=c1/max(cvp,mvp,nvp),计算得到限流加权值p=2;则根据计算公式
本实施例根据所述限流加权值以及每个所述服务接口的资源消耗值、最大限流阈值和接口权重,按照上述计算公式
以下结合图2对本发明实施例提供的服务接口流控方法进行说明:
参见图2,第一微服务节点包括接口1至接口n1,第二微服务节点包括接口1至接口n2,其中,n1和n2均可以是任意大于1的整数。
具体的,可以分别通过各个微服务节点上部署或集成的流控配置同步与采样组件每隔预设时长采集各个微服务节点的各个服务接口的流控相关数据,其中,该流控相关数据可以包括但不限于如下的至少一项:单位时间cpu的平均使用时间,单位时间内存使用大小的平均值,单位时间网络带宽消耗的平均值,单位时间平均处理耗时,接口基准响应时间,单位时间下游服务接口调用平均耗时,单位时间被调用次数,服务级别,接口权重,cpu利用率,内存利用率,网络带宽利用率,等等。
流控配置同步与采样组件可以将每隔预设时间采集的各个微服务节点的各个服务接口的流控相关数据上传至限流策略实时计算中心,限流策略实时计算中心可以基于各个微服务节点的各个服务接口的流控相关数据计算各个服务接口的限流阈值,其中,各个服务接口的限流阈值的计算方式可以参见前述实施例的相关描述,在此不做赘述。
限流策略实时计算中心在计算得到各个服务接口的限流阈值之后,可以基于限流配置管理中心推送给对应的微服务节点的流控配置同步与采样组件,通过对应的流控配置同步与采样组件生效接收到的流控配置,例如,生效接收到个各个服务接口的限流阈值。
需要说明的是,上述流控配置同步与采样组件可以理解为部署在微服务节点的用于流控配置同步与流控相关参数采样的软件模块,上述限流策略实时计算中心和限流配置管理中心可以理解为部署在不同于微服务节点的服务器中的软件模块。
综上可知,本发明实施例提供的服务接口流控方法,可以实现自适应的服务接口限流控制,且无需人工观察服务接口响应情况,只需告知预期能接受的接口响应时间(即接口基准响应时间)则可自动计算出较为合适的限流阈值。可以根据不同时间段、不同的业务流量特点,自动调整限流阈值,保证较为核心的高权重的业务正常开展,并且不会导致其他业务接口完全不可用,实现最大限度利用服务器和带宽资源。此外,可以通过提供限流组件sdk方式和微服务集成,不干扰业务逻辑,并且可以在限流配置管理中心,手动调整接口权重,不需要对业务接口做改造处理,部署方式简单,计算方法简单,能较大的节约流控成本。
参见图3,图3是本发明实施例提供的服务接口流控装置的结构图。如图3所示,服务接口流控装置300包括:
第一获取模块301,用于获取微服务节点的每个服务接口的资源使用参数和能力参数;
第一计算模块302,用于根据所述微服务节点的每个服务接口的资源使用参数和能力参数,分别计算每个所述服务接口的限流阈值;
流控模块303,用于分别根据每个所述服务接口的限流阈值对每个所述服务接口进行流控。
可选的,所述服务接口的资源使用参数包括如下至少一项:单位时间cpu的平均使用时间,单位时间内存使用大小的平均值,单位时间网络带宽消耗的平均值;
所述服务接口的能力参数包括如下至少一项:单位时间平均处理耗时,接口基准响应时间,单位时间下游服务接口调用平均耗时,单位时间被调用次数。
可选的,所述第一计算模块,包括:
第一计算单元,用于分别根据每个所述服务接口的单位时间cpu的平均使用时间、单位时间内存使用大小的平均值和单位时间网络带宽消耗的平均值,计算每个所述服务接口的资源消耗值;
第二计算单元,用于分别根据每个所述服务接口的单位时间平均处理耗时、接口基准响应时间和单位时间被调用次数计算每个所述服务接口的最大限流阈值;
第三计算单元,用于根据每个所述服务接口的资源消耗值和最大限流阈值,分别计算每个所述服务接口的限流阈值。
可选的,所述第二计算单元具体用于:
在第一服务接口存在调用外部接口的情况下,根据所述第一服务接口的单位时间平均处理耗时、接口基准响应时间、单位时间被调用次数和单位时间下游服务接口调用平均耗时计算所述第一服务接口的最大限流阈值;
在第一服务接口不存在调用外部接口的情况下,根据所述第一服务接口的单位时间平均处理耗时、接口基准响应时间和单位时间被调用次数计算所述第一服务接口的最大限流阈值;
其中,所述第一服务接口为所述微服务节点中的任意服务接口。
可选的,所述第二计算单元具体用于:
在第一服务接口存在调用外部接口的情况下,根据计算公式l=a1*cc*(rt/pvt)*(ncvt/pvt),计算所述第一服务接口的最大限流阈值;
在第一服务接口不存在调用外部接口的情况下,根据计算公式l=a1*cc*(rt/pvt),计算所述第一服务接口的最大限流阈值;
其中,l表示最大限流阈值,a1表示第一预设值,cc表示单位时间被调用次数,rt表示接口基准响应时间,pvt表示单位时间平均处理耗时,ncvt表示单位时间下游服务接口调用平均耗时。
可选的,所述第一计算单元具体用于:
根据计算公式r=cvt*b1+uvm*b2+nvm*b3,分别计算每个所述服务接口的资源消耗值;
其中,r表示资源消耗值,cvt表示单位时间cpu的平均使用时间,uvm表示单位时间内存使用大小的平均值,nvm表示单位时间网络带宽消耗,b1表示第二预设值,b2表示第三预设值,b3表示第四预设值。
可选的,所述装置还包括:
第二获取模块,用于所述根据所述微服务节点的每个服务接口的资源使用参数和能力参数,分别计算每个所述服务接口的限流阈值之前,获取所述微服务节点的服务级别和所述微服务节点中每个服务接口的接口级别;
第二计算模块,用于分别根据所述微服务节点的服务级别和所述微服务节点中每个服务接口的接口级别,计算每个所述服务接口的接口权重;
所述第三计算单元具体用于:
根据每个所述服务接口的资源消耗值、最大限流阈值和接口权重,分别计算每个所述服务接口的限流阈值。
可选的,所述装置还包括:
第三获取模块,用于所述根据所述微服务节点的每个服务接口的资源使用参数和能力参数,分别计算每个所述服务接口的限流阈值之前,获取所述微服务节点的资源使用参数,所述微服务节点的资源使用参数包括如下至少一项:cpu利用率,内存利用率,网络带宽利用率;
第四计算模块,用于根据所述微服务节点的资源使用参数计算限流加权值;
所述第三计算单元具体用于:
根据所述限流加权值以及每个所述服务接口的资源消耗值、最大限流阈值和接口权重,分别计算每个所述服务接口的限流阈值。
可选的,所述第三计算单元具体用于:
根据计算公式
其中,si表示所述微服务节点中第i个服务接口的限流阈值,li表示所述微服务节点中第i个服务接口的最大限流阈值,ri表示所述微服务节点中第i个服务接口的资源消耗值,wi表示所述微服务节点中第i个服务接口的接口权重,n表示所述微服务节点中服务接口数量,p表示限流加权值。
可选的,所述第四计算模块具体用于:
根据计算公式p=c1/max(cvp,mvp,nvp),计算限流加权值;
其中,p表示限流加权值,cvp表示cpu利用率,mvp表示内存利用率,nvp表示网络带宽利用率,c1表示第五预设值。
可选的,所述第二计算模块具体用于:
根据计算公式w=sl+d1*il,分别计算每个所述服务接口的接口权重;
其中,w表示接口权重,sl表示服务级别,il表示接口级别,d1表示第六预设值。
本发明实施例提供的服务接口流控装置300能够实现上述方法实施例中的各个过程,为避免重复,这里不再赘述。
本发明实施例的服务接口流控装置300,第一获取模块301,用于获取微服务节点的每个服务接口的资源使用参数和能力参数;第一计算模块302,用于根据所述微服务节点的每个服务接口的资源使用参数和能力参数,分别计算每个所述服务接口的限流阈值;流控模块303,用于分别根据每个所述服务接口的限流阈值对每个所述服务接口进行流控。由于综合微服务节点的每个服务接口的资源使用参数和能力参数计算每个服务接口的限流阈值以对各个服务接口进行流控,可以提高服务接口流控的准确性,减少资源浪费或是资源不够用的情况出现。
参见图4,图4是本发明又一实施提供的服务接口流控装置的结构图,如图4所示,服务接口流控装置400包括:处理器401、存储器402及存储在所述存储器402上并可在所述处理器上运行的计算机程序,数据发送装置400中的各个组件通过总线接口403耦合在一起,所述计算机程序被所述处理器401执行时实现如下步骤:
获取微服务节点的每个服务接口的资源使用参数和能力参数;
根据所述微服务节点的每个服务接口的资源使用参数和能力参数,分别计算每个所述服务接口的限流阈值;
分别根据每个所述服务接口的限流阈值对每个所述服务接口进行流控。
可选的,所述服务接口的资源使用参数包括如下至少一项:单位时间cpu的平均使用时间,单位时间内存使用大小的平均值,单位时间网络带宽消耗的平均值;
所述服务接口的能力参数包括如下至少一项:单位时间平均处理耗时,接口基准响应时间,单位时间下游服务接口调用平均耗时,单位时间被调用次数。
可选的,所述计算机程序被所述处理器401执行时还用于:
分别根据每个所述服务接口的单位时间cpu的平均使用时间、单位时间内存使用大小的平均值和单位时间网络带宽消耗的平均值,计算每个所述服务接口的资源消耗值;
分别根据每个所述服务接口的单位时间平均处理耗时、接口基准响应时间和单位时间被调用次数计算每个所述服务接口的最大限流阈值;
根据每个所述服务接口的资源消耗值和最大限流阈值,分别计算每个所述服务接口的限流阈值。
可选的,所述计算机程序被所述处理器401执行时还用于:
在第一服务接口存在调用外部接口的情况下,根据所述第一服务接口的单位时间平均处理耗时、接口基准响应时间、单位时间被调用次数和单位时间下游服务接口调用平均耗时计算所述第一服务接口的最大限流阈值;
在第一服务接口不存在调用外部接口的情况下,根据所述第一服务接口的单位时间平均处理耗时、接口基准响应时间和单位时间被调用次数计算所述第一服务接口的最大限流阈值;
其中,所述第一服务接口为所述微服务节点中的任意服务接口。
可选的,所述计算机程序被所述处理器401执行时还用于:
在第一服务接口存在调用外部接口的情况下,根据计算公式l=a1*cc*(rt/pvt)*(ncvt/pvt),计算所述第一服务接口的最大限流阈值;
在第一服务接口不存在调用外部接口的情况下,根据计算公式l=a1*cc*(rt/pvt),计算所述第一服务接口的最大限流阈值;
其中,l表示最大限流阈值,a1表示第一预设值,cc表示单位时间被调用次数,rt表示接口基准响应时间,pvt表示单位时间平均处理耗时,ncvt表示单位时间下游服务接口调用平均耗时。
可选的,所述计算机程序被所述处理器401执行时还用于:
根据计算公式r=cvt*b1+uvm*b2+nvm*b3,分别计算每个所述服务接口的资源消耗值;
其中,r表示资源消耗值,cvt表示单位时间cpu的平均使用时间,uvm表示单位时间内存使用大小的平均值,nvm表示单位时间网络带宽消耗,b1表示第二预设值,b2表示第三预设值,b3表示第四预设值。
可选的,所述计算机程序被所述处理器401执行时还用于:
所述根据所述微服务节点的每个服务接口的资源使用参数和能力参数,分别计算每个所述服务接口的限流阈值之前,获取所述微服务节点的服务级别和所述微服务节点中每个服务接口的接口级别;
分别根据所述微服务节点的服务级别和所述微服务节点中每个服务接口的接口级别,计算每个所述服务接口的接口权重;
根据每个所述服务接口的资源消耗值、最大限流阈值和接口权重,分别计算每个所述服务接口的限流阈值。
可选的,所述计算机程序被所述处理器401执行时还用于:
所述根据所述微服务节点的每个服务接口的资源使用参数和能力参数,分别计算每个所述服务接口的限流阈值之前,获取所述微服务节点的资源使用参数,所述微服务节点的资源使用参数包括如下至少一项:cpu利用率,内存利用率,网络带宽利用率;
根据所述微服务节点的资源使用参数计算限流加权值;
根据所述限流加权值以及每个所述服务接口的资源消耗值、最大限流阈值和接口权重,分别计算每个所述服务接口的限流阈值。
可选的,所述计算机程序被所述处理器401执行时还用于:
根据计算公式
其中,si表示所述微服务节点中第i个服务接口的限流阈值,li表示所述微服务节点中第i个服务接口的最大限流阈值,ri表示所述微服务节点中第i个服务接口的资源消耗值,wi表示所述微服务节点中第i个服务接口的接口权重,n表示所述微服务节点中服务接口数量,p表示限流加权值。
可选的,所述计算机程序被所述处理器401执行时还用于:
根据计算公式p=c1/max(cvp,mvp,nvp),计算限流加权值;
其中,p表示限流加权值,cvp表示cpu利用率,mvp表示内存利用率,nvp表示网络带宽利用率,c1表示第五预设值。
可选的,所述计算机程序被所述处理器401执行时还用于:
根据计算公式w=sl+d1*il,分别计算每个所述服务接口的接口权重;
其中,w表示接口权重,sl表示服务级别,il表示接口级别,d1表示第六预设值。
本发明实施例还提供一种服务接口流控装置,包括处理器,存储器,存储在存储器上并可在所述处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述服务接口流控方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述服务接口流控方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(read-onlymemory,简称rom)、随机存取存储器(randomaccessmemory,简称ram)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。