一种流量控制方法、装置以及计算设备与流程

文档序号:22397010发布日期:2020-09-29 18:06阅读:130来源:国知局
一种流量控制方法、装置以及计算设备与流程

本发明涉及物联网领域,具体涉及一种流量控制方法、装置以及计算设备。



背景技术:

限流是对物联网(internetofthings,iot)的设备端访问服务端入口的流量速率进行控制,其中流量可以是带宽、每秒请求数、每秒事务数等。iot产品的设备形态多样,行为不可控,服务端在面临设备连接洪峰甚至恶意流量攻击等场景时,限流对保证系统的平稳运行起到了关键性的作用。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的流量控制方法、装置以及计算设备。

根据本发明的一个方面,提供了一种流量控制方法,在服务端执行,所述服务端配置有多个限流器,每个限流器与一业务场景相关联,所述方法包括:

根据设备端发送的业务请求,确定请求的业务场景;

根据所述请求的业务场景从所述多个限流器中匹配出目标限流器,其中,所述请求的业务场景包含于与所述目标限流器所关联的业务场景中;

通过所述目标限流器对所述业务请求进行限流处理。

可选地,在根据本发明的流量控制方法中,与限流器相关联的业务场景由业务参数集表示,所述业务参数集包括如下参数中的至少一个:限流的对象、对象的属性、属性的类型、流量上限、限流的时间单位和对象的取值范围。

可选地,在根据本发明的流量控制方法中,所述请求的业务场景由请求参数集表示,所述请求参数集包括如下参数中的至少一个:发起请求的对象、对象的属性和属性的类型。

可选地,在根据本发明的流量控制方法中,所述对象包括设备、产品和租户;所述对象的属性包括ip地址、连接和消息;所述属性的类型包括带宽、次数和频率。

可选地,在根据本发明的流量控制方法中,所述业务参数集和请求参数集还包括扩展标签,所述扩展标签是用于对所述对象和/或对象的属性进一步限定的标识。

可选地,在根据本发明的流量控制方法中,所述多个限流器是以限流的对象为主键、以对象的取值范围为次键进行优先级排序;所述根据所述请求的业务场景从所述多个限流器中匹配出目标限流器,包括:按照优先级从高到低的顺序,从所述多个限流器中匹配出目标限流器。

可选地,在根据本发明的流量控制方法中,所述通过所述目标限流器对所述业务请求进行限流处理包括:当本地可用令牌数小于或等于0时,执行与目标限流器关联的限流动作。

可选地,在根据本发明的流量控制方法中,所述限流动作包括:拒绝、延迟和静默。

可选地,在根据本发明的流量控制方法中,所述目标限流器按照如下方式确定本地可用令牌数:基于与目标限流器关联的令牌生成算法,生成令牌桶中的令牌,其中所述令牌桶中的令牌数目为集群全局令牌数;获取集群已消耗令牌数和本地已消耗令牌数;基于集群全局令牌数、集群已消耗令牌数和本地已消耗令牌数,计算本地可用令牌数。

可选地,在根据本发明的流量控制方法中,所述基于集群全局令牌数、集群已消耗令牌数和本地已消耗令牌数,计算本地可用令牌数,包括:根据集群全局令牌数和集群已消耗令牌数,确定集群可用令牌数;根据本服务端的健康度以及集群健康度,确定集群可用令牌数中可分配给本服务端的令牌数;根据可分配给本服务端的令牌数和本地已消耗令牌数,计算本地可用令牌数;其中,集群健康度为集群中各服务端的健康度的平均值,各服务端的健康度基于该服务端的资源负载情况所确定。

根据本发明的另一方面,提供一种流量控制装置,应用在服务端,所述服务端配置有多个限流器,每个限流器与一业务场景相关联,所述装置包括:

请求场景确定单元,适于根据设备端发送的业务请求,确定请求的业务场景;

匹配单元,适于根据所述请求的业务场景从所述多个限流器中匹配出目标限流器,其中,所述请求的业务场景包含于与所述目标限流器所关联的业务场景中;

限流处理单元,适于通过所述目标限流器对所述业务请求进行限流处理。

根据本发明的又一方面,提供一种计算设备,包括:

一个或多个处理器;

存储器;

一个或多个程序,其中所述一个或多个程序存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行根据上述的方法中的任一方法的指令。

根据本发明的又一方面,提供一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序包括指令,所述指令当由计算设备执行时,使得所述计算设备执行根据上述方法中的任一方法。

根据本发明的流量控制方案,在服务端配置多个限流器,每个限流器对应一个限流的业务场景,通过请求的业务场景与限流的业务场景进行匹配来选择目标限流器,能够实现集群环境下的多场景自适应限流。进一步,限流器的限流算法参数还可以根据从健康中心获取到的监控数据进行动态调整,从而使得集群的实际流量曲线更加符合预期。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本发明一个实施例的流量控制系统100的示意图;

图2示出了根据本发明一个实施例的计算设备200的示意图;

图3示出了根据本发明一个实施例的流量控制方法300的流程图;

图4示出了根据本发明一个实施例的流量控制装置400的示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

图1示出了根据本发明一个实施例的流量控制系统100的示意图。如图1所示,系统100包括设备端和服务端集群,设备端例如可以是各种类型的物联网设备,服务端集群包括多个服务端,服务端可以是业务服务器,通过将多个业务服务器集中起来,可以为设备端提供各种服务。设备端发送业务请求到服务端集群,由服务端集群执行相应的业务处理,并且,在满足限流条件时,服务端集群还会对业务请求进行限流处理。

在物联网中,设备端数量通常较大,因此,系统100中还可以包括负载均衡服务器,设备端发起的业务请求首先到达负载均衡服务器,由负载均衡服务器根据预定的负载均衡算法,将业务请求分发到相应的业务服务器。

系统100中还可以包括健康中心,健康中心包括一台或多台服务器。健康中心与服务端集群中的各业务服务器连接,能够采集(例如按照预定周期采集)各业务服务器的资源负载数据。资源负载数据例如为如下数据中的一个或多个:cpu占用率、内存(memory)占用率、请求的响应时间(rt)、带宽(bandwidth)占用率、每秒请求数(qps)、每秒事务数(tps)。

健康中心采集到资源负载数据后,可以根据这些资源负载数据来计算单机健康度(每个业务服务器的健康度)和集群健康度(例如为集群中所有业务服务器的健康度的平均值)。业务服务器的单机健康度越高,表示该业务服务器的处理能力越强,能够处理更多的业务请求;集群健康度越高,表示集群中所有业务服务器作为一个整体的处理能力越强,能够处理更多的业务请求。

以资源负载数据6元组(cpu,memory,rt,bandwidth,qps,tps)为例,某个业务服务器的单机健康度h计算方法是,对6元组中的每个元素,对其当前值求倒后加权求和,具体为:

h=sum(max(i)/cur(i)*weight(i));

其中,max(i)表示6元组中第i个元素的理论最大值,假设rt单位为ms,bandwidth单位为m,对应的max6元组可取值(1,1,1000,100,1000,1000);cur(i)表示6元组中第i个元素的当前值;weight(i)表示6元组中第i个元素的权重值,可取值为(0.3,0.2,0.2,0.1,0.1,0.1);sum表示遍历6元组对公式求和。

集群健康度hc的计算方法为,集群内所有业务服务器的单机健康度取平均值:

hc=sum(h(j))/n;

其中,n是集群内业务服务器的数量,h(j)是第j台业务服务器的单机健康度,sum是对所有n台服务器的单机健康度求和。

另外,健康中心还可以根据单机健康度和集群健康度,来评估各业务服务器的单机重要度,例如第j台业务服务器的单机重要度:v(j)=h(j)/hc。可见,单机健康度越大,对应的单机重要度也就越高。

各业务服务器可以定期或者按需从健康中心获取到上述健康数据,包括单机健康度、集群健康度和单机重要度。

如前所述,现有技术中的限流方案大都是单一场景、单机、单策略限流,不能在集群环境下针对多场景动态自适应调整限流策略。根据本发明的实施例,系统100中还包括配置中心,配置中心包括一台或多台服务器,配置中心与服务端集群中的各业务服务器连接,通过配置中心,可以为集群中的各业务服务器配置多条限流规则,每条限流规则包括与限流器关联的业务场景(简称为限流场景)、限流算法和限流动作。关于限流场景、限流算法和限流动作的详细描述请参见后文。

业务服务器可以从配置中心获取关于限流的配置数据,将配置数据解析为限流规则,并根据限流规则构造限流器。其中,每个限流器对应一条限流规则,也就是说,每个限流器对应一个限流场景,以及与限流场景关联的限流算法和限流动作。在图1中,共配置了n条限流规则,这样,在集群所包括的n个业务服务器中,每个业务服务器并包括了n个限流器。

业务服务器接收到设备端发送的业务请求时,可以根据该业务请求来确定请求的业务场景(简称为请求场景),例如,根据业务请求中的业务参数构造所述请求场景。然后,根据请求场景与限流场景进行匹配,从而匹配到最佳的限流器,并由匹配到的限流器来执行对应的限流算法和限流动作。并且,限流算法的算法参数可以根据从健康中心获取到的监控数据进行动态调整。

需要说明的是,在本发明实施例中,限流算法包括令牌生成算法和本地可用令牌数计算方法。各业务服务器中的各限流器采用相应的令牌生成算法,来生成与该限流器对应的令牌桶中的令牌,且该令牌桶中的令牌数目为集群全局令牌数,即集群中所有业务服务器在该限流器对应的业务场景下,可以使用的令牌总数;然后,基于集群全局令牌数、集群已消耗令牌数(集群中所有业务服务器消耗的令牌数之和)和本地已消耗令牌数(本业务服务器消耗的令牌数),来计算本地可用令牌数。各业务服务器的限流器是根据相应的本地可用令牌数(小于或等于0时),来确定是否对该业务请求执行相应的限流动作。

因此,系统100中还可以包括分布式缓存,每个业务服务器可以把单机令牌数据同步到分布式缓存中,并从分布式缓存中同步集群令牌数据,以便进行本地可用令牌数的计算。

本发明实施例的的流量控制方法可以在集群中的服务端执行,各服务端具体可以实现为图2所示的计算设备200。如图2所示,在基本的配置202中,计算设备200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器206之间的通信。

取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(μp)、微控制器(μc)、数字信息处理器(dsp)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(alu)、浮点数单元(fpu)、数字信号处理核心(dsp核心)或者它们的任何组合。示例的存储器控制器218可以与处理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。

取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如ram)、非易失性存储器(诸如rom、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统220、一个或者多个应用222以及程序数据224。应用222实际上是多条程序指令,其用于指示处理器204执行相应的操作。在一些实施方式中,应用222可以布置为在操作系统上使得处理器204利用程序数据224进行操作。

计算设备200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置202经由总线/接口控制器230的通信的接口总线240。示例的输出设备242包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个a/v端口252与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多个i/o端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他计算设备262通过网络通信链路的通信。

网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(rf)、微波、红外(ir)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。

在根据本发明的计算设备200中,应用222包括流量控制装置400,装置400包括多条程序指令,这些程序指令可以指示处理器104执行流量控制方法300。

图3示出了根据本发明一个实施例的流量控制方法300的流程图。方法300适于在服务端(例如前述计算设备200)中执行,服务端可以从配置中心获取关于限流的配置数据,将配置数据解析为限流规则,并根据限流规则构造限流器。通常,配置数据中包括多条限流规则,这样,在服务端会生成多个限流器,每个限流器对应于一个业务场景(限流场景),以及与限流场景关联的限流算法和限流动作。

在一种实现方式中,限流规则是一个9元组(target,property,type,amount,unit,scope,tag,prefer,action)。target表示限流的对象,对象可以包括设备、产品和租户。在物联网领域,设备是指连接到物联网服务端集群的硬件终端,是归属于某个产品下的具体设备;产品是设备的集合,通常指一组具有相同功能的设备,例如这些设备都具有相同的型号标识;租户是使用物联网服务端集群的用户。这样,一个租户可以拥有多个产品型号的很多设备,多个设备可以同属于一个产品型号。

property表示对象的属性,对象的属性可以包括ip地址、连接和消息等。

type表示属性的类型(即限流的类型),属性的类型包括带宽、次数和频率等。

amount表示流量上限(即限流的上限值)。

unit表示限流的时间单位,例如为每秒、每分钟、每小时等。

scope表示对象的取值范围(即限流的对象范围),比如target如果是租户的话,scope可以是某个租户id,或者用通配符*表示所有。

tag为扩展标签,所述扩展标签是用于对上述target和/或property进一步限定的标识。在一种实现方式中,所述扩展标签是用于对上述target的地理区域做进一步限定,和/或,对property的流量方向做进一步限定。例如,在target取值为设备id,property取值为来自该设备的消息的情况下,若tag取值为<浙江省杭州市|上行>,则tag对target的地理区域进一步限定为“浙江省杭州市”,对property的流量方向进一步限定为“上行流量”。又例如,若tag取值为<smarthhome>,则tag对target中的设备进一步限定为智能家居设备。

prefer表示限流算法,包括令牌生成算法和本地可用令牌数计算方法。

action表示限流动作,包括拒绝处理、延迟处理和静默处理。静默处理是指对业务请求既不响应,也不拒绝,等待设备端超时。

在限流规则的9元组中,前7个元素(target,property,type,amount,unit,scope,tag)定义了一个限流场景,具体含义是:对于scope指定的target对象,其带有tag标签的property属性的type类型值,在统计时间段unit内,不能超过prefer产生的本地剩余令牌数,如果超过,则执行action限流动作。

举个例子,如果target取值为设备id,property取值为来自该设备的消息,type取值为消息的次数,amount取值为1000,unit取值为1分钟,scope取值为[1,10000],tag取值为<浙江省杭州市|上行>。则限流场景可表述为:对于编号为[1,10000]的每个设备,限制其每分钟可发送到浙江省杭州市的上行消息次数不大于1000。

也就是说,限流场景可以由业务参数集表示,所述业务参数集包括如下参数中的至少一个:限流的对象、对象的属性、属性的类型、流量上限、限流的时间单位、对象的取值范围和扩展标签。

服务端生成多个限流器之后,方法300进入步骤s310。在步骤s310中,服务端接收设备端发送的业务请求,并根据该业务请求确定请求的业务场景(请求场景)。在本发明实施例中,请求场景由请求参数集表示,例如,请求场景可以表示为4元组(target,property,type,tag),4元组中各元素的含义与上述9元组中相应元素的含义相同或相似,具体地,target表示发起请求的对象、property表示对象的属性、type表示属性的类型和tag扩展标签。

在获取到请求的业务场景后,方法进入步骤s320。在步骤s320中,根据请求的业务场景从本服务端的多个限流器中匹配出目标限流器。在一种实现方式中,通过将请求场景依次与各限流器对应的限流场景进行匹配,当请求场景包含于某个限流场景时,将该限流场景对应的限流器确定为目标限流器。

具体而言,对每个限流器包含的限流场景7元组(target,property,type,amount,unit,scope,tag),如果请求场景4元组(target,property,type,tag)中的target与限流场景7元组(target,property,type,tag)中的target相同,同时限流场景7元组中的scope类型与请求场景4元组的target相同或者相容(相容是一种偏序关系,偏序关系在配置中心指定,比如:设备<产品<租户,即设备相容于产品,设备相容于租户,产品相容于租户),则请求场景包含于限流场景。

需要说明的是,当业务请求到达服务端时,该业务请求可能与多个限流规则相匹配,也就是说,会匹配到多个限流器。因此,在本发明的一种实现方式中,还预先对限流规则(或者限流器)进行优先级排序。

多个限流器的排序方式为:以限流的对象为主键、以对象的取值范围为次键进行优先级排序。在本发明实施例中,优先级是也是一种偏序关系,偏序关系可以在配置中心指定。例如,对于target,偏序关系为:设备>产品>租户;则target的优先级顺序为:设备>产品>租户。又例如,对于scope,偏序关系为:设备>产品>租户;则scope的优先级顺序为:设备>产品>租户。没有偏序关系的target或scope元素之间认为是无关的。

相应地,根据请求的业务场景从多个限流器中匹配出目标限流器的实现方式则为:按照优先级从高到低的顺序,从多个限流器中匹配出目标限流器。

在匹配到目标限流器之后,方法进入步骤s330。在步骤s330中,通过所述目标限流器对业务请求进行限流处理。具体地,当本地可用令牌数小于或等于0时,执行与目标限流器关联的限流动作,所述限流动作包括:拒绝、延迟和静默;当本地可用令牌数大于0时,放行该业务请求。另外,目标限流器对业务请求进行限流处理之后,还可以将本地令牌消费数据同步到分布式缓存中。分布式缓存可以对集群中所有服务端的令牌消费数据进行汇总,从而生成集群令牌数据,即整个集群已消耗令牌数。

在一种实现方式中,目标限流器按照如下方式确定本地可用令牌数:

首先,基于与目标限流器关联的令牌生成算法,生成令牌桶中的令牌,其中所述令牌桶中的令牌数目为集群全局令牌数;

然后,获取集群已消耗令牌数和本地已消耗令牌数;

最后,基于集群全局令牌数、集群已消耗令牌数和本地已消耗令牌数,计算本地可用令牌数。

在本发明实施例中,目标限流器根据限流规则9元组中prefer所表示的令牌生成算法来生成全局令牌,当前时刻集群全局令牌数可以表示为g=f(a,u,dt),其中,a为限流规则9元组中的限流上限值amount;u为限流规则9元组中的时间段unit;dt为当前相对时间,含义是当前时刻距离限流时间段unit起点的差值,比如unit是1分钟(60秒),则dt分别取值1、2、3直到60。

本发明实施例还提供如下几种令牌生成算法:

算法1

对u区间内的任何dt,g=a。表示在每个时间段u的起点,一次性发放a个全局令牌,g是恒定值a。根据该算法,令牌桶内发放的令牌数是时间dt的冲激响应曲线,从而该算法适用于预期突发流量。

算法2

对u区间内的任何dt,g=a/u*dt。表示在每个u时间段,令牌桶内发放的令牌数随时间dt线性增长。该算法适用于预期均匀流量。

算法3

令牌桶内发放的令牌数随时间dt呈指数增长,g=e^x,e是欧拉数2.71828,x=f(a,u)*dt,x是dt的映射,取值原则是,当dt到达每个u时间段的终点时,g=a。该算法适用于预期的请求流量慢热或者快热的情况。

另外,令牌生成算法还可以是其他扩展算法,例如可以根据请求流量的分布统计特征设计如正弦分布、余弦分布、正态分布等曲线,设计对应的算法。

在本发明实施例中,在计算本地可以令牌数时,可以考虑集群健康度本服务端的健康度。具体地,可以根据集群全局令牌数和集群已消耗令牌数,确定集群可用令牌数;然后,根据本服务端的健康度以及集群健康度,确定集群可用令牌数中可分配给本服务端的令牌数;最后,根据可分配给本服务端的令牌数和本地已消耗令牌数,计算本地可用令牌数。

例如,可以按照如下公式计算服务端的本地可用令牌数ln(在时间点dt):

ln=(g-base)*li-acc;

其中,g为集群全局令牌数,base为集群已消耗令牌数,li为根据集群中各服务端的健康状况所确定的系数,acc为本地已消耗令牌数。li的作用是将集群剩余可用令牌数(g-base)按照当前服务端在集群中的负载和健康状况尽可能公平地分配。单机越健康,剩余可用令牌数越多。在一种实现方式中,li=v/n,v=h/hc,h为本服务端的健康度,hc为集群健康度,n为集群所包括的服务端的数目(该数据可以从负载均衡服务器中获取到)。如前所述,集群健康度为集群中各服务端的健康度的平均值,各服务端的健康度基于该服务端的资源负载情况所确定。

在分布式缓存不可用时,由于获取不到集群已消耗令牌数,则可以按照如下公式计算本地可用令牌数ln:

ln=g/n-acc;

其中,g为集群全局令牌数,n为集群所包括的服务端的数目,acc为本地已消耗令牌数。

可以看出,在本发明实施例中,令牌生成算法的特点是集群全局令牌数在本地单机计算,单机可用令牌数弱依赖于分布式缓存系统。当分布式缓存系统可用时,集群已消费的令牌数base在u时间段内随着dt增大而增大,这样计算单机可用令牌数ln的确定性部分比重越来越大,ln不断得到base的反馈叠加和补偿修正,越来越精确,最终流量曲线收敛于amount。

另外,系数li利用健康中心的健康度使流量曲线在集群内各单机上更均匀和平滑,弥补了单机与分布式缓存同步base值不及时造成的ln误差。当分布式缓存系统不可用时,由于base得不到补偿,ln的误差会增大,但是仍然可以满足大部分非精确性限流需求。

图4示出了根据本发明一个实施例的流量控制装置400的示意图,装置400驻留于服务端(例如前述计算设备200)中,以使计算设备执行本发明的流量控制方法(例如前述方法300)。如图4所示,装置400包括。

请求场景确定单元410,适于根据设备端发送的业务请求,确定请求的业务场景;

匹配单元420,适于根据所述请求的业务场景从所述多个限流器中匹配出目标限流器,其中,所述请求的业务场景包含于与所述目标限流器所关联的限流的业务场景中;

限流处理单元430,适于通过所述目标限流器对所述业务请求进行限流处理。

请求场景确定单元410、匹配单元420和限流处理单元430所执行的具体处理,可分别参照上述步骤s310、s320和s330,这里不做赘述。

以下给出本发明的一个应用实例。

配置中心配置的偏序关系为:

target:deviceid(设备id)>productid(产品id)>userid(租户id)

scope:deviceid>productid>userid

服务端中配置有多个限流器,其中的两个限流器对应的限流规则分别为规则1和规则2。

规则1:(productid,connection,frequency,1000,minute,[userid:a|b|c],smarthome,algorithm1,silence)的含义是,对于租户<userid>a或者b或者c的每一款产品<productid>,对其中的智能家居<smarthome>设备连接<connection>次数<frequency>做限流,限制每个产品其1分钟<minute>内所有设备的连接次数不超过1000,并且在这1分钟内的连接次数分布特征符合预定义的算法1<algorithm1>令牌生成算法。如果一个设备某一次的连接请求到达时,算法1生成的令牌剩余数量为0,则对该次连接做静默处理<silence>。

规则2:(productid,connection,frequency,200,minute,[productid:a.x|b.y|c.z],smarthome,algorithm2,reject)的含义是,对产品<productid>a.x或者b.y或者c.z的智能家居<smarthome>设备连接<connection>次数<frequency>做限流,限制每个产品<[a.x|b.y|c.z]>其1分钟<minute>内所有设备的连接次数不超过200,并且在这1分钟内的连接次数分布特征符合预定义的算法2<algorithm2>令牌生成算法。如果一个设备某一次的连接请求到达时,算法2生成的令牌剩余数量为0,则对该次连接做拒绝处理<reject>。

特别地,对于租户a的非x产品,租户b的非y产品,租户c的非z产品,仍然按照规则1执行,对a,b,c之外的租户不做限制。

服务端提供消息队列遥测传输(mqtt)协议服务。服务端接收到设备端的业务请求为:mqtt.connect(deviceid=111,password=222);表示某个设备通过mqtt协议连接到了服务端,其连接的业务参数是(deviceid=111,password=222),服务端对password做校验成功后,根据deviceid=111查到该设备对应的产品productid=a.x,以及该产品对应的租户userid=a。然后,构造请求场景4元组为(productid,connection,frequency,smarthome),则该4元组可以潜在匹配上述两个规则,但是由于存在偏序关系productid>userid,而规则1的scope是租户userid,规则2的scope是产品productid,规则1和规则2的target相同。那么按照排序规则,规则2的优先级高于规则1。所以请求场景4元组为(productid,connection,frequency,smarthome)优先匹配上规则2,其产品productid=a.x也刚好落在规则2的scope[productid:a.x|b.y|c.z]内,因此,执行规则2的限流算法algorithm2。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1