面试官:有哪些常用的限流算法?
创始人
2024-11-13 14:37:54
0

限流的必要性

  • 系统或服务存在处理能力的极限,流量过大可能导致系统卡死、崩溃或不可用。
  • 限流作为预防性措施,确保系统整体服务可用性。

常用的限流算法

1. 令牌桶算法(Token Bucket Algorithm)
  • 核心思路:系统以固定速度往桶里添加令牌,请求到来时需消耗令牌,无令牌则拒绝服务。
  • 特点
    • 桶容量固定,代表系统处理能力阈值。
    • 令牌添加速度固定。
    • 请求处理速度取决于实际请求量,每个请求消耗一个令牌。
    • 桶空时,请求等待或被拒绝。
  • 应用示例:Java中的Guava RateLimiter。
2. 漏桶算法(Leaky Bucket Algorithm)
  • 核心思路:请求如水进入漏桶,以固定速度流出,桶满则溢出,拒绝新请求。
  • 特点
    • 桶容量固定。
    • 流入速度随意。
    • 流出速度固定。
    • 桶满溢出,即拒绝新请求。
3. 计数器算法
  • 用于限制总并发数,通过计数器累计请求次数,达到阈值触发拒绝策略。
  • 每过一定时间,计数器重置。
4. 滑动窗口算法
  • 基于固定时间窗口,统计请求量,设定阈值控制流量。
  • 示例:TCP协议使用。
5. Redis + Lua分布式限流
  • 利用Lua在Redis中的原子性保证限流操作的一致性。
  • 示例:Lua脚本实现限流逻辑。

三方工具

resilience4j
  • 轻量级容错库,提供限流、熔断、重试等功能。
  • 易于与Spring Boot集成。
Sentinel
  • 阿里巴巴开源的流量防护框架,提供限流、熔断、系统负载保护等功能。
  • 与Spring Cloud深度集成。

总结

  • 限流方式多样,包括计数器、滑动窗口、漏桶、令牌桶、Redis + Lua分布式限流等。
  • 限流场景和维度多样,如URL、IP地址、设备ID、用户ID等。
  • 需要结合真实业务场景灵活使用限流方案。

相关内容

热门资讯

五分钟了解!兴动互娱辅助工具如... 五分钟了解!兴动互娱辅助工具如何下载!都是存在有辅助插件(有挂方法)-哔哩哔哩;1、游戏颠覆性的策略...
第九分钟了解!斗棋bug辅助!... 第九分钟了解!斗棋bug辅助!其实一直都是有辅助攻略(竟然有挂)-哔哩哔哩1、全新机制【斗棋bug辅...
八分钟了解!四川游戏家园破解!... 八分钟了解!四川游戏家园破解!总是有辅助教程(新版有挂)-哔哩哔哩1、四川游戏家园破解免费辅助多个强...
第七分钟了解!樱花之盛能不能开... 第七分钟了解!樱花之盛能不能开挂!切实是有辅助技巧(有挂总结)-哔哩哔哩1、游戏颠覆性的策略玩法,独...
七分钟了解!潮汕激k传送屋辅助... 七分钟了解!潮汕激k传送屋辅助器!总是一直都是有辅助方法(的确有挂)-哔哩哔哩潮汕激k传送屋辅助器透...
3分钟了解!宁德钓蟹透视器使用... 3分钟了解!宁德钓蟹透视器使用方法!切实是真的有辅助软件(有挂讲解)-哔哩哔哩1、用户打开应用后不用...
第2分钟了解!闲逸插件!都是有... 第2分钟了解!闲逸插件!都是有辅助脚本(有挂详细)-哔哩哔哩1、操作简单,无需闲逸插件手机版透视脚本...
2分钟了解!湖湘互娱牛牛!一直... 2分钟了解!湖湘互娱牛牛!一直真的是有辅助神器(有挂总结)-哔哩哔哩1、这是跨平台的湖湘互娱牛牛轻量...
第7分钟了解!上饶打炸作必弊!... 第7分钟了解!上饶打炸作必弊!切实一直总是有辅助神器(有挂透明挂)-哔哩哔哩1、上饶打炸作必弊免费辅...
五分钟了解!手游辅助脚本平台!... 五分钟了解!手游辅助脚本平台!真是是有辅助方法(有挂讲解)-哔哩哔哩1、首先打开手游辅助脚本平台辅助...