文章目录
- 引言
- I 基于GuavaCache实现频率限制
-
- 1.1 基于LoadingCache实现(灵活控制,高效率)【推荐】
- 1.2 基于LoadingCache自定义RateLimiter (无法灵活控制限制时间范围)
- 1.3 基于google的RateLimiter实现(效率低)
- II 基于Redis实现限流
引言
背景:提供接口给下游(外部厂商)的接口,通过控制IP地址来限制接口的调用频率,可以有效保护系统的稳定性和安全性。
限制接口调用频率实现方案:
- 基于自定义注解+切面 的方式实现
- 使用
Guava Cache
/redis
/自定义缓存工具类(ConcurrentHashMap)
来记录请求频率,并通过设定阈值来限制请求次数。
- 分布式缓存:redis、memcached
- 本地(进程内)缓存:ehcache、GuavaCache(Guava Cache是单个应用运行时的本地缓存,支持高并发且线程安全的)、Caffeine
- 定期清理缓存的方法
I 基于GuavaCache实现频率限制
<dependency>