Premise最近公司在做分布式限流,有需求的话。研究的限流框架大概包括1.springcloudgateway集成了redis限流,但是属于网关层限流2.阿里哨兵,功能强大,自带监控平台3.srpingcloudhystrix,属于接口层限流,提供线程池和信号量两种方法4.其他:redission和手动代码的实际需求属于业务端限流,Redission使用起来更方便,更灵活。下面介绍redission分布式限流的使用方法和原理:1.使用非常简单,如下//1.声明一个限流器RRateLimiterrateLimiter=redissonClient.getRateLimiter(key);//2.设置速率并在5秒内生成3个令牌rateLimiter.trySetRate(RateType.OVERALL,3,5,RateIntervalUnit.SECONDS);//3.尝试获取token,返回truerateLimiter.tryAcquire(1)二、原理1.getRateLimiter//声明一个限流器,名字为keyredissonClient.getRateLimiter(key)2.trySetRatetrySetRate方法在后面,底层实现如下如下:@OverridepublicRFuturetrySetRateAsync(RateTypetype,longrate,longrateInterval,RateIntervalUnitunit){returncommandExecutor.evalWriteAsync(getName(),LongCodec.INSTANCE,RedisCommands.EVAL_BOOLEAN,"redis.call('hsetnx',KEYS[1],'rate',ARGV[1]);"+"redis.call('hsetnx',KEYS[1],'interval',ARGV[2]);"+"returnredis.call('hsetnx',KEYS[1],'type',ARGV[3]);",Collections.