# wayee-limiter **Repository Path**: no_pop/wayee-limiter ## Basic Information - **Project Name**: wayee-limiter - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-10-14 - **Last Updated**: 2024-10-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 熔断限流组件 ### 实现方式 使用 AOP 环绕增强需要限流的方法,通过 `limiterHandler` 的 check 方法来判断是否执行目标方法 ### 限流模式 #### 计数器限流 使用 Map + DelayQueue,每次向 DelayQueue 中添加元素,当队列容量到达指定上限,返回失败 ![img_1.png](assets/img_1.png) #### 固定窗口限流 按照分钟级别限流 缺点:例如在一分钟内允许100个请求,但是可能在59秒的时候来了100个请求,在1分01秒的时候又来了100个请求,也就是说在3秒内进入了200个请求,有尖端情况。 ![img_2.png](assets/img_2.png) #### 滑动窗口限流 使用 Redis 的 ZSet,根据请求的到达时间排序,每次清除最老的数据请求,达到平缓的限流情况 ![img_3.png](assets/img_3.png) #### 漏斗限流 每次计算当前请求和上一次请求的时间间隔,计算漏斗流出了多少请求。 ![img_4.png](assets/img_4.png) #### 令牌限流 使用定时任务按照固定间隔生产 token,只有获取到 token 的请求才能访问 ![img_5.png](assets/img_5.png) ### 使用方式 在controller方法上添加 Limit 注解 ![img.png](assets/img.png) ###