java每秒限流_Java 对IP请求进行限流.

本文介绍了在高并发系统中,限流作为保护措施的重要性,并详细讲解了三种限流算法:计数器、漏桶和令牌桶。重点探讨了Java中使用Guava的RateLimiter实现IP级别的令牌桶限流,每秒限制每个IP调用API两次,通过实例展示了如何配置和使用限流策略。
摘要由CSDN通过智能技术生成

高并发系统下, 有三把利器 缓存 降级 限流.

缓存: 将常用数据缓存起来, 减少数据库或者磁盘IO

降级: 保护核心系统, 降低非核心业务请求响应

限流: 在某一个时间窗口内对请求进行限速, 保护系统

本文主要介绍限流, 常见限流算法中又分为计数器算法, 漏桶算法, 令牌桶算法.

计数器算法

比较简单, 直接用一个map + counter即可实现. 请求来了, 以IP为key,

查询下之前响应次数, 如果调用次数超出MAX_COUT, 返回失败, 属于简单粗暴型选手.

漏桶算法

请求全部进入漏桶, 漏桶恒定速率输出反馈. 这样可以保证数据传输平滑,

但是无法预防突发大量请求, 一秒来了100个请求, 都要阻塞排队, 从小水管输出数据.

9a7391d93b90b2c94b18992f6e94b856.png

令牌桶算法

令牌桶是以固定速度往桶里存令牌, 例如一秒存1000个令牌, 业务请求来了, 直接从桶里获取令牌响应输出.

跟漏桶的差异在于, 他可以预存令牌, 如果一秒钟来了100个请求, 桶里有100个令牌,

那么可以立刻响应给客户端, 而不是排队输出.

31dde0a5bf82c5485e4d6049608b5b27.png

令牌桶的实现

guava中提供了令牌桶的一个封装实现RateLimiter, 可以直接调用, 省的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值