精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

SpringBoot項目中接口限流實現方案

開發 前端
本篇帶給大家在SpringBoot項目中接口限流實現方案,一般有漏桶算法和令牌桶算法及計數器三種方式。希望對你有所幫助!

[[390454]]

限流算法

一般有漏桶算法和令牌桶算法及計數器三種方式。

計數器

用計數器實現限流有點簡單粗暴,一般我們會限 制一秒鐘的能夠通過的請求數,比如限流QPS為100,算法的實現思路就是從第一個請求進來開始計時,在接下去的1s內,每來一個請求,就把計數加1,如果累加的數字達到了100,那么后續的請求就會被全部拒絕。等到1s結束后,把計數恢復成0,重新開始計數。

具體的實現可以是這樣的:對于每次服務調用,可以通過 AtomicLong#incrementAndGet()方法來給計數器加1并返回最新值,通過這個最新值和閾值進行比較。

這種實現方式,有一個弊端:如果我在單位時間1s內的前10ms,已經通過了100個請求,那后面的990ms,只能眼巴巴的把請求拒絕,我們把這種現象稱為“突刺現象”。

漏桶算法

漏桶算法主要是控制數據注入到網絡的速率,平滑網絡上的突發流量。漏桶算法提供了一種機制,通過它,突發流量可以被整形以便為網絡提供一個穩定的流量。

漏桶可以看作是一個帶有常量服務時間的單服務器隊列,如果漏桶(包緩存)溢出,那么數據包會被丟棄。 在網絡中,漏桶算法可以控制端口的流量輸出速率,平滑網絡上的突發流量,實現流量整形,從而為網絡提供一個穩定的流量。

如圖所示,把請求比作是水,水來了都先放進桶里,并以限定的速度出水,當水來得過猛而出水不夠快時就會導致水直接溢出,即拒絕服務。

image

可以看出,漏桶算法可以很好地控制流量的訪問速度,一旦超過該速度就拒絕服務。

令牌桶算法

令牌桶算法的原理是系統會以一個恒定的速度往桶里放入令牌,而如果請求需要被處理,則需要先從桶里獲取一個令牌,當桶里沒有令牌可取時,則拒絕服務。從原理上看,令牌桶算法和漏桶算法是相反的,一個“進水”,一個是“漏水”。

image

了解完后3種限流算法后,接下來我們看看在項目中如何應用。

  • 使用Google Guava庫RateLimiter

RateLimiter使用的是一種叫令牌桶的流控算法,RateLimiter會按照一定的頻率往桶里扔令牌,線程拿到令牌才能執行;且RateLimiter不支持集群環境,集群環境需要借助Redis等第三方工具實現。

依賴

  1. <dependency> 
  2.     <groupId>org.springframework.boot</groupId> 
  3.     <artifactId>spring-boot-starter-web</artifactId> 
  4. </dependency> 
  5. <dependency> 
  6.     <groupId>com.google.guava</groupId> 
  7.     <artifactId>guava</artifactId> 
  8.     <version>30.1.1-jre</version> 
  9. </dependency> 

 實現目標:每秒只允許3個請求通過。

  1. @RestController 
  2. @RequestMapping("/products"
  3. public class ProductController { 
  4.      
  5.     private final RateLimiter rateLimiter = RateLimiter.create(5.0) ; 
  6.      
  7.     @GetMapping("/{id}"
  8.     public ResponseEntity<R> queryProducts(@PathVariable("id")  String id) throws Exception { 
  9.         if (rateLimiter.tryAcquire(1)) { 
  10.             TimeUnit.MILLISECONDS.sleep(200) ; 
  11.             return new ResponseEntity<R>(R.success("查詢商品【" + id + "】成功"), HttpStatus.OK) ; 
  12.         } 
  13.         return new ResponseEntity<R>(R.failure("你訪問的太快了"), HttpStatus.INTERNAL_SERVER_ERROR) ; 
  14.     } 

 通過Jmeter測試,版本5.4.1

線程配置,100個并發循環2次

接口配置

測試結果

RateLimiter相關方法說明: 

參考https://ifeve!com/guava-ratelimiter

  • 使用百度的ratelimiter-spring-boot-starter

ratelimiter-spring-boot-starter為服務端限流的SDK,提供單節點維度的限流功能,通過限流算法,在流量過大時保證服務端按照一定速率平滑處理請求。

基于Spring Boot框架開發,目的是為Spring Cloud項目增加限流功能,同樣在Spring Boot項目中也能正常使用。 本Starter的目前的應用場景為在Spring Cloud/Spring Boot的Web項目中引入該限流Starter,配置限流規則開啟限流功能。 非Spring Web項目的特性正在規劃中。

限流維度為:節點級、方法維度、服務維度限流。

  • 節點級別含義為限流SDK引入目標服務代碼,限流規則針對目標服務部署的每個實例單獨生效。
  • 方法維度含義為可以為目標服務的每個方法單獨配置限流規則,該規則針對當前方法生效,與其他方法互不影響,目前方法僅支持HttpMethod+uri。
  • 服務維度含義為可針對每個服務實例配置全局規則,流入該服務實例的每個請求都將先進行服務限流判斷。 服務級和方法級同時存在,將先后進過服務級、方法級兩種限流器,任意一個限流器拒絕都將拒絕請求。

目前方法級只提供http方法的規則配置與生效,后續有計劃支持Rpc方法的限流。

依賴

  1. <dependency> 
  2.         <groupId>com.baidubce.formula</groupId> 
  3.         <artifactId>ratelimiter-spring-boot-starter</artifactId> 
  4.         <version>2.1.1.1</version> 
  5. </dependency> 

 應用配置

  1. spring: 
  2.   application: 
  3.     name: ratelimiter 
  4. --- 
  5. formula: 
  6.   ratelimiter: 
  7.     enabled: true 
  8.     ratelimiters: 
  9.     # 限流生效的位置,配置具體的uri 
  10.     - effectiveLocation: /products/q/** 
  11.       # 限流類型:1表示http,2表示rpc(暫未支持) 
  12.       effectiveType: 1 
  13.       # 該規則是否生效 
  14.       enabled: true 
  15.       httpMethod: GET 
  16.       # 限流器類型,1表示令牌桶 
  17.       limiterType: 1 
  18.       # 請求來源,當前版本不區分請求來源,區分請求來源的需求正在開發 
  19.       # source: 
  20.       # 限流的QPS值 
  21.       threshold: 5 

 注意:這里的spring.application.name必須配置,不然啟動報錯;

formula.ratelimiter.ratelimiters.source這個沒有搞懂怎么配置的,官方文檔沒找到。

接口

  1. @GetMapping("/q/{id}"
  2. public ResponseEntity<R> queryProduct(@PathVariable("id")  String id) throws Exception { 
  3.         TimeUnit.MILLISECONDS.sleep(200) ; 
  4.         return new ResponseEntity<R>(R.success("查詢商品【" + id + "】成功"), HttpStatus.OK) ; 

 測試

 

對于失敗的請求,返回狀態碼429(Too Many Request)

baidu的這個限流工具,核心過濾器:

RateLimiterEffectiveFilter.java

waitForPermit方法

waitForPermission方法

HttpUtil#isBlockException方法

看到這里你想修改返回信息只能是重寫它的代碼了。

重寫該類:

在我們項目src新建

com.baidu.formula.ratelimiter.spring.boot.autoconfigure.util.HttpUtil類修改isBlockException方法

  1. public static boolean isBlockException(HttpServletResponse response, Exception e) throws IOException { 
  2.         if (e instanceof BlockException) { 
  3.             response.setStatus(429); // too many request 
  4.             response.setContentType("application/json; charset=utf-8"); 
  5.             response.setCharacterEncoding("UTF-8"); 
  6.             response.getWriter().print("{\"code\": -1, \"message\": \"你的請求太快了\"}") ; 
  7.             response.flushBuffer(); 
  8.             return true
  9.         } else { 
  10.             return false
  11.         } 

 測試:

完畢!!!

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2024-09-09 11:35:35

2021-05-14 07:45:07

Sentinel 接口限流

2023-08-23 13:24:00

異步編程方法

2021-03-19 10:14:28

SpringBoot項目異步調用

2021-07-23 14:58:28

Nginx限流方案

2021-03-23 08:39:27

SpringBootRedis管道技術

2024-08-29 15:26:21

2023-08-21 08:01:03

2020-10-27 14:15:42

SpringBoot

2025-11-07 08:05:18

2020-09-27 10:35:22

Vue前端代碼

2023-03-23 22:46:38

Spring限流機制

2022-05-03 19:38:15

限流微服務Sentinel

2024-09-13 10:21:50

2022-06-20 10:45:55

SpringBoot項目

2024-07-03 13:03:30

Spring注解項目

2023-09-06 15:22:26

限流Java

2024-12-03 08:43:49

2013-03-31 14:10:55

敏捷開發

2022-05-27 07:28:05

jmeter接口測試
點贊
收藏

51CTO技術棧公眾號

不卡一卡二卡三乱码免费网站| 在线成人动漫av| 亚洲人成影院在线观看| 亚洲自拍偷拍在线| 日本三级网站在线观看| 中文字幕av一区二区三区人| 欧美日韩夫妻久久| 国产成人在线小视频| 欧美理论在线观看| 国内精品写真在线观看| 午夜精品久久久久久| 亚洲三级影院| 日韩大陆欧美高清视频区| 日本一区二区黄色| 麻豆传媒视频在线| av高清不卡在线| 成人免费看片视频| 中文字幕视频网| 综合亚洲视频| 国产亚洲一区精品| www.美色吧.com| 久久久久毛片| 精品国产户外野外| 糖心vlog在线免费观看| 国产永久免费高清在线观看| 成人免费毛片嘿嘿连载视频| 国产综合久久久久久| 91久久国产综合久久91| 一区在线观看| 久久成人一区二区| 成年人看的免费视频| 日韩成人动漫在线观看| 欧美mv和日韩mv的网站| 免费在线观看污网站| 亚洲精品国产嫩草在线观看| 无码av免费一区二区三区试看 | www.av蜜桃| av色图一区| 久久免费偷拍视频| 精品国产一区二区三| 国产日韩欧美中文字幕| 日本女优在线视频一区二区| 日本久久久久久久久久久| 国产精品.www| 欧美精品一卡| 欧美精品在线网站| 午夜三级在线观看| 久久密一区二区三区| 国产一区二区三区毛片| 精品人妻一区二区三区蜜桃视频| 亚洲男人都懂第一日本| 日韩成人在线视频网站| 人妻无码一区二区三区| 久久精品福利| 亚洲精品第一页| 国产日韩视频一区| 国产精品自在线拍| 亚洲第一区在线| 麻豆短视频在线观看| 999在线精品| 亚洲成av人影院在线观看| 蜜桃视频无码区在线观看| 精品亚洲a∨一区二区三区18| 欧美精选在线播放| 国产农村妇女精品久久| 国产亚洲精aa在线看| 欧美一区二区成人| 韩国三级视频在线观看| 欧美1区2区3区4区| 亚洲美女性视频| 久久国产柳州莫菁门| 欧美综合一区| www.xxxx欧美| 久草视频免费在线| 伊人久久大香线蕉综合热线| 国色天香2019中文字幕在线观看| 精品成人av一区二区在线播放| 久久精品66| 亚洲精品理论电影| av男人的天堂av| 久久成人综合| 欧美激情欧美激情在线五月| 国产精久久一区二区三区| 亚洲国产国产| 色偷偷偷综合中文字幕;dd| 色偷偷www8888| 国模吧视频一区| 欧美一区第一页| 在线观看免费观看在线| 国产电影一区二区三区| 精品在线不卡| 麻豆91在线| 亚洲成年人网站在线观看| 久久精品香蕉视频| 免费看日产一区二区三区| 精品国产1区二区| 国产91丝袜美女在线播放| 91精品一区二区三区综合| 68精品久久久久久欧美| 中文字幕91爱爱| 成人免费黄色在线| 水蜜桃一区二区三区| 秋霞在线视频| 欧美综合一区二区| 欧美熟妇精品一区二区蜜桃视频| av免费看网址| 777电影在线观看| 亚洲综合一区二区| 国产熟人av一二三区| 玖玖玖电影综合影院| 日韩精品中文字幕久久臀| 国产在线观看免费视频软件| 亚洲黄色视屏| 91精品视频在线播放| 欧美日韩视频精品二区| 亚洲人精品午夜| 亚洲国产精品毛片av不卡在线| 欧美国产亚洲精品| 夜夜嗨av一区二区三区四区| 日韩欧美不卡视频| 国产一区二区三区四| 日本黄网免费一区二区精品| 日本电影在线观看| 在线播放视频一区| 99久久久无码国产精品衣服| 亚洲国产99| 3d精品h动漫啪啪一区二区| 成年人视频在线看| 日韩欧美精品中文字幕| 亚洲成年人av| 综合亚洲视频| 成人在线小视频| 黄色av免费在线看| 精品久久久久久久久久| 极品白嫩的小少妇| 最新国产精品| 成人中文字幕在线观看| 国产精品一久久香蕉国产线看观看 | 91国产丝袜播放在线| 激情亚洲综合在线| 亚洲国产欧洲综合997久久| 亚洲天堂av在线| 欧美精品一区男女天堂| 黄色一级视频免费观看| 精彩视频一区二区| 熟女熟妇伦久久影院毛片一区二区| 欧美色网在线| 亚洲视频综合网| 中文字幕精品视频在线观看| 91麻豆文化传媒在线观看| 国产青青在线视频| 日本国产精品| 日本精品久久中文字幕佐佐木| 五月婷婷伊人网| 精品成人在线视频| 国内精品久久99人妻无码| 亚洲精选一区| 久久综合入口| www.av在线播放| 色婷婷久久久久swag精品| 在线不卡av电影| 日韩av中文在线观看| 亚洲成人第一| www久久久| 欧美日韩xxxxx| 日本黄色一区二区三区| 欧美日韩国产一区中文午夜| 黄色短视频在线观看| 久久五月激情| 正在播放91九色| 国产精品亚洲欧美一级在线| 欧美高清视频一区二区| 免费成人在线看| 日韩欧美成人精品| 美国精品一区二区| 国产精品系列在线播放| 9久久9毛片又大又硬又粗| 国产一区二区在线| 成人久久18免费网站图片| 亚洲第一图区| 亚洲精品一区中文字幕乱码| 最近中文字幕在线视频| 亚洲欧美韩国综合色| 亚洲男女在线观看| 日韩电影一区二区三区四区| 欧美一级免费在线观看| 国产成人高清精品免费5388| 琪琪亚洲精品午夜在线| 巨大荫蒂视频欧美大片| 亚洲成人1234| 中文字幕第31页| 亚洲最色的网站| 久久美女免费视频| 国产美女精品在线| 亚洲欧洲日产国码无码久久99| 成人久久电影| 国产伦精品一区二区三区免| 欧美色网在线| 久久免费国产视频| 最近高清中文在线字幕在线观看| 精品噜噜噜噜久久久久久久久试看| 成人公开免费视频| 亚洲精品伦理在线| 国产午夜福利一区| 成人免费黄色在线| 亚洲一级片av| 天堂久久一区二区三区| 女女百合国产免费网站| 国产剧情在线观看一区| 国产91视觉| 亚洲国产天堂| 日本成人黄色片| 动漫一区二区| 欧美另类高清videos| 国产高清自拍视频在线观看| 亚洲成在人线av| av中文字幕在线免费观看| 在线精品国精品国产尤物884a| 精品无码一区二区三区电影桃花| 中文字幕的久久| 欧美成人午夜精品免费| 成人一道本在线| 亚洲一级片av| 九九在线精品视频| 99视频免费播放| 亚洲一区欧美激情| 久久人人爽人人爽人人av| 伊人色**天天综合婷婷| 亚洲国产精品123| 九九久久婷婷| 久久久久九九九| 都市激情亚洲| 国产精品v欧美精品v日韩| 高清不卡一区| 91精品视频播放| 91精品亚洲一区在线观看| 国产精品久久在线观看| 波多野结衣久久精品| 97超碰色婷婷| 美女扒开腿让男人桶爽久久软| 色综合色综合网色综合| 中文字幕在线观看播放| 久久精品电影一区二区| 婷婷激情在线| 日韩专区中文字幕| 色大18成网站www在线观看| 在线日韩欧美视频| wwwww在线观看免费视频| 亚洲日韩欧美视频| 国内精品一区视频| 亚洲午夜av电影| 国产区高清在线| 伊人伊人伊人久久| 精品国产免费人成电影在线观... 精品国产免费久久久久久尖叫 | 99pao成人国产永久免费视频| 中国一级大黄大黄大色毛片| 一级毛片免费高清中文字幕久久网| 一区二区视频在线观看| 欧美国产一级| 天天综合中文字幕| 天天揉久久久久亚洲精品| 特色特色大片在线| 欧美色图首页| 黄色免费视频大全| 久久一区二区三区超碰国产精品| 黄色一级大片在线观看| 免费观看在线色综合| 蜜桃福利午夜精品一区| 国产成人一区二区精品非洲| 怡红院一区二区| 久久免费看少妇高潮| 国产午夜精品久久久久久久久| 国产精品狼人久久影院观看方式| 天天看天天摸天天操| 亚洲福利一二三区| 伦av综合一区| 欧美女孩性生活视频| 国产成人精品a视频| 亚洲国产成人av在线| 理论视频在线| 久久精品免费电影| 国产探花在线观看| 国产成人综合av| 日韩精品一区国产| 精品一区二区三区视频日产| 91亚洲自偷观看高清| 日韩 欧美 视频| 免费在线观看一区二区三区| xxxxwww一片| 国产午夜精品一区二区三区四区| 男人晚上看的视频| 欧美日韩美女视频| 91国内精品视频| 亚洲精品97久久| 免费看a在线观看| 91精品国产高清自在线| 山东少妇露脸刺激对白在线| 日韩精品免费一区二区在线观看| 中文字幕日韩一区二区三区| 亚洲美女一区| 少妇一级淫免费播放| av影院午夜一区| 欧美一级片在线视频| 一本大道久久a久久综合婷婷 | segui88久久综合| 国产精品久久久久久久美男| youjizzjizz亚洲| 一区二区三区四区五区视频| 国产欧美一级| 欧美体内she精高潮| 国产女人aaa级久久久级| 久久久久久激情| 欧美理论片在线| 国内精品一区视频| 午夜精品一区二区三区在线视 | 成av人片在线观看www| 国产日本欧美一区二区三区在线 | 一本一道久久a久久精品综合 | 国产精品久久久久免费a∨| 91久久偷偷做嫩草影院电| 一本色道久久综合亚洲精品婷婷| 久久不射中文字幕| 三级视频网站在线观看| 一区二区在线观看视频| 一级黄色大毛片| 在线a欧美视频| 免费成人在线电影| 国产精品成人一区二区三区| 欧美在线网站| 国产传媒免费观看| 国产精品黄色在线观看| 亚洲毛片一区二区三区| 日韩精品中文字幕视频在线| 91桃色在线| 国产日韩精品久久| 一区二区亚洲| 亚洲激情 欧美| 亚洲成人av一区二区| 成人午夜精品福利免费| 欧美成人中文字幕| 秋霞午夜一区二区三区视频| 日韩欧美综合在线视频| 国产 欧美 在线| 色综合天天综合网国产成人综合天 | 欧美日韩一区二区在线观看| 国产在线你懂得| 国产精品久久久久久久久久尿| 精品一区免费| 天天碰免费视频| 中文一区在线播放| 一级做a爱片性色毛片| 中文字幕av日韩| 欧美天堂在线| 综合网五月天| 国产精品系列在线播放| 久草网在线观看| 亚洲福利视频在线| 在线观看涩涩| 日韩欧美视频一区二区| 另类小说欧美激情| 国产稀缺精品盗摄盗拍| 日韩精品一区二区三区四区| 国产深夜视频在线观看| 精品午夜一区二区三区| 久久婷婷丁香| 婷婷社区五月天| 精品处破学生在线二十三| 久草在线中文最新视频| 奇米影视首页 狠狠色丁香婷婷久久综合 | 国内精品一区二区三区| 午夜欧洲一区| 欧美大尺度做爰床戏| 亚洲天堂成人在线观看| 亚洲精品无码专区| 日本精品久久久久久久| 999国产精品永久免费视频app| 中文字幕人妻无码系列第三区| 亚洲成人综合网站| 韩国三级在线观看久| 成人午夜黄色影院| 在线成人欧美| 女人十八毛片嫩草av| 日韩欧美在线1卡| 瑟瑟视频在线看| 正在播放精油久久| 99re在线精品| 国产又大又黑又粗| 97精品视频在线| 久久国产成人午夜av影院宅| 中文字幕在线观看视频www| 欧美日韩国产中文字幕| 三区四区在线视频| 精品欧美一区二区三区久久久| 热久久久久久久| xxxxxx国产| www.久久色.com| 婷婷精品在线观看| 亚洲精品在线网址| 91久久国产最好的精华液| 色呦呦久久久|