国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - SpringBoot集成Sentinel實現接口流量控制

SpringBoot集成Sentinel實現接口流量控制

2021-03-23 01:48今日Java麥洛 Java教程

Hello,大家好,我是麥洛,今天帶大家來了解一下SpringBoot如何繼承Sentinel來實現接口流量控制。

 SpringBoot集成Sentinel實現接口流量控制

Hello,大家好,我是麥洛,今天帶大家來了解一下SpringBoot如何繼承Sentinel來實現接口流量控制

Sentinel控制臺搭建

在我的上一篇文章阿里出品的Sentinel到底是個什么玩意?中,已經介紹過如何準備Sentinel控制臺,大家可以直接參考;

Sentinel 客戶端

 

項目搭建

首先我們來創建一個測試項目,這里初始化項目的url建議大家填寫阿里云的地址,會有驚喜

  1. http://start.aliyun.com 

 SpringBoot集成Sentinel實現接口流量控制

接下來就是常規操作,一路next,在下圖的位置稍微注意一下

SpringBoot集成Sentinel實現接口流量控制

說明:

同大家以前創建項目一樣,只需要在這里勾選Sentinel就可以啦

項目創建好以后,我們發現pom文件中引入了下面的依賴

SpringBoot集成Sentinel實現接口流量控制

有的小伙伴看網上博客,也會有下面的方式,指定版本號

  1. <!-- sentinel --> 
  2.  <dependency> 
  3.   <groupId>com.alibaba.cloud</groupId> 
  4.   <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> 
  5.   <version>2.1.0.RELEASE</version> 
  6.  </dependency> 

如果你使用我推薦的阿里云的Url,會發現Sentinel的版本號都定義父工程,Cloud的各個組件的兼容性就不要大家操心了

  1. <dependencyManagement> 
  2.        <dependencies> 
  3.            <dependency> 
  4.                <groupId>org.springframework.boot</groupId> 
  5.                <artifactId>spring-boot-dependencies</artifactId> 
  6.                <version>${spring-boot.version}</version> 
  7.                <type>pom</type> 
  8.                <scope>import</scope> 
  9.            </dependency> 
  10.            <dependency> 
  11.                <groupId>com.alibaba.cloud</groupId> 
  12.                <artifactId>spring-cloud-alibaba-dependencies</artifactId> 
  13.                <version>${spring-cloud-alibaba.version}</version> 
  14.                <type>pom</type> 
  15.                <scope>import</scope> 
  16.            </dependency> 
  17.        </dependencies> 
  18.    </dependencyManagement> 

打開項目配置文件,會發現它已經為我們自動加好了配置,真的超級方便

  1. server.port=8083 
  2. # 應用名稱 
  3. spring.application.name=springcloud-sentinel 
  4. # Sentinel 控制臺地址 
  5. spring.cloud.sentinel.transport.dashboard=localhost:8080 
  6. # 取消Sentinel控制臺懶加載 
  7. # 默認情況下 Sentinel 會在客戶端首次調用的時候進行初始化,開始向控制臺發送心跳包 
  8. # 配置 sentinel.eager=true 時,取消Sentinel控制臺懶加載功能 
  9. spring.cloud.sentinel.eager=true 
  10. # 如果有多套網絡,又無法正確獲取本機IP,則需要使用下面的參數設置當前機器可被外部訪問的IP地址,供admin控制臺使用 
  11. # spring.cloud.sentinel.transport.client-ip=# sentinel 配置 
  12. spring.application.name=frms 
  13. spring.cloud.sentinel.transport.dashboard=localhost:8080 
  14. spring.cloud.sentinel.transport.heartbeat-interval-ms=500 

如何定義資源

 

編程式定義

官網提供的demo

  1. package com.milo.sentinel; 
  2.  
  3. import com.alibaba.csp.sentinel.Entry; 
  4. import com.alibaba.csp.sentinel.SphU; 
  5. import com.alibaba.csp.sentinel.slots.block.BlockException; 
  6. import com.alibaba.csp.sentinel.slots.block.RuleConstant; 
  7. import com.alibaba.csp.sentinel.slots.block.flow.FlowRule; 
  8. import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager; 
  9. import org.springframework.boot.SpringApplication; 
  10. import org.springframework.boot.autoconfigure.SpringBootApplication; 
  11.  
  12. import java.util.ArrayList; 
  13. import java.util.List; 
  14.  
  15. /** 
  16.  * 項目入口 
  17.  * @author Milo Lee 
  18.  * @date 2021-3-20 19:07 
  19.  * 
  20.  */ 
  21. @SpringBootApplication 
  22. public class SentinelApplication { 
  23.  
  24.     public static void main(String[] args) { 
  25.         SpringApplication.run(SentinelApplication.class, args); 
  26.  
  27.         // 配置規則. 
  28.         initFlowRules(); 
  29.         while (true) { 
  30.             // 1.5.0 版本開始可以直接利用 try-with-resources 特性 
  31.             try (Entry entry = SphU.entry("HelloWorld")) { 
  32.                 // 被保護的邏輯 
  33.                 Thread.sleep(300); 
  34.                 System.out.println("hello world"); 
  35.             } catch (BlockException | InterruptedException ex) { 
  36.                 // 處理被流控的邏輯 
  37.                 System.out.println("blocked!"); 
  38.             } 
  39.         } 
  40.  
  41.     } 
  42.  
  43.     private static void initFlowRules(){ 
  44.         List<FlowRule> rules = new ArrayList<>(); 
  45.         FlowRule rule = new FlowRule(); 
  46.         rule.setResource("HelloWorld"); 
  47.         rule.setGrade(RuleConstant.FLOW_GRADE_QPS); 
  48.         // Set limit QPS to 20. 
  49.         rule.setCount(20); 
  50.         rules.add(rule); 
  51.         FlowRuleManager.loadRules(rules); 
  52.     } 
  53.  

注解式定義

  1. @SpringBootApplication 
  2. public class Application { 
  3.  
  4.     public static void main(String[] args) { 
  5.         SpringApplication.run(ServiceApplication.class, args); 
  6.     } 
  7.  
  8. @Service 
  9. public class TestService { 
  10.  
  11.     @SentinelResource(value = "sayHello"
  12.     public String sayHello(String name) { 
  13.         return "Hello, " + name
  14.     } 
  15.  
  16. @RestController 
  17. public class TestController { 
  18.  
  19.     @Autowired 
  20.     private TestService service; 
  21.  
  22.     @GetMapping(value = "/hello/{name}"
  23.     public String apiHello(@PathVariable String name) { 
  24.         return service.sayHello(name); 
  25.     } 

@SentinelResource 注解用來標識資源是否被限流、降級。上述例子上該注解的屬性 sayHello 表示資源名。

啟動控制臺

  1. java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.1.jar 

 SpringBoot集成Sentinel實現接口流量控制

控制臺配置規則

控制臺的操作我們用編程式定義的例子來演示,大家啟動我們的服務

SpringBoot集成Sentinel實現接口流量控制

我們會發現除了sentinel-dashboard之外,多了一個milolee-sentinel,這個就是我們的服務,它的名稱其實對應我們配置文件定義的應用名稱:

  1. # 應用名稱 
  2. spring.application.name=milolee-sentinel 

點擊機器列表,這這里如果能發現你的機器,那就是成功上線了

SpringBoot集成Sentinel實現接口流量控制

實時監控

SpringBoot集成Sentinel實現接口流量控制

簇點鏈路

SpringBoot集成Sentinel實現接口流量控制

流控規則配置

給我們的資源HelloWorld配置流控規則,它的QPS(每秒請求數)為1,如圖:

SpringBoot集成Sentinel實現接口流量控制

通過查看實時監控,我們發現已經生效

SpringBoot集成Sentinel實現接口流量控制

降級規則配置

給我們的資源HelloWorld添加一個降級規則配置,如果QPS大于1,且平均響應時間大于20ms,則接口下來接口在2秒鐘無法訪問,之后自動恢復。

SpringBoot集成Sentinel實現接口流量控制

目前這些規則僅在內存態生效,應用重啟之后,該規則會丟失。后續文章我們會繼續學習動態規則

SpringBoot集成Sentinel實現接口流量控制

 

關于控制臺的使用,大家可以參考官方文檔,比較詳細https://sentinelguard.io/zh-cn/docs/dashboard.html

原文地址:https://mp.weixin.qq.com/s/Zl5csnQfhg8FrNm9hLZyaA

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品精品久久久 | 超碰在线国产 | 日韩成人在线播放 | 在线观看一区 | 久久人| 久热中文字幕 | 国产成人精品一区二区三区视频 | 日韩在线精品视频 | 九九综合| 爱操av| 国产日韩一区二区 | 毛片在线视频 | 青青草国产精品 | 欧美激情视频一区二区三区在线播放 | 国产精品毛片在线 | 毛片网页| 日韩亚洲一区二区 | 波多野吉衣网站 | 亚洲欧美国产另类 | av免费直接看 | 性做久久久 | 国产精品不卡在线播放 | 中文字幕在线免费看 | 久久伊人一区 | 国产精品影视在线观看 | 亚洲依人 | 日韩看片 | 成人欧美一区二区三区白人 | 欧美成人综合视频 | 精品亚洲一区二区 | 一区二区三区久久 | 色婷婷在线视频观看 | 成人三级视频网站 | 欧美一级在线观看 | 激情综合网五月婷婷 | 欧美日韩综合 | 国产精品二区一区二区aⅴ污介绍 | 欧美日韩一区二区中文字幕 | 色花av| 亚洲成人一区 | 日韩精品在线观看中文字幕 |