系统中的接口通常都有限流,比如70次/秒,如何保证我们的接口的调用次数在超过第三方接口限流的时候快速失败呢?这时候就需要限流器了。下面是笔者用复述,实现限流器的流程图。
/* * *获取限流权限 * @param关键 * @param毫秒毫秒数 * @param limitCount限流次数 * @return */公共静态布尔getCurrentLimiting(字符串键,长毫秒,整数limitCount) { 尝试{ 布尔currentLimitingLock=RedisDistributeLockUtil.lock(关键); 如果(currentLimitingLock) { 长llen=RedisClient.llen (getCurrentLimitingRedisKey(关键)); 如果(llen & lt;limitCount) { RedisClient.lpush (getCurrentLimitingRedisKey(关键),DateUtil.current(假)+ " "); 返回true; 其他}{ 长lastTime=Long.parseLong (RedisClient.lindex (getCurrentLimitingRedisKey(关键),1)); 如果((DateUtil.current (false) - lastTime)祝辞=毫秒){ RedisClient.lpush (getCurrentLimitingRedisKey(关键),DateUtil.current(假)+ " "); RedisClient.ltrim (getCurrentLimitingRedisKey(关键),0,limitCount); 返回true; } } } 最后}{ RedisDistributeLockUtil.unlock(关键); } 返回错误; }
以上这篇基于复述的限流器的实现(示例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。