元宇宙非小号金色财经交流群社区官网

令牌桶算法的实现非常高效

时间:2022-02-17 17:14:50

从上面的代码片段可以看出,令牌桶算法的实现非常简单也非常高效,仅仅通过几个变量的运算就实现了完整的限流功能。核心逻辑在于refill()这个方法,在每次消费令牌时,计算当前时间和上一次填充的时间差,并根据填充速度计算出应该填充多少令牌。在重新填充令牌后,再判断请求的令牌数是否足够,如果不够,返回false,如果足够,则减去令牌数,并返回true。

在令牌桶算法中,令牌生产算法以恒定速率不断生成新的令牌放进令牌桶中,当数量达到令牌桶的上线时,生成的新令牌会被丢弃掉。对客户端请求来说,每次请求处理前,先要从令牌桶中获取令牌,如果获取到令牌,则进出接口服务处理相关请求,否则请求被拒绝。

尽管很难想象,但通常会发现API根本不使用auth令牌实现任何身份验证,而是仅检查请求中是否存在一个。这个问题通常比API中缺少身份验证更令人震惊,因为这允许用户仅通过在API请求中传递身份验证令牌来访问资源。令牌的实际值并不重要,因为应用程序仅检查请求中是否存在身份验证令牌(任何身份验证令牌)。

算法中存在一个令牌桶,以恒定的速率向令牌桶中放入令牌。当请求来时,会首先到令牌桶中去拿令牌,如果拿到了令牌,则该请求会被处理,并消耗掉令牌;如果拿不到令牌,则该请求会被丢弃。当然令牌桶也有一定的容量,如果满了令牌就无法放进去了,这样算法就有限流作用。

放令牌这个动作是持续不断的进行,如果桶中令牌数达到上限,就丢弃令牌,所以就存在这种情况,桶中一直有大量的可用令牌,这时进来的请求就可以直接拿到令牌执行,比如设置qps为100,那么限流器初始化完成一秒后,桶中就已经有100个令牌了,这时服务还没完全启动好,等启动完成对外提供服务时,该限流器可以抵挡瞬时的100个请求。

令牌(token)与基于密码的身份验证相比,令牌提供了许多安全优势:-唯一:令牌特定于GitHub,可以按使用或按设备生成-可撤销:可以随时单独撤销令牌,而无需更新未受影响的凭据-有限:令牌可以缩小范围以仅允许用例所需的访问-随机:令牌不需要记住或定期输入的更简单密码可能会受到的字典类型或蛮力尝试的影响

标签:令牌

本站分享的区块链、Web3.0元宇宙、NFT、数字藏品最新消息等相关数藏知识快讯NFR资讯新闻,与金色财经非小号巴比特星球前线Btc中国官网无关,本站资讯观点不作为投资依据,市场有风险,投资需谨慎!不提供社区论坛BBS微博微信交流群等相关币圈信息发布!
本站内容来源于互联网,如存在侵权及违规内容投诉邮箱( [email protected] )
皮卡丘 2021-2024© YangKaTie.Com All