精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲日本欧美| 亚洲国产网址| 午夜精品福利在线| 免费h精品视频在线播放| jizz国产在线| 91精品国产福利在线观看麻豆| 日韩一卡二卡三卡| 日韩av资源在线| a毛片在线看免费观看| 北岛玲一区二区三区四区| 国产精品久久二区| 久久久精品一区二区涩爱| 国产精品自拍区| 日韩精品一区二区三区老鸭窝 | 日韩午夜av| www.亚洲免费视频| 久久精品成人av| 涩爱av色老久久精品偷偷鲁| 色综合天天综合在线视频| 女女同性女同一区二区三区按摩| 色呦呦中文字幕| 韩国v欧美v日本v亚洲v| 欧美一级淫片aaaaaaa视频| 人与动物性xxxx| 香蕉视频一区| 亚洲第一精品久久忘忧草社区| 艹b视频在线观看| 最新中文字幕在线播放| 亚洲一区二区av电影| 伊人久久青草| 成人免费在线视频网| 97精品电影院| 国产伦精品一区二区三区视频黑人| 无码一区二区三区| 国产精品美女久久久浪潮软件| 麻豆国产精品va在线观看不卡 | 日韩高清一级| 日韩三级电影网址| 波多野结衣天堂| 在线天堂中文资源最新版| 一区二区三区中文字幕精品精品 | 欧美精品97| 精品久久久av| 三级影片在线观看| 日韩国产欧美一区二区| 亚洲美腿欧美激情另类| 免费a在线观看播放| 粉嫩的18在线观看极品精品| 欧美亚洲自拍偷拍| 亚洲不卡视频在线| 另类中文字幕国产精品| 在线亚洲免费视频| 免费看的黄色大片| 中文字幕在线官网| 色视频欧美一区二区三区| 91视频最新入口| 日韩精品美女| 欧美性猛交xxxx免费看漫画 | 久久精品国产久精国产| 国产成人精品在线视频| 国产精品久久久久久久久久精爆| 欧美一级播放| 国产999视频| 中文字幕乱码视频| 国模少妇一区二区三区| 91网在线免费观看| www.蜜臀av| 99久久久久免费精品国产 | 欧美亚洲国产激情| 最近2019年好看中文字幕视频| 手机看片日韩av| 91麻豆国产自产在线观看亚洲| www国产精品com| 久久影院一区二区| 国产精品久久久久9999高清| 日本久久精品视频| 在线观看国产一区二区三区| 极品少妇xxxx精品少妇| 国产视色精品亚洲一区二区| 手机看片福利在线观看| 亚洲国产成人在线| 奇米777四色影视在线看| 国产在线天堂www网在线观看| 欧美日韩中文字幕在线视频| 999精品视频在线| 国产精品视频首页| 日韩av影视在线| 人妻无码一区二区三区免费| 中文精品久久| 欧美人妖视频| 欧美一二三区在线观看| 国产精品成人无码专区| 欧美女王vk| 久久国产精品影视| 亚洲熟妇无码乱子av电影| 免费欧美日韩国产三级电影| 97免费高清电视剧观看| 猫咪在线永久网站| 亚洲欧美另类小说| 国产淫片免费看| 国产精品国产亚洲精品| 亚洲欧美国产高清va在线播| 黄色香蕉视频在线观看| 亚洲综合社区| 91精品免费| 成人在线免费电影| 亚洲成人1区2区| 午夜精品免费看| 女厕嘘嘘一区二区在线播放 | 精品精品国产高清a毛片牛牛 | 亚洲欧美日韩一级| www国产精品| 中文字幕亚洲欧美| 中文字幕在线欧美| 成人永久看片免费视频天堂| 亚洲欧洲国产精品久久| 国产精品yjizz视频网| 欧美绝品在线观看成人午夜影视| 成人性生活免费看| 欧美福利网址| 成人h视频在线| 九一国产在线| 天天综合网天天综合色| www.欧美激情.com| 日本成人小视频| 91wwwcom在线观看| 欧美一区二区在线观看视频| 亚洲视频在线观看三级| 欧美日韩亚洲自拍| 国产一区二区三区四区二区| 91av在线国产| 天堂中文在线官网| 亚洲1区2区3区4区| 亚洲性图第一页| 国产精品国内免费一区二区三区| 国产精品扒开腿做爽爽爽的视频| 污视频网站免费观看| 一区二区三区高清在线| 国内av免费观看| 天天色天天射综合网| 国产精品一区二区3区| 国产中文字幕在线视频| 色综合久久综合网97色综合| 一起草在线视频| 亚洲免费大片| 九九九九九精品| 最近在线中文字幕| 亚洲欧美日韩一区在线| 男人天堂av在线播放| 国产亚洲一区二区三区| 色诱视频在线观看| 成人一级毛片| 国产日韩av高清| 日本三级视频在线播放| 欧美日韩久久不卡| 91香蕉一区二区三区在线观看| 精品午夜久久福利影院| 26uuu成人| 亚洲国产视频二区| 韩国19禁主播vip福利视频| 天天躁日日躁狠狠躁喷水| 懂色av一区二区三区| 天天躁日日躁aaaa视频| 日本在线播放一区二区三区| 色一情一乱一伦一区二区三欧美| 粉嫩av一区二区三区四区五区| 中文字幕亚洲综合久久| 91欧美日韩麻豆精品| 亚洲美女在线国产| 中文字幕免费在线播放| 亚洲免费影院| 一区二区三区四区| 伊人久久噜噜噜躁狠狠躁| 久久久久久午夜| 极品白浆推特女神在线观看| 欧美日韩精品一区二区天天拍小说 | 精品精品视频| 91av成人在线| 99se视频在线观看| 日韩欧美资源站| 欧美日韩乱国产| 国产精品国产三级国产三级人妇 | 97在线观看视频国产| 黄色片在线播放| 欧美一区二区三区思思人| 久久综合久久鬼| 国产亚洲成av人在线观看导航| 天天操狠狠操夜夜操| 亚洲一级网站| 亚洲国产日韩综合一区| 欧美视频二区欧美影视| 欧美在线视频播放| 高潮毛片在线观看| 亚洲精品久久视频| 91福利免费视频| 性做久久久久久久久| 成人黄色a级片| 懂色中文一区二区在线播放| 欧美三级一级片| 综合一区av| 日韩影视精品| 日韩欧美中文字幕电影| 亚洲xxxxx性| 国产精品蜜月aⅴ在线| 久久久久久久久久久av| 日本中文在线| 亚洲欧美在线免费| 精品人妻少妇嫩草av无码专区 | 久久欧美在线电影| h视频在线观看免费| 精品国产精品网麻豆系列| 中文字幕一区二区在线视频| 天天综合色天天综合| 国产老头老太做爰视频| 久久一区二区三区四区| 日韩精品――色哟哟| 久久99精品网久久| 欧美日韩怡红院| 国产日韩欧美一区在线| 精品无码av无码免费专区| 欧美亚洲精品在线| 欧美激情导航| 清纯唯美亚洲经典中文字幕| 97视频中文字幕| 国产高清亚洲| 国产日韩精品视频| 成人在线观看免费播放| 日本国产高清不卡| 日韩欧美精品一区二区三区| 欧美成人合集magnet| 麻豆网在线观看| www.欧美三级电影.com| 国产精品二线| 亚洲欧洲日产国码av系列天堂| 天天躁日日躁狠狠躁伊人| 亚洲第一精品夜夜躁人人爽| 亚洲精品国偷拍自产在线观看蜜桃| 欧美精品日韩一区| 国产又粗又猛又爽又黄的视频一| 欧美三日本三级三级在线播放| 日本黄色一级视频| 色偷偷久久一区二区三区| 日本中文字幕第一页| 欧美性xxxx在线播放| 亚洲欧美自拍视频| 色综合色综合色综合色综合色综合| 黄色片视频网站| 狠狠色香婷婷久久亚洲精品| 国产精品第5页| 色噜噜久久综合| 欧美在线视频精品| 精品视频在线看| 一区二区视频网站| 这里只有精品电影| 999久久久久| 欧美大片一区二区三区| 女人18毛片水真多18精品| 精品国产乱码久久久久久浪潮| 理论片中文字幕| 日韩精品欧美激情| 国产专区在线| 麻豆乱码国产一区二区三区| 国精一区二区三区| 欧美一区二粉嫩精品国产一线天| 婷婷综合六月| 国产日韩中文字幕在线| 91精品啪在线观看国产爱臀| 国产一区二区高清不卡| 精品影片在线观看的网站| 亚洲成人自拍视频| 午夜久久影院| 丰满爆乳一区二区三区| 日本成人中文字幕在线视频 | 香蕉污视频在线观看| 欧美日韩一区不卡| 午夜精品久久久久久久爽| 日韩第一页在线| xxxxx日韩| 色综合天天狠天天透天天伊人| 中文字幕在线视频网站| 国产美女精品视频免费观看| 日韩一区二区三区色| 美日韩免费视频| 2023国产精品久久久精品双| 久久视频这里有精品| 男女男精品视频| 国产高潮失禁喷水爽到抽搐| 国产性色一区二区| 九九久久免费视频| 色婷婷综合久久| www.日本在线观看| 在线电影欧美日韩一区二区私密| 91精品国产91久久久久久青草| 国产91精品不卡视频| 国产成人久久精品一区二区三区| 国产欧美亚洲日本| 国产精品久久久久久| 免费看的黄色大片| 国产福利一区二区| 天天摸日日摸狠狠添| 亚洲高清视频的网址| 在线观看亚洲一区二区| 亚洲精品白浆高清久久久久久| 免费黄色网页在线观看| 日韩69视频在线观看| 91麻豆精品激情在线观看最新| 日本一区二区三区www| 在线不卡视频| 九九九九九伊人| 国产亚洲精品超碰| 国产中文字幕免费| 91精品国产黑色紧身裤美女| 精品999视频| 97免费视频在线| 欧美午夜网站| 中文字幕剧情在线观看一区| 视频一区二区三区在线| 99久久免费看精品国产一区| 综合久久综合久久| 在线观看日批视频| 在线视频日韩精品| 欧美电影免费观看网站| 国产区二精品视| 欧美日韩国产高清| 国产又粗又猛大又黄又爽| 国产精品久久久久影院老司| 久久久蜜桃一区二区| 日韩电影大片中文字幕| heyzo中文字幕在线| 51国偷自产一区二区三区| 国产精品久久久久久久免费观看| 91色国产在线| 国产日韩欧美麻豆| 人人爽人人爽人人片av| 亚洲另类图片色| 国产精品伦理| 欧美不卡三区| 国产模特精品视频久久久久| www.17c.com喷水少妇| 亚洲一区二区偷拍精品| 成 人 免费 黄 色| 欧美多人爱爱视频网站| 视频一区日韩精品| 99热这里只有精品免费| 国产a精品视频| 久久久无码精品亚洲国产| 日韩久久久精品| 成人影音在线| 黄色99视频| 亚洲欧美日韩综合国产aⅴ| 欧美熟妇一区二区| 91久久人澡人人添人人爽欧美| 黑人与亚洲人色ⅹvideos| 国产精品激情av电影在线观看| 日韩精品91| 在线观看网站黄| 一区二区三区中文在线观看| www日本高清| 69av在线视频| 国产精品一国产精品| 看欧美ab黄色大片视频免费| 国产精品国产三级国产aⅴ入口 | 成人在线国产视频| www.色综合.com| 男人日女人网站| 中文字幕成人精品久久不卡| 亚洲人成777| 国产成人亚洲综合无码| 成人av综合在线| 99久久久无码国产精品免费蜜柚 | 在线高清av| 亚洲成人av动漫| 国产精品 欧美精品| 日韩字幕在线观看| 中文字幕亚洲综合| 成人高潮a毛片免费观看网站| 91传媒久久久| 成人欧美一区二区三区白人 | 色妞在线综合亚洲欧美| 国产精品亚洲欧美日韩一区在线 | 午夜欧美性电影| 国产美女av一区二区三区| 日本一区二区三区四区五区| 亚洲人成在线播放| 免费精品一区| 99热成人精品热久久66| 国产精品国产三级国产普通话蜜臀| 亚洲美女综合网| 国产精品久久久久久久久借妻| 欧美有码视频| 无码 人妻 在线 视频| 91精品国产高清一区二区三区 | 色综合色综合色综合色综合色综合| 三区四区在线视频| 国内精品视频在线播放| 人人狠狠综合久久亚洲| 精品无码av在线| 日韩网站在线观看| 特黄特色欧美大片| 妖精视频在线观看|