1. 程式人生 > 其它 >【SpringCloud】Sentinel配置及使用

【SpringCloud】Sentinel配置及使用

一、下載最新版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);
        }
    }
}

測試前請求返回埠號:

 

 啟動測試類,顯示限流成功:

 

完畢!