首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

rate-limit 一款 java 开源渐进式分布式限流框架使用介绍

项目简介

rate-limit[1] 是一个为 java 设计的渐进式限流工具。

目的是为了深入学习和使用限流,后续将会持续迭代。

特性

1 渐进式实现

2 支持独立于 spring 使用

3 支持整合 spring

4 支持整合 spring-boot

5 内置多种限流策略

快速开始

需求

1 jdk 1.7

2 maven 3.x+

maven 导入

入门例子

方法定义

限流注解放在方法上,指定对应的限制频率。

也可以定义在类上,默认下面的所有方法生效。方法上的优先级高于类。

默认为 60S 内,可以调用 1000 次。

这个例子中我们 2S 内最多调用 5 次。

代码测试

通过字节码获取方法对应的方法代理。

当调用超出限制时,默认抛出 异常。

这里默认使用的是令牌桶算法,所以会出现异常。

重复注解 @RateLimits

有时候我们希望同时做多个的限制:

(1)一分钟不超过 10 次

(2)一小时不超过 30 次

为了支持多个配置,我们引入了新的注解 ,可以指定一个 数组。

方法上同时使用 + 是可以同时生效的,不过为了简单,一般不建议混合使用。

指定引导类

等价于

下面我们来一起看一下 RateLimitBs 引导类。

引导类

作为引导类,便于用户自定义配置。

其中 rateLimit 内置 工具中的策略如下:

配置建议

1.

分布式系统,cacheService 建议使用基于 redis 的集中式缓存策略。

2.

configService 如果想更加灵活,可以基于数据库的配置查询

RateLimitBs 引导类

RateLimitBs 默认配置如下:

spring 整合

maven 引入

类定义

方法

和上面使用类似,直接在方法上声明 注解即可。

配置

通过 声明启用限流。

的属性配置和 RateLimitBs 属性是以一一对应的。

这里的属性值,都是对应的 spring bean 名称,支持用户自定义。

spring-boot 整合

maven 引入

使用

其他和 spring 保持一致。

缓存相关工具

cache: 手写渐进式 redis[2]

common-cache: 通用缓存标准定义[3]

redis-config: 兼容各种常见的 redis 配置模式[4]

lock: 开箱即用的分布式锁[5]

resubmit: 防重复提交[6]

rate-limit: 限流[7]

References

rate-limit: https://github.com/houbb/rate-limit

cache: 手写渐进式 redis: https://github.com/houbb/cache

common-cache: 通用缓存标准定义: https://github.com/houbb/common-cache

redis-config: 兼容各种常见的 redis 配置模式: https://github.com/houbb/redis-config

lock: 开箱即用的分布式锁: https://github.com/houbb/lock

resubmit: 防重复提交: https://github.com/houbb/resubmit

rate-limit: 限流: https://github.com/houbb/rate-limit/

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20221213A06QM700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券