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); }
于是加一個(gè)簡(jiǎn)單的請(qǐng)求限流 順便學(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
這里限流針對(duì)的是單個(gè)請(qǐng)求的簡(jiǎn)單限流,最好還是針對(duì)ip做限流
其他限流方式
令牌桶算法:
說(shuō)實(shí)話沒(méi)理解...
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("請(qǐng)求過(guò)多!"+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(); } } } }
記錄下代碼,方面下次使用。
詳情請(qǐng)閱讀原作者:點(diǎn)我
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/76856.html
摘要:常見(jiàn)的限流方式,比如適用線程池隔離,超過(guò)線程池的負(fù)載,走熔斷的邏輯。在令牌桶算法中,存在一個(gè)桶,用來(lái)存放固定數(shù)量的令牌。,令牌桶每秒填充平均速率。 轉(zhuǎn)載請(qǐng)標(biāo)明出處: https://www.fangzhipeng.com本文出自方志朋的博客 在高并發(fā)的系統(tǒng)中,往往需要在系統(tǒng)中做限流,一方面是為了防止大量的請(qǐng)求使服務(wù)器過(guò)載,導(dǎo)致服務(wù)不可用,另一方面是為了防止網(wǎng)絡(luò)攻擊。 常見(jiàn)的限流方式,...
摘要:計(jì)數(shù)限流算法無(wú)論固定窗口還是滑動(dòng)窗口核心均是對(duì)請(qǐng)求進(jìn)行計(jì)數(shù),區(qū)別僅僅在于對(duì)于計(jì)數(shù)時(shí)間區(qū)間的處理。令牌桶限流實(shí)現(xiàn)原理令牌桶限流的實(shí)現(xiàn)原理在有詳細(xì)說(shuō)明。因此由此為入口進(jìn)行分析。目前可返回的實(shí)現(xiàn)子類(lèi)包括及兩種,具體不同下文詳細(xì)分析。 限流 限流一詞常用于計(jì)算機(jī)網(wǎng)絡(luò)之中,定義如下: In computer networks, rate limiting is used to control t...
摘要:限流算法最簡(jiǎn)單粗暴的限流算法就是計(jì)數(shù)器法了,而比較常用的有漏桶算法和令牌桶算法計(jì)數(shù)器計(jì)數(shù)器法是限流算法里最簡(jiǎn)單也是最容易實(shí)現(xiàn)的一種算法。 運(yùn)營(yíng)研發(fā)團(tuán)隊(duì) 李樂(lè) 高并發(fā)系統(tǒng)有三把利器:緩存、降級(jí)和限流; 限流的目的是通過(guò)對(duì)并發(fā)訪問(wèn)/請(qǐng)求進(jìn)行限速來(lái)保護(hù)系統(tǒng),一旦達(dá)到限制速率則可以拒絕服務(wù)(定向到錯(cuò)誤頁(yè))、排隊(duì)等待(秒殺)、降級(jí)(返回兜底數(shù)據(jù)或默認(rèn)數(shù)據(jù)); 高并發(fā)系統(tǒng)常見(jiàn)的限流有:限制總并發(fā)...
摘要:下面是幾種常見(jiàn)的限流技術(shù)一限流算法常用的限流算法有令牌桶,漏桶令牌桶令牌桶算法是網(wǎng)絡(luò)流量整形和速率限制中最常使用的一種算法。 就秒殺接口來(lái)說(shuō),當(dāng)訪問(wèn)頻率或者并發(fā)請(qǐng)求超過(guò)其承受范圍的時(shí)候,這時(shí)候我們就要考慮限流來(lái)保證接口的可用性,以防止非預(yù)期的請(qǐng)求對(duì)系統(tǒng)壓力過(guò)大而引起的系統(tǒng)癱瘓。通常的策略就是拒絕多余的訪問(wèn),或者讓多余的訪問(wèn)排隊(duì)等待服務(wù)。下面是幾種常見(jiàn)的限流技術(shù) 一、限流算法常用的限流算...
摘要:對(duì)請(qǐng)求的目標(biāo)進(jìn)行限流例如某個(gè)每分鐘只允許調(diào)用多少次對(duì)客戶(hù)端的訪問(wèn)進(jìn)行限流例如某個(gè)每分鐘只允許請(qǐng)求多少次對(duì)某些特定用戶(hù)或者用戶(hù)組進(jìn)行限流例如非用戶(hù)限制每分鐘只允許調(diào)用次某個(gè)等多維度混合的限流。 對(duì)請(qǐng)求的目標(biāo)URL進(jìn)行限流(例如:某個(gè)URL每分鐘只允許調(diào)用多少次) 對(duì)客戶(hù)端的訪問(wèn)IP進(jìn)行限流(例如:某個(gè)IP每分鐘只允許請(qǐng)求多少次) 對(duì)某些特定用戶(hù)或者用戶(hù)組進(jìn)行限流(例如:非VIP用戶(hù)限制...
摘要:之前有了解到哥的一部分讀者們沒(méi)有充分搞清楚限流和熔斷的關(guān)系。后者表示系統(tǒng)在同一時(shí)刻能處理的最大請(qǐng)求數(shù)量,比如次的并發(fā)。后續(xù)限流策略需要設(shè)定的具體標(biāo)準(zhǔn)數(shù)值就是從這些指標(biāo)中來(lái)的。限流閾值不繼續(xù)處理請(qǐng)求。 如果這是第二次看到我的文章,歡迎掃描文末二維碼訂閱我喲~本文長(zhǎng)度為2869字,建議閱讀8分鐘。 可能你在網(wǎng)上看過(guò)不少「限流」相關(guān)的文章,但是z哥的這篇可能是最全面,最深入淺出的一篇了(容我...
閱讀 1541·2021-11-24 09:39
閱讀 1846·2021-11-22 15:25
閱讀 3815·2021-11-19 09:40
閱讀 3358·2021-09-22 15:31
閱讀 1373·2021-07-29 13:49
閱讀 1307·2019-08-26 11:59
閱讀 1381·2019-08-26 11:39
閱讀 986·2019-08-26 11:00