java分布式应用限流实现
生活随笔
收集整理的這篇文章主要介紹了
java分布式应用限流实现
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
分布式應(yīng)用限流
實(shí)現(xiàn)分布式限流的思路有很多種
基于Redis的限流
Redis的setnx的操作
Redis的數(shù)據(jù)結(jié)構(gòu)zset
public boolean limitZset(){int currentTime = Helper.getCurrentTime();int intervalTime = 10 * 1000;System.err.println("開始時(shí)間:" + currentTime);if(redisTemplate.hasKey("limit_key")) {Integer count = redisTemplate.opsForZSet().rangeByScore("limit_key", currentTime - intervalTime, currentTime).size(); // intervalTime是限流的時(shí)間System.out.println(count);if (count != null && count > 5) {return false;}}redisTemplate.opsForZSet().add("limit_key",UUID.randomUUID().toString(),currentTime);System.err.println("結(jié)束時(shí)間:" + Helper.getCurrentTime());return true;}Redis的令牌桶算法
public boolean limitLeakyBuckets (){Object result = redisTemplate.opsForList().leftPop("limit_leaky_buckets");if(result == null){return false;}return true;}@Scheduled(fixedDelay = 10000,initialDelay = 0) public void setToken(){redisTemplate.opsForList().rightPush("limit_leaky_buckets",UUID.randomUUID().toString());} }?
超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的java分布式应用限流实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java限流策
- 下一篇: Java高并发系统的限流策略