Mapmap = new HashMap<>(); for (int i = 0; i < 100; i++) { map.put("account",IdUtils.genRandomNum(8)); map.put("password",IdUtils.genRandomNum(5)); HttpUtils.sendPost("http://localhost:8087/user/login", map); System.out.println(i); }
于是加一個簡單的請求限流 順便學(xué)習(xí)相關(guān)技能
先引用相關(guān)jar包
io.github.forezp distributed-limit-core 1.0.2
本地限流在配置文件 application.properties 中添加配置
limit.type: local
需要限流的Controller方法上添加注解
@Limit(identifier = "forezp", limtNum = 1, seconds = 5)
完事... 能達(dá)到需求了就ok
這里限流針對的是單個請求的簡單限流,最好還是針對ip做限流
其他限流方式
令牌桶算法:
說實話沒理解...
public class RateLimiterDemo { private static RateLimiter limiter = RateLimiter.create(5); public static void exec() { limiter.acquire(1); try { // 處理核心邏輯 TimeUnit.SECONDS.sleep(1); System.out.println("--" + System.currentTimeMillis() / 1000); } catch (InterruptedException e) { e.printStackTrace(); } } }
漏桶算法示例:
public class CountRateLimiterDemo1 { private static AtomicInteger count = new AtomicInteger(0); public static void exec() { if (count.get() >= 5) { System.out.println("請求過多!"+System.currentTimeMillis()/1000); } else { count.incrementAndGet(); try { //處理核心邏輯 TimeUnit.SECONDS.sleep(1); System.out.println("--"+System.currentTimeMillis()/1000); } catch (InterruptedException e) { e.printStackTrace(); } finally { count.decrementAndGet(); } } } }
記錄下代碼,方面下次使用。
詳情請閱讀原作者:點我
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/76856.html
摘要:常見的限流方式,比如適用線程池隔離,超過線程池的負(fù)載,走熔斷的邏輯。在令牌桶算法中,存在一個桶,用來存放固定數(shù)量的令牌。,令牌桶每秒填充平均速率。 轉(zhuǎn)載請標(biāo)明出處: https://www.fangzhipeng.com本文出自方志朋的博客 在高并發(fā)的系統(tǒng)中,往往需要在系統(tǒng)中做限流,一方面是為了防止大量的請求使服務(wù)器過載,導(dǎo)致服務(wù)不可用,另一方面是為了防止網(wǎng)絡(luò)攻擊。 常見的限流方式,...
摘要:計數(shù)限流算法無論固定窗口還是滑動窗口核心均是對請求進(jìn)行計數(shù),區(qū)別僅僅在于對于計數(shù)時間區(qū)間的處理。令牌桶限流實現(xiàn)原理令牌桶限流的實現(xiàn)原理在有詳細(xì)說明。因此由此為入口進(jìn)行分析。目前可返回的實現(xiàn)子類包括及兩種,具體不同下文詳細(xì)分析。 限流 限流一詞常用于計算機網(wǎng)絡(luò)之中,定義如下: In computer networks, rate limiting is used to control t...
摘要:限流算法最簡單粗暴的限流算法就是計數(shù)器法了,而比較常用的有漏桶算法和令牌桶算法計數(shù)器計數(shù)器法是限流算法里最簡單也是最容易實現(xiàn)的一種算法。 運營研發(fā)團隊 李樂 高并發(fā)系統(tǒng)有三把利器:緩存、降級和限流; 限流的目的是通過對并發(fā)訪問/請求進(jìn)行限速來保護系統(tǒng),一旦達(dá)到限制速率則可以拒絕服務(wù)(定向到錯誤頁)、排隊等待(秒殺)、降級(返回兜底數(shù)據(jù)或默認(rèn)數(shù)據(jù)); 高并發(fā)系統(tǒng)常見的限流有:限制總并發(fā)...
摘要:下面是幾種常見的限流技術(shù)一限流算法常用的限流算法有令牌桶,漏桶令牌桶令牌桶算法是網(wǎng)絡(luò)流量整形和速率限制中最常使用的一種算法。 就秒殺接口來說,當(dāng)訪問頻率或者并發(fā)請求超過其承受范圍的時候,這時候我們就要考慮限流來保證接口的可用性,以防止非預(yù)期的請求對系統(tǒng)壓力過大而引起的系統(tǒng)癱瘓。通常的策略就是拒絕多余的訪問,或者讓多余的訪問排隊等待服務(wù)。下面是幾種常見的限流技術(shù) 一、限流算法常用的限流算...
摘要:對請求的目標(biāo)進(jìn)行限流例如某個每分鐘只允許調(diào)用多少次對客戶端的訪問進(jìn)行限流例如某個每分鐘只允許請求多少次對某些特定用戶或者用戶組進(jìn)行限流例如非用戶限制每分鐘只允許調(diào)用次某個等多維度混合的限流。 對請求的目標(biāo)URL進(jìn)行限流(例如:某個URL每分鐘只允許調(diào)用多少次) 對客戶端的訪問IP進(jìn)行限流(例如:某個IP每分鐘只允許請求多少次) 對某些特定用戶或者用戶組進(jìn)行限流(例如:非VIP用戶限制...
摘要:之前有了解到哥的一部分讀者們沒有充分搞清楚限流和熔斷的關(guān)系。后者表示系統(tǒng)在同一時刻能處理的最大請求數(shù)量,比如次的并發(fā)。后續(xù)限流策略需要設(shè)定的具體標(biāo)準(zhǔn)數(shù)值就是從這些指標(biāo)中來的。限流閾值不繼續(xù)處理請求。 如果這是第二次看到我的文章,歡迎掃描文末二維碼訂閱我喲~本文長度為2869字,建議閱讀8分鐘。 可能你在網(wǎng)上看過不少「限流」相關(guān)的文章,但是z哥的這篇可能是最全面,最深入淺出的一篇了(容我...
閱讀 1472·2021-11-24 09:39
閱讀 1788·2021-11-22 15:25
閱讀 3739·2021-11-19 09:40
閱讀 3299·2021-09-22 15:31
閱讀 1299·2021-07-29 13:49
閱讀 1208·2019-08-26 11:59
閱讀 1321·2019-08-26 11:39
閱讀 933·2019-08-26 11:00