4种经典限流算法详解


4种经典限流算法详解


在高并发系统中,限流是保护服务稳定性的核心手段之一。它通过控制请求速率,防止突发流量压垮系统,但需在系统稳定性和用户体验之间找到平衡。本文将详解四种经典限流算法,涵盖原理、代码实现及适用场景,助你轻松应对面试与实际开发挑战。


1. 固定窗口算法

原理

  • 将时间划分为固定窗口(如1秒),维护一个计数器统计窗口内请求数。
  • 若计数器超过阈值,拒绝后续请求;窗口结束后计数器归零。

代码示例

public class FixedWindowLimiter {
   
    private long lastResetTime = System.currentTimeMillis();
    private int counter = 0;
    private final int threshold = 100; // 阈值
    private final long windowSize = 1000; // 窗口大小(毫秒)

    public synchronized boolean tryAcquire() {
   
        long currentTime = System.currentTimeMillis();
        if (currentTime - lastResetTime > windowSize) {
   
            counter = 0; // 重置计数器
            lastResetTime = currentTime; // 新窗口开始
        }
        if (counter < threshold) {
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值