当前位置: 首页 > 后端技术 > Java

【Java面试】什么是令牌桶限流算法

时间:2023-04-01 19:24:50 Java

当面试官问你“什么是令牌桶限流算法”!你知道如何回答才能赢得面试官的好感吗?大家好,我是Mic,一名拥有14年经验的Java程序员。关于这个问题,面试官想考察的纬度是什么?我们该如何回答?问题分析限流策略是一种在高并发流量下保护系统稳定性的策略。因此,这个问题主要由互联网公司调查。当然,在实际业务开发中,限流是无处不在的,比如线程池、连接池,都是通过限制总并发数来避免过度使用资源的。在Nginx反向代理服务器上,通过limit_conn模块限制瞬时并发连接数。在方法层面,使用Sentinel、RateLimiter等工具来限制接口的并发请求数等,它们的核心目标是限制并发请求数,避免系统不堪重负。用过的问题。在限流的整个体系中,我觉得有三个比较重要的纬度资源,就是用什么资源来限流,比如接口或者连接等阈值,达到多少流量高峰,限制后续流量访问触发限流后。行为,如熔断、降级等限流算法是整个限流实现的核心。不同的限流算法可以准确控制流量的粒度,是否支持突发流量。常见的限流算法有滑动窗口、令牌桶、漏桶等。令牌桶是一种限流算法,可以处理突发流量。系统以恒定的速率向令牌桶中添加令牌,然后每个请求都需要从令牌桶中获取令牌才能访问。到,就会触发限流。所以,我觉得这道题从两个方面考察了大家对限流的整体认知。理解限流算法对限流本身的重要性Master:令牌桶是一种控制请求访问速率的算法。它的具体工作原理是:系统按照一定的速率产生令牌,放入令牌桶中。然后,所有客户端请求进入系统后,首先从令牌桶中获取token,获取到token成功则表示访问正常。如果获取不到token,说明请求流量大于token生成速率,即并发数超过系统负载的阈值,会触发限流动作。在低流量的情况下,令牌桶可以缓存一定数量的令牌,因此令牌桶可以应对瞬间突发的流量。今天的分享到此结束。喜欢我的作品记得点赞收藏关注哦!需要全套面试资料扫描下方!!!版权声明:除特别声明外,本博客所有文章均采用CCBY-NC-SA4.0许可协议。转载请注明来自Mic带你学建筑!如果本文对您有帮助,请给个关注和点赞。您的坚持是我不断创作的动力。欢迎关注同名微信公众号获取更多技术干货!