• 【金九银十必问面试题】不得不说的的限流算法 ——令牌桶限流算法 ,如何让面试官眼前一亮!


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

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

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

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

     需要高手面试文档面试文档的小伙伴可以扫描文章底部二维码

    问题解析

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

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

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

    • 线程池、连接池这些通过限制总的并发数量避免资源过度使用。

    • Nginx反向代理服务器上通过limit_conn模块限制瞬时并发连接数

    • 在方法层面通过Sentinel、RateLimiter等工具限制接口的并发请求数量等等

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

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

    • 资源,也就是针对什么资源进行限流,比如接口,或者连接等

    • 阈值,流量峰值达到多少后限制后续流量的访问

    • 触发限流后的行为,比如熔断、降级等

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

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

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

    • 对限流的整体认知

    • 了解限流算法对于限流本身的重要性

    下面看看高手应该怎么回答。

    高手回答

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

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

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

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

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

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

    另外,我将所有Java面试系列制作成了完整的面试文档。它的便捷之处在于,可以通过检索的方式,找到你想要的面试题,目前已经更新180期,总计超过15W字!

    【想领取面试文档的小伙伴可以点击文章底部名片无套路免费赠送给大家!】

    需要高手面试文档面试文档的小伙伴可以扫描下方二维码
    ↓↓↓↓↓↓↓↓↓↓↓↓↓

  • 相关阅读:
    数据结构(2-5~2-8)
    计算机毕业设计Java微博系统网站(源码+系统+mysql数据库+Lw文档)
    使用flv.js + websokect播放rtsp格式视频流
    字符串拆分以及合并--Python
    贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析免疫球蛋白、前列腺癌数据...
    springboot使用自定义注解时提示无法解析符号 ‘ConstraintValidator‘和 无法解析符号 ‘Constraint‘
    【Java刷题进阶】基础入门篇⑥
    记一次频繁fullgc排查到解决全流程复盘
    c: Queue Calling in Ubuntu
    throw抛出异常后的代码执行情况
  • 原文地址:https://blog.csdn.net/q331464542/article/details/126782629