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

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

你知道要怎么回答,才能获得面试官的青睐吗?

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

关于这个问题,面试官想考察哪些纬度?我们又该怎么回答呢?

问题解析

限流策略,是在高并发流量下保护系统稳定性的一种策略。

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

当然,在实际业务开发中,限流无处不在,比如

  • 线程池、连接池这些通过限制总的并发数量避免资源过度使用。
  • Nginx反向代理服务器上通过limit_conn模块限制瞬时并发连接数
  • 在方法层面通过Sentinel、RateLimiter等工具限制接口的并发请求数量等等

他们的核心目标,都是限制并发请求数量,避免系统被压垮导致不可用的问题。

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

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

限流算法是整个限流实现的核心,不同限流算法,能够对流量的精准控制粒度,以及是否能支持突发流量等情况进行控制常见的限流算法,滑动窗口、令牌桶、漏桶等。

其中令牌桶是一种能够处理突发流量的限流算法,系统以恒定速率向令牌桶里面添加令牌,然后每个请求都需要从令牌桶去获取令牌才能访问,如果获取不到,就会触发限流。

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

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

高手:

令牌桶是一种控制请求访问速率的算法。

它具体工作原理是:系统以一定速率生成令牌并放到令牌桶里面。

然后所有的客户端请求进入到系统后,先从令牌桶里面获取令牌,成功获取到令牌表示可以正常访问。

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

在流量较低的情况下,令牌桶可以缓存一定数量的令牌,所以令牌桶可以处理瞬时突发流量。

总结

好了,今天的分享就到这里结束了。

最后
为大家整理了 Java 核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯等面试题+Spring 源码合集+Java 架构实战电子书供大家学习!需要这份资料的,点击关注,私信我【333】即可获取,或者评论区留下脚印【我爱学习】即可领取

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值