CN115473852A - 用户端输入请求的限流方法、存储介质及电子装置 - Google Patents
用户端输入请求的限流方法、存储介质及电子装置 Download PDFInfo
- Publication number
- CN115473852A CN115473852A CN202210884939.3A CN202210884939A CN115473852A CN 115473852 A CN115473852 A CN 115473852A CN 202210884939 A CN202210884939 A CN 202210884939A CN 115473852 A CN115473852 A CN 115473852A
- Authority
- CN
- China
- Prior art keywords
- token
- input request
- token bucket
- tokens
- result
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/215—Flow control; Congestion control using token-bucket
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种用户端输入请求的限流方法、存储介质及电子装置,涉及智能家居/智慧家庭技术领域,该用户端输入请求的限流方法包括:确认添加令牌的时间跨度,对所述时间跨度和预设的令牌桶刷新周期进行比较,并基于比较结果确认是否需要向所述令牌桶中添加令牌;基于是否向令牌桶内添加令牌的确认结果,对用户端的输入请求进行限流或者转发。本申请通过判断是否能根据输入请求成功获取令牌,从而进行限流或者将请求转发,无需对每次请求均进行令牌添加,因此减少了添加令牌时的系统资源消耗,从而提升整体性能。
Description
技术领域
本申请涉及智能家居/智慧家庭技术领域,尤其涉及一种用户端输入请求的限流方法、存储介质及电子装置。
背景技术
API,应用程序接口(Application Program Interface,API)网关作为流量入口,承担着最重要的责任,对其性能和稳定性有着极高的要求。面对极其复杂的业务场景,高并发的流量,以及潜在的攻击威胁,流量控制担任了重要角色。
面对复杂的业务限流(ip、参数、用户、接口粗细粒度、同一接口多种限流规则-不同优先级、不同服务接口组限流、多协议限流等),在API网关进行服务时,目前的一种做法是对令牌桶进行制定单独的定时任务,从而定时添加令牌。另外一种做法,接收用户发送的请求,每次请求都要执行令牌添加。
然而,在上述的两种方式下有如下问题,其一,每个规则都会对应一个定时任务,严重的浪费线程资源,尤其是当API数目和规则巨大的时候,对系统资源是巨大的挑战。其二,每次请求都要执行令牌添加,性能依然比较低下。
因此,如何减少添加令牌时的系统资源消耗,从而提升整体性能,是当前亟需解决的技术问题。
发明内容
本申请提供一种用户端输入请求的限流方法、存储介质及电子装置,用以解决现有技术中添加令牌时浪费线程资源的缺陷,实现减少系统资源消耗,从而提升整体性能。
本申请提供一种用户端输入请求的限流方法,应用于API网关,包括:
确认添加令牌的时间跨度,对所述时间跨度和预设的令牌桶刷新周期进行比较,并基于比较结果确认是否需要向所述令牌桶中添加令牌;
基于是否向令牌桶内添加令牌的确认结果,对用户端的输入请求进行限流或者转发。
根据本申请提供的一种用户端输入请求的限流方法,所述基于是否向令牌桶内添加令牌的确认结果,对用户端的输入请求进行限流或者转发,包括:
在确认所述令牌桶中无需添加令牌的情况下,基于用户端的输入请求向所述令牌桶发送令牌获取请求,并输出令牌获取结果;
基于所述令牌获取结果判断是否对所述用户端的输入请求进行限流;
在确认所述令牌桶中需要添加令牌的情况下,向所述令牌桶中添加令牌,并转发所述输入请求。
根据本申请提供的一种用户端输入请求的限流方法,所述基于所述令牌获取结果判断是否对所述用户端的输入请求进行限流,包括:
在所述令牌获取结果为获取失败的情况下输出第一结果;
基于所述第一结果确认所述令牌桶中没有与所述输入请求对应的令牌,并基于所述第一结果对所述用户端的输入请求进行限流。
根据本申请提供的一种用户端输入请求的限流方法,所述基于所述令牌获取结果判断是否对所述用户端的输入请求进行限流,包括:
在所述令牌获取结果为获取成功的情况下输出第二结果;
基于所述第二结果确认所述令牌桶中存在与所述输入请求对应的令牌,并基于所述第二结果转发所述输入请求。
根据本申请提供的一种用户端输入请求的限流方法,所述基于比较结果确认是否需要向所述令牌桶中添加令牌,包括:
在所述时间跨度小于或等于所述令牌桶刷新周期的情况下,确认无需向所述令牌桶中添加令牌。
根据本申请提供的一种用户端输入请求的限流方法,所述在确认所述令牌桶中需要添加令牌的情况下,向所述令牌桶中添加令牌,并转发所述输入请求,包括:
在所述时间跨度大于所述令牌桶刷新周期的情况下,确认向所述令牌桶中添加令牌;
在所述令牌桶的令牌添加数量达到目标阈值的情况下,确认令牌添加完成,并转发所述输入请求。
根据本申请提供的一种用户端输入请求的限流方法,所述在所述时间跨度大于所述令牌桶刷新周期的情况下,确认向所述令牌桶中添加令牌,包括:
在所述时间跨度大于所述令牌桶刷新周期的情况下,获取令牌生成速率;
基于所述时间跨度和令牌生成速率确认新令牌数量,基于所述令牌获取结果获取请求令牌数量,并基于所述新令牌数量和请求令牌数量获取待添加令牌数量;
基于所述待添加令牌数量向所述令牌桶中添加令牌。
本申请还提供一种用户端输入请求的限流装置,包括:
比较模块,用于确认添加令牌的时间跨度,对所述时间跨度和预设的令牌桶刷新周期进行比较,并基于比较结果确认是否需要向所述令牌桶中添加令牌;
处理模块,用于基于是否向令牌桶内添加令牌的确认结果,对用户端的输入请求进行限流或者转发。
本申请还提供一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行实现如上述任一种所述用户端输入请求的限流方法。
本申请还提供一种计算机可读的存储介质,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行实现如上述任一种所述用户端输入请求的限流方法。
本申请还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述用户端输入请求的限流方法。
本申请提供的用户端输入请求的限流方法、存储介质及电子装置,通过确认添加令牌的时间跨度,对时间跨度和预设的令牌桶刷新周期进行比较,并基于比较结果确认是否需要向令牌桶中添加令牌,通过时间跨度和周期确定是否令牌添加,无需设定定时任务,也无需每次都进执行令牌添加。在确认令牌桶中无需添加令牌的情况下,基于用户端的输入请求向令牌桶发送令牌获取请求,并输出令牌获取结果,基于令牌获取结果判断是否对用户端的输入请求进行限流。通过判断是否能根据输入请求成功获取令牌,从而进行限流或者将请求转发,无需对每次请求均进行令牌添加,有效地避免请求将会被丢弃或者排队等待下个周期生成的令牌的情况,因此减少了添加令牌时的系统资源消耗,从而提升整体性能。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中令牌桶限流方法的流程示意图;
图2是本申请提供的用户端输入请求的限流方法的流程示意图之一;
图3是本申请提供的用户端输入请求的限流方法的流程示意图之二;
图4是本申请提供的用户端输入请求的限流装置的结构示意图;
图5是根据本申请实施例的一种智能设备的交互方法的硬件环境示意图;
图6是本申请提供的电子装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
API网关是将服务的能力以API的形式开放给用户使用。在现有的数据网格中,流量的规模各不相同,面对激增的流量,常常会达到系统的性能瓶颈,因此要合理的对流量进行限制,超过设定的阈值请求将会被丢弃、排队或降级等。
目前常用的做法是采用令牌桶进行限流方法,即系统维护一个令牌桶,定时按照速率生成令牌,令牌桶满了以后,生成的令牌会溢出丢弃。
参照图1,现有技术中令牌桶限流方法,包括:当请求进入时,会去桶中获取令牌,如果桶中有剩余令牌,请求将会被转发,如果没有令牌,请求将会被丢弃或者排队等待下个周期生成的令牌。
常规的另一种做法是无需定时任务添加,每次请求进来的时候,进行令牌生成。然而这种做法存在临界问题,且每次请求进来时都要增加添加令牌的操作,性能比较低下。
综上所述,本申请实施例提出一种用户端输入请求的限流方法、存储介质及电子装置,达到减少添加令牌时的系统资源消耗,从而提升整体性能的效果。
参照图2,本申请实施例提供一种用户端输入请求的限流方法,应用于API网关,包括以下步骤:
步骤210,确认添加令牌的时间跨度,对所述时间跨度和预设的令牌桶刷新周期进行比较,并基于比较结果确认是否需要向所述令牌桶中添加令牌。
本实施例中的执行主体是用户端输入请求的限流装置;用户端输入请求的限流装置可以是移动电子设备,也可以为非移动电子设备。示例性的,移动电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备等,非移动电子设备可以为边缘服务器、云服务器、网络附属存储器、个人计算机等,在此不作具体限定。
其中,API网关的释义为:两个相互独立的局域网之间通过路由器进行通信,中间的路由即被称之为网关。相应地,任何一个应用系统如果需要被其他系统调用,就需要暴露API,这些API代表着一个一个的功能点。如果两个系统中间通信,在系统之间加上一个中介者协助API的调用,这个中介者就是API网关。
首先需要确认在API应用场景下,令牌桶进行令牌添加的时间跨度。此处的时间跨度为当前时间和上次添加令牌时间之间的时间间隔。然后根据时间跨度和预设的令牌桶刷新周期进行比较,判断时间跨度是否大于令牌刷新周期。若时间跨度大于令牌刷新周期,则需要向令牌桶中添加新的令牌;若时间跨度小于或等于令牌刷新周期,则无需向令牌桶中添加新的令牌。通过将时间跨度和预设的令牌刷新周期进行比较从而决定令牌桶是否添加新的令牌,无需设定定时任务,也无需每次都进执行令牌添加,能够有效地减少令牌的多余添加造成的资源浪费。
步骤220,基于是否向令牌桶内添加令牌的确认结果,对用户端的输入请求进行限流或者转发。
具体地,在确认需要添加新的令牌之后,向令牌桶中添加令牌,在令牌添加完成之后,将用户端的输入请求进行转发;在确认无需添加新的令牌之后,用户端的请求将会输入至令牌桶中进行令牌获取,根据获取情况判断是否对用户端的输入请求进行限流。
根据不同的令牌添加的确认结果,采取请求转发或者请求限流,从而无需每次均对用户端的输入请求进行令牌添加,能够有效地减少令牌的多余添加造成的资源浪费。
需要说明的是,本实施例中的用户端即为API网关通过路由进行通信连接的其中一端系统。
本申请实施例提供的用户端输入请求的限流方法,通过确认添加令牌的时间跨度,对时间跨度和预设的令牌桶刷新周期进行比较,并基于比较结果确认是否需要向令牌桶中添加令牌,通过时间跨度和周期确定是否令牌添加,无需设定定时任务,也无需每次都进执行令牌添加。在确认令牌桶中无需添加令牌的情况下,基于用户端的输入请求向令牌桶发送令牌获取请求,并输出令牌获取结果,基于令牌获取结果判断是否对用户端的输入请求进行限流。通过判断是否能根据输入请求成功获取令牌,从而进行限流或者将请求转发,无需对每次请求均进行令牌添加,有效地避免请求将会被丢弃或者排队等待下个周期生成的令牌的情况,因此减少了添加令牌时的系统资源消耗,从而提升整体性能。
基于以上实施例,所述基于是否向令牌桶内添加令牌的确认结果,对用户端的输入请求进行限流或者转发,包括:
在确认所述令牌桶中无需添加令牌的情况下,基于用户端的输入请求向所述令牌桶发送令牌获取请求,并输出令牌获取结果;
基于所述令牌获取结果判断是否对所述用户端的输入请求进行限流;
在确认所述令牌桶中需要添加令牌的情况下,向所述令牌桶中添加令牌,并转发所述输入请求。
具体地,本实施例中的令牌获取结果即为获取成功和获取失败。
一方面,当令牌获取成功时,说明令牌桶中有剩余令牌与输入请求对应,此时则需要将输入的请求转发至其他系统中。
另一方面,当令牌获取失败时,说明令牌桶中没有与输入请求相对应的剩余令牌,此时则需要对输入请求进行限流处理,限制输入请求的进入,从而有效地避免请求将会被丢弃或者排队等待下个周期生成的令牌的情况。
本申请实施例提供的用户端输入请求的限流方法,通过确认是否向令牌桶中添加令牌,对用户端的输入请求进行限流或者转发,无需对每次请求均进行令牌添加,有效地避免请求将会被丢弃或者排队等待下个周期生成的令牌的情况,因此减少了添加令牌时的系统资源消耗,从而提升整体性能。
基于以上实施例,所述基于所述令牌获取结果判断是否对所述用户端的输入请求进行限流,包括:
在所述令牌获取结果为获取失败的情况下输出第一结果;
基于所述第一结果确认所述令牌桶中没有与所述输入请求对应的令牌,并基于所述第一结果对所述用户端的输入请求进行限流。
具体地,本实施例提供了令牌获取失败,从而进行限流的过程。根据令牌获取结果,确认令牌获取失败。当令牌获取失败时,说明令牌桶中没有与输入请求相对应的剩余令牌,此时则需要对输入请求进行限流处理,限制输入请求的进入。
本实施例提供的用户端输入请求的限流方法,在令牌桶无需添加新的令牌,且根据用户端的输入请求获取令牌失败的情况下,对用户端的输入请求进行限流,禁止输入请求的进入,从而有效地避免输入请求被丢弃或者排队等待下个周期生成的令牌的情况。
基于以上实施例,所述基于所述令牌获取结果判断是否对所述用户端的输入请求进行限流,包括:
在所述令牌获取结果为获取成功的情况下输出第二结果;
基于所述第二结果确认所述令牌桶中存在与所述输入请求对应的令牌,并基于所述第二结果转发所述输入请求。
具体地,本实施例提供了令牌获取成功,从而指令转发的过程。
根据令牌获取结果,确认令牌获取成功。当令牌获取成功时,说明令牌桶中有剩余令牌与输入请求对应,此时则需要将输入的请求转发至其他系统中。
本实施例提供的用户端输入请求的限流方法,令牌桶无需添加新的令牌便能够根据用户端的输入请求,成功获取令牌,然后将输入请求进行转发,无需在每次输入请求进入时便更新令牌桶的数量,也无需定时设置更新时间,从而减少了多余的新的令牌添加的次数,能够有效地减少令牌的多余添加造成的资源浪费。
基于以上实施例,所述基于比较结果确认是否需要向所述令牌桶中添加令牌,包括:
一、在所述时间跨度小于或等于所述令牌桶刷新周期的情况下,确认无需向所述令牌桶中添加令牌。
二、在所述时间跨度大于所述令牌桶刷新周期的情况下,确认向所述令牌桶中添加令牌;
在所述令牌桶的令牌添加数量达到目标阈值的情况下,确认令牌添加完成,并转发所述输入请求。
本实施提供了根据时间跨度和预设的令牌桶刷新周期的比较结果确认是否需要向令牌桶中进行令牌添加的具体过程。
一方面,在时间跨度小于或等于令牌桶刷新周期的情况下,确认无需向令牌桶中添加令牌。也就是说,当前时间距离上次添加令牌的时间未达到令牌添加的一个周期,不满足令牌添加条件,便不向令牌桶中添加新的令牌。
另一方面,在时间跨度大于令牌桶刷新周期的情况下,确认需要向令牌桶中添加令牌。也就是说,当前时间距离上次添加令牌的时间已达到令牌添加的一个周期,满足令牌添加条件,需要向令牌桶中添加新的令牌。
需要说明的是,令牌添加时需要对令牌桶内的令牌数量进行监测,当令牌桶内的令牌数量达到目标阈值,即令牌数量达到需要的数量,或者令牌桶的容量达到最大时,停止添加令牌,生成指令确认添加完成,并将用户端的输入请求输入至其他系统中。
本实施例提供的用户端输入请求的限流方法,通过将时间跨度和预设的令牌刷新周期进行比较从而决定令牌桶是否添加新的令牌,无需设定定时任务,也无需每次都进执行令牌添加,能够有效地减少令牌的多余添加造成的资源浪费。
基于以上实施例,所述在所述时间跨度大于所述令牌桶刷新周期的情况下,确认向所述令牌桶中添加令牌,包括:
在所述时间跨度大于所述令牌桶刷新周期的情况下,获取令牌生成速率;
基于所述时间跨度和令牌生成速率确认新令牌数量,基于所述令牌获取结果获取请求令牌数量,并基于所述新令牌数量和请求令牌数量获取待添加令牌数量;
基于所述待添加令牌数量向所述令牌桶中添加令牌。
具体地,本实施例提供了对令牌桶进行新的令牌添加的过程。通过获取令牌生成速率,并根据生成速率和时间跨度得到新令牌数量,根据令牌获取结果获取请求令牌数量,最后获取待添加令牌数量,根据待添加令牌数量向令牌桶中添加令牌。
其中,令牌生成速率是根据令牌生成周期以及在周期内生成的令牌总量得到的,即为单位时间内生成的令牌数量。
需要说明的是,待添加令牌数量等于新令牌数量减去请求令牌数量,也就是说令牌桶中添加的新的令牌需要减去根据用户端的输入请求获取的令牌。
本实施例提供的用户端输入请求的限流方法,通过利用时间跨度和令牌添加速率确认令牌添加数量,从而对令牌桶内添加新的令牌,无需设定定时任务,也无需每次都进执行令牌添加,能够有效地减少令牌的多余添加造成的资源浪费。
基于以上实施例,所述在确认添加令牌的时间跨度,对所述时间跨度和预设的令牌桶刷新周期进行比较,并基于比较结果确认是否需要向所述令牌桶中添加令牌之前,还包括:
接收用户端的输入请求,并确认所述输入请求对应的当前时刻;
所述确认添加令牌的时间跨度包括:
基于所述当前时刻和目标时刻确认时间跨度;其中,所述目标时刻是前一次向令牌桶中添加令牌的时刻。
具体地,本实施例提供了确认时间跨度的过程。通过获取当前时刻和前一次向令牌桶中添加令牌的时刻确认时间跨度,便于根据时间跨度和令牌桶的令牌刷新周期判断令牌桶是否需要更新,从而进一步减少令牌的多余添加造成的资源浪费。
参照图3,图3为本申请提供的用户端输入请求的限流方法的完整流程图,包括以下步骤:
步骤310,请求进入;
步骤320,获取令牌;
步骤330,判断时间跨度是否大于令牌桶刷新周期。
若是则执行步骤340,若否则执行步骤331;
步骤340,根据时间跨度和速率确定新令牌。New Tokens=(current Time-lastAdd Time)*rate。
步骤350,根据新令牌和请求令牌确定新添加的令牌。New Add Token=NewTokens–request Token。
步骤360,添加令牌;
步骤370,请求转发;
步骤331,判断桶中是否有令牌;若是,则执行步骤370,若否,则执行步骤332;
步骤332,对请求进行限流。
下面对本申请提供的用户端输入请求的限流装置进行描述,下文描述的用户端输入请求的限流装置与上文描述的用户端输入请求的限流方法可相互对应参照。
参照图4,本申请实施例提供一种用户端输入请求的限流装置,应用于API网关,包括:
比较模块410,用于确认添加令牌的时间跨度,对所述时间跨度和预设的令牌桶刷新周期进行比较,并基于比较结果确认是否需要向所述令牌桶中添加令牌;
处理模块420,用于基于是否向令牌桶内添加令牌的确认结果,对用户端的输入请求进行限流或者转发。
本申请实施例通过确认添加令牌的时间跨度,对时间跨度和预设的令牌桶刷新周期进行比较,并基于比较结果确认是否需要向令牌桶中添加令牌,通过时间跨度和周期确定是否令牌添加,无需设定定时任务,也无需每次都进执行令牌添加。在确认令牌桶中无需添加令牌的情况下,基于用户端的输入请求向令牌桶发送令牌获取请求,并输出令牌获取结果,基于令牌获取结果判断是否对用户端的输入请求进行限流。通过判断是否能根据输入请求成功获取令牌,从而进行限流或者将请求转发,无需对每次请求均进行令牌添加,有效地避免请求将会被丢弃或者排队等待下个周期生成的令牌的情况,因此减少了添加令牌时的系统资源消耗,从而提升整体性能。
基于以上实施例,处理模块具体用于:
所述基于所述令牌获取结果判断是否对所述用户端的输入请求进行限流,包括:
在所述令牌获取结果为获取失败的情况下输出第一结果;
基于所述第一结果确认所述令牌桶中没有与所述输入请求对应的令牌,并基于所述第一结果对所述用户端的输入请求进行限流。
基于以上实施例,处理模块具体用于:
在所述令牌获取结果为获取成功的情况下输出第二结果;
基于所述第二结果确认所述令牌桶中存在与所述输入请求对应的令牌,并基于所述第二结果转发所述输入请求。
基于以上实施例,处理模块具体用于:
所述基于所述令牌获取结果判断是否对所述用户端的输入请求进行限流,包括:
在所述令牌获取结果为获取失败的情况下输出第一结果;
基于所述第一结果确认所述令牌桶中没有与所述输入请求对应的令牌,并基于所述第一结果对所述用户端的输入请求进行限流。
基于以上实施例,处理模块具体用于:
在所述令牌获取结果为获取成功的情况下输出第二结果;
基于所述第二结果确认所述令牌桶中存在与所述输入请求对应的令牌,并基于所述第二结果转发所述输入请求。
基于以上实施例,比较模块具体用于:
在所述时间跨度小于或等于所述令牌桶刷新周期的情况下,确认无需向所述令牌桶中添加令牌。
基于以上实施例,比较模块具体用于:
在所述时间跨度大于所述令牌桶刷新周期的情况下,确认向所述令牌桶中添加令牌;
在所述令牌桶的令牌添加数量达到目标阈值的情况下,确认令牌添加完成,并转发所述输入请求。
基于以上实施例,比较模块进一步用于:
在所述时间跨度大于所述令牌桶刷新周期的情况下,获取令牌生成速率;
基于所述时间跨度和令牌生成速率确认新令牌数量,基于所述令牌获取结果获取请求令牌数量,并基于所述新令牌数量和请求令牌数量获取待添加令牌数量;
基于所述待添加令牌数量向所述令牌桶中添加令牌。
基于以上实施例,还包括:
确认模块,用于接收用户端的输入请求,并确认所述输入请求对应的当前时刻;
比较模块还用于:
基于所述当前时刻和目标时刻确认时间跨度;其中,所述目标时刻是前一次向令牌桶中添加令牌的时刻。
根据本申请实施例的一个方面,提供了一种用户端输入请求的限流方法。该用户端输入请求的限流方法广泛应用于智慧家庭(Smart Home)、智能家居、智能家用设备生态、智慧住宅(Intelligence House)生态等全屋智能数字化控制应用场景。可选地,在本实施例中,上述用户端输入请求的限流方法可以应用于如图5所示的由终端设备502和服务器504所构成的硬件环境中。如图5所示,服务器504通过网络与终端设备502进行连接,可用于为终端或终端上安装的客户端提供服务(如应用服务等),可在服务器上或独立于服务器设置数据库,用于为服务器504提供数据存储服务,可在服务器上或独立于服务器配置云计算和/或边缘计算服务,用于为服务器504提供数据运算服务。
上述网络可以包括但不限于以下至少之一:有线网络,无线网络。上述有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,上述无线网络可以包括但不限于以下至少之一:WIFI(Wireless Fidelity,无线保真),蓝牙。终端设备502可以并不限定于为PC、手机、平板电脑、智能空调、智能烟机、智能冰箱、智能烤箱、智能炉灶、智能洗衣机、智能热水器、智能洗涤设备、智能洗碗机、智能投影设备、智能电视、智能晾衣架、智能窗帘、智能影音、智能插座、智能音响、智能音箱、智能新风设备、智能厨卫设备、智能卫浴设备、智能扫地机器人、智能擦窗机器人、智能拖地机器人、智能空气净化设备、智能蒸箱、智能微波炉、智能厨宝、智能净化器、智能饮水机、智能门锁等。
图6示例了一种电子装置的实体结构示意图,如图6所示,该电子装置可以包括:处理器(processor)610、通信接口(Communications Interface)620、存储器(memory)630和通信总线640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储器630中的逻辑指令,以执行用户端输入请求的限流方法,该方法包括:
确认添加令牌的时间跨度,对所述时间跨度和预设的令牌桶刷新周期进行比较,并基于比较结果确认是否需要向所述令牌桶中添加令牌;
基于是否向令牌桶内添加令牌的确认结果,对用户端的输入请求进行限流或者转发。
此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本申请还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在计算机可读的存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的用户端输入请求的限流方法,该方法包括:
确认添加令牌的时间跨度,对所述时间跨度和预设的令牌桶刷新周期进行比较,并基于比较结果确认是否需要向所述令牌桶中添加令牌;
基于是否向令牌桶内添加令牌的确认结果,对用户端的输入请求进行限流或者转发。
又一方面,本申请还提供一种计算机可读的存储介质,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行上述各方法提供的用户端输入请求的限流方法,该方法包括:
确认添加令牌的时间跨度,对所述时间跨度和预设的令牌桶刷新周期进行比较,并基于比较结果确认是否需要向所述令牌桶中添加令牌;
基于是否向令牌桶内添加令牌的确认结果,对用户端的输入请求进行限流或者转发。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种用户端输入请求的限流方法,其特征在于,包括:
确认添加令牌的时间跨度,对所述时间跨度和预设的令牌桶刷新周期进行比较,并基于比较结果确认是否需要向所述令牌桶中添加令牌;
基于是否向令牌桶内添加令牌的确认结果,对用户端的输入请求进行限流或者转发。
2.根据权利要求1所述的用户端输入请求的限流方法,其特征在于,所述基于是否向令牌桶内添加令牌的确认结果,对用户端的输入请求进行限流或者转发,包括:
在确认所述令牌桶中无需添加令牌的情况下,基于用户端的输入请求向所述令牌桶发送令牌获取请求,并输出令牌获取结果;
基于所述令牌获取结果判断是否对所述用户端的输入请求进行限流;
在确认所述令牌桶中需要添加令牌的情况下,向所述令牌桶中添加令牌,并转发所述输入请求。
3.根据权利要求2所述的用户端输入请求的限流方法,其特征在于,所述基于所述令牌获取结果判断是否对所述用户端的输入请求进行限流,包括:
在所述令牌获取结果为获取失败的情况下输出第一结果;
基于所述第一结果确认所述令牌桶中没有与所述输入请求对应的令牌,并基于所述第一结果对所述用户端的输入请求进行限流。
4.根据权利要求2所述的用户端输入请求的限流方法,其特征在于,所述基于所述令牌获取结果判断是否对所述用户端的输入请求进行限流,包括:
在所述令牌获取结果为获取成功的情况下输出第二结果;
基于所述第二结果确认所述令牌桶中存在与所述输入请求对应的令牌,并基于所述第二结果转发所述输入请求。
5.根据权利要求1所述的用户端输入请求的限流方法,其特征在于,所述基于比较结果确认是否需要向所述令牌桶中添加令牌,包括:
在所述时间跨度小于或等于所述令牌桶刷新周期的情况下,确认无需向所述令牌桶中添加令牌。
6.根据权利要求2所述的用户端输入请求的限流方法,其特征在于,所述在确认所述令牌桶中需要添加令牌的情况下,向所述令牌桶中添加令牌,并转发所述输入请求,包括:
在所述时间跨度大于所述令牌桶刷新周期的情况下,确认向所述令牌桶中添加令牌;
在所述令牌桶的令牌添加数量达到目标阈值的情况下,确认令牌添加完成,并转发所述输入请求。
7.根据权利要求6所述的用户端输入请求的限流方法,其特征在于,所述在所述时间跨度大于所述令牌桶刷新周期的情况下,确认向所述令牌桶中添加令牌,包括:
在所述时间跨度大于所述令牌桶刷新周期的情况下,获取令牌生成速率;
基于所述时间跨度和令牌生成速率确认新令牌数量,基于所述令牌获取结果获取请求令牌数量,并基于所述新令牌数量和请求令牌数量获取待添加令牌数量;
基于所述待添加令牌数量向所述令牌桶中添加令牌。
8.一种用户端输入请求的限流装置,其特征在于,包括:
比较模块,用于确认添加令牌的时间跨度,对所述时间跨度和预设的令牌桶刷新周期进行比较,并基于比较结果确认是否需要向所述令牌桶中添加令牌;
处理模块,用于基于是否向令牌桶内添加令牌的确认结果,对用户端的输入请求进行限流或者转发。
9.一种计算机可读的存储介质,其特征在于,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行权利要求1至7中任一项所述的用户端输入请求的限流方法。
10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行权利要求1至7中任一项所述的用户端输入请求的限流方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210884939.3A CN115473852A (zh) | 2022-07-26 | 2022-07-26 | 用户端输入请求的限流方法、存储介质及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210884939.3A CN115473852A (zh) | 2022-07-26 | 2022-07-26 | 用户端输入请求的限流方法、存储介质及电子装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115473852A true CN115473852A (zh) | 2022-12-13 |
Family
ID=84365925
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210884939.3A Pending CN115473852A (zh) | 2022-07-26 | 2022-07-26 | 用户端输入请求的限流方法、存储介质及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115473852A (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106453127A (zh) * | 2016-11-18 | 2017-02-22 | 杭州华三通信技术有限公司 | 一种令牌处理方法和装置 |
CN111371697A (zh) * | 2020-03-16 | 2020-07-03 | 神州数码融信软件有限公司 | 面向系统间访问的精确流量控制方法及装置 |
CN112350953A (zh) * | 2019-08-07 | 2021-02-09 | 亿度慧达教育科技(北京)有限公司 | 流量限制方法及其装置、电子设备和计算机可读存储介质 |
CN112615793A (zh) * | 2020-11-26 | 2021-04-06 | 新华三大数据技术有限公司 | 一种数据限流方法及装置 |
CN112929291A (zh) * | 2021-02-18 | 2021-06-08 | 欧冶云商股份有限公司 | 一种基于redis的分布式限流方法、计算机设备和存储介质 |
US20210191650A1 (en) * | 2019-12-19 | 2021-06-24 | Western Digital Technologies, Inc. | Request Throttling in Distributed Storage Systems |
CN114143265A (zh) * | 2021-11-26 | 2022-03-04 | 杭州安恒信息技术股份有限公司 | 一种网络流量限流方法、装置、设备及存储介质 |
CN114598658A (zh) * | 2022-03-07 | 2022-06-07 | 浪潮云信息技术股份公司 | 一种流量限制方法及装置 |
CN114745334A (zh) * | 2022-03-31 | 2022-07-12 | 广州易星信息科技有限公司 | 一种分布式系统限流方法及系统 |
-
2022
- 2022-07-26 CN CN202210884939.3A patent/CN115473852A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106453127A (zh) * | 2016-11-18 | 2017-02-22 | 杭州华三通信技术有限公司 | 一种令牌处理方法和装置 |
CN112350953A (zh) * | 2019-08-07 | 2021-02-09 | 亿度慧达教育科技(北京)有限公司 | 流量限制方法及其装置、电子设备和计算机可读存储介质 |
US20210191650A1 (en) * | 2019-12-19 | 2021-06-24 | Western Digital Technologies, Inc. | Request Throttling in Distributed Storage Systems |
CN111371697A (zh) * | 2020-03-16 | 2020-07-03 | 神州数码融信软件有限公司 | 面向系统间访问的精确流量控制方法及装置 |
CN112615793A (zh) * | 2020-11-26 | 2021-04-06 | 新华三大数据技术有限公司 | 一种数据限流方法及装置 |
CN112929291A (zh) * | 2021-02-18 | 2021-06-08 | 欧冶云商股份有限公司 | 一种基于redis的分布式限流方法、计算机设备和存储介质 |
CN114143265A (zh) * | 2021-11-26 | 2022-03-04 | 杭州安恒信息技术股份有限公司 | 一种网络流量限流方法、装置、设备及存储介质 |
CN114598658A (zh) * | 2022-03-07 | 2022-06-07 | 浪潮云信息技术股份公司 | 一种流量限制方法及装置 |
CN114745334A (zh) * | 2022-03-31 | 2022-07-12 | 广州易星信息科技有限公司 | 一种分布式系统限流方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113709839A (zh) | 多网关网络切换方法、装置、系统、电子设备及存储介质 | |
CN105159079B (zh) | 一种解决家电并发控制冲突的方法和装置 | |
CN108183950B (zh) | 一种网络设备建立连接的方法及装置 | |
US10659913B2 (en) | Location based access control for artificial conversational entities | |
CN115460153B (zh) | 令牌桶容量的动态调整方法和装置、存储介质及电子装置 | |
CN103095688A (zh) | 客户端控制方法和服务器 | |
CN109039843B (zh) | 基于事件链联动策略的智能厨房设备的控制方法和装置 | |
CN108810129A (zh) | 物联网控制系统及方法、终端设备和本地网络服务设备 | |
CN111093235A (zh) | 网络切换方法、设备及存储介质 | |
CN104967632A (zh) | 网页异常数据处理方法、数据服务器及系统 | |
CN108366133B (zh) | 一种ts服务器调度方法、调度设备及存储介质 | |
CN114143299A (zh) | 基于物联网的数据同步方法及系统 | |
CN115473852A (zh) | 用户端输入请求的限流方法、存储介质及电子装置 | |
CN107995125B (zh) | 一种流量调度方法及装置 | |
CN103619032B (zh) | 无线路由设备优化方法和装置 | |
CN115550093A (zh) | 应用调研方法、存储介质及电子装置 | |
WO2016160007A1 (en) | Method and apparatus for flow control | |
CN111315026A (zh) | 信道的选择方法、装置、网关及计算机可读存储介质 | |
CN111371675B (zh) | 智能寻址方法、装置、设备及其存储介质 | |
CN104601527B (zh) | 数据过滤的方法及装置 | |
CN104346228A (zh) | 共享应用程序的方法及终端 | |
CN114490071A (zh) | 一种基于云游戏的资源调度方法、装置、设备及介质 | |
CN115378656A (zh) | 令牌回填方法、存储介质及电子装置 | |
CN114697266A (zh) | 一种虚拟机接入方法、终端及存储介质 | |
CN103392322B (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 |