关于java:Java面试什么是令牌桶限流算法

2次阅读

共计 938 个字符,预计需要花费 3 分钟才能阅读完成。

当面试官问你,“什么是令牌桶限流算法”!

你晓得要怎么答复,能力取得面试官的青眼吗?

大家好,我是 Mic,一个工作了 14 年的 Java 程序员。

对于这个问题,面试官想考查哪些纬度?咱们又该怎么答复呢?

问题解析

限流策略,是在高并发流量下爱护零碎稳定性的一种策略。

所以这个问题,次要是互联网公司会去考查。

当然,在理论业务开发中,限流无处不在,比方

  • 线程池、连接池这些通过限度总的并发数量防止资源适度应用。
  • Nginx 反向代理服务器上通过 limit_conn 模块限度刹时并发连接数
  • 在办法层面通过 Sentinel、RateLimiter 等工具限度接口的并发申请数量等等

他们的外围指标,都是限度并发申请数量,防止零碎被压垮导致不可用的问题。

在限流的整个体系外面,我认为有三个比拟重要的纬度

  • 资源,也就是针对什么资源进行限流,比方接口,或者连贯等
  • 阈值,流量峰值达到多少后限度后续流量的拜访
  • 触发限流后的行为,比方熔断、降级等

限流算法是整个限流实现的外围,不同限流算法,可能对流量的精准管制粒度,以及是否能反对突发流量等状况进行管制常见的限流算法,滑动窗口、令牌桶、漏桶等。

其中令牌桶是一种可能解决突发流量的限流算法,零碎以恒定速率向令牌桶外面增加令牌,而后每个申请都须要从令牌桶去获取令牌能力拜访,如果获取不到,就会触发限流。

所以,我认为这道题考查两个方面

  • 对限流的整体认知
  • 理解限流算法对于限流自身的重要性

高手:

令牌桶是一种管制申请拜访速率的算法。

它具体工作原理是:零碎以肯定速率生成令牌并放到令牌桶外面。

而后所有的客户端申请进入到零碎后,先从令牌桶外面获取令牌,胜利获取到令牌示意能够失常拜访。

如果取不到令牌,阐明申请流量大于令牌生成速率,也就是并发数超过零碎承载的阈值,就会触发限流的动作。

在流量较低的状况下,令牌桶能够缓存肯定数量的令牌,所以令牌桶能够解决刹时突发流量。

总结

好了,明天的分享就到这里完结了。

如果喜爱我的作品,记得点赞、珍藏、关注!

须要整套面试文档扫下方!!!

版权申明:本博客所有文章除特地申明外,均采纳 CC BY-NC-SA 4.0 许可协定。转载请注明来自 Mic 带你学架构
如果本篇文章对您有帮忙,还请帮忙点个关注和赞,您的保持是我一直创作的能源。欢送关注同名微信公众号获取更多技术干货!

正文完
 0