【SpringCloud】Sentinel配置及使用
阿新 • • 發佈:2022-03-09
一、下載最新版Sentinel:
https://github.com/alibaba/Sentinel/releases
下載後以Jar包執行。
二、在需要限流的服務端新增配置:
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> <!--version 1.8.3--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
編輯application.yml,新增配置:
spring: cloud: nacos: discovery: #nacos server server-addr: localhost:8848 sentinel: transport: dashboard: localhost:8080 application: name: provider server: port: 8081 management: endpoints: web: exposure: exclude: '*'
三、在controller 層編寫測試服務請求類:
package com.example.provider.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class providerController { @Value("${server.port}") private String port; @GetMapping("/index") public String index(){ return this.port; } @GetMapping("/list") public String list(){ return "list"; } }
四、啟動服務層,瀏覽器訪問測試類方法,Sentinel預設啟動在8080埠。
新增限流規則:
編寫測試類測試限流效果:
package com.example.provider; import org.springframework.web.client.RestTemplate; public class test { public static void main(String[] args) throws InterruptedException { RestTemplate restTemplate = new RestTemplate(); for (int i = 0; i < 1000; i++) { restTemplate.getForObject("http://localhost:8081/list",String.class); Thread.sleep(200); } } }
測試前請求返回埠號:
啟動測試類,顯示限流成功:
完畢!