java分布式应用限流实现
生活随笔
收集整理的這篇文章主要介紹了
java分布式应用限流实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
分布式應用限流
實現分布式限流的思路有很多種
基于Redis的限流
Redis的setnx的操作
Redis的數據結構zset
public boolean limitZset(){int currentTime = Helper.getCurrentTime();int intervalTime = 10 * 1000;System.err.println("開始時間:" + currentTime);if(redisTemplate.hasKey("limit_key")) {Integer count = redisTemplate.opsForZSet().rangeByScore("limit_key", currentTime - intervalTime, currentTime).size(); // intervalTime是限流的時間System.out.println(count);if (count != null && count > 5) {return false;}}redisTemplate.opsForZSet().add("limit_key",UUID.randomUUID().toString(),currentTime);System.err.println("結束時間:" + 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());} }?
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的java分布式应用限流实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java限流策
- 下一篇: JAVA中限制接口流量、并发的方法