天天看點

Spring Cloud Alibaba元件:Sentinel實作接口限流示例

簡介

Sentinel的官方标題是:分布式系統的流量防衛兵。

Sentinel 以流量為切入點,從流量控制、熔斷降級、系統負載保護等多個次元保護服務的穩定性。

Sentinel 分為兩個部分:

  • 微服務用戶端整合:每個微服務用戶端引入sentinel相應的依賴并進行簡單的配置即可快速地接入Sentinel功能,每個微服務用戶端能将監控資訊上報給sentinel-dashboard(控制台)展示以及在控制台實時的更改限流或熔斷規則等。
  • sentinel-dashboard(控制台):類似與hystrix-dashboard,除了與hystrix-dashboard一樣提供實時監控之外,還提供了流控規則、熔斷規則的線上維護等功能,它比hystrix-dashboard更為強大一些。

Sentinel Dashboard安裝

下載下傳位址:https://github.com/alibaba/Sentinel/releases

使用指令啟動:

java -Dserver.port=8088 -jar sentinel-dashboard-1.8.0.jar
           

通路位址:

http://localhost:8088/​localhost:8088

可以看到如下頁面:

Spring Cloud Alibaba元件:Sentinel實作接口限流示例

預設使用者名和密碼都是

sentinel

微服務用戶端整合引入Sentinel

1、在微服務應用的pom.xm引入Sentinel子產品

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>
           

2、在微服務應用的配置檔案中配置參數

通過

spring.cloud.sentinel.transport.dashboard

參數配置sentinel dashboard的通路位址

server.port=8001

# sentinel dashboard
spring.cloud.sentinel.transport.dashboard=localhost:8088
           

3、建立rest接口示例

@SpringBootApplication
public class TestApplication {

    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
    }

    @Slf4j
    @RestController
    static class TestController {

        @GetMapping("/test")
        public String hello() {
            return "yuanmahy.com";
        }

    }

}
           

4、啟動示例微服務應用,測試接口

通過curl或者postman通路localhost:8001/test接口。

$ curl localhost:8001/test
yuanmahy.com
           

Sentinel Dashboard(控制台)實時監控示例微服務以及接口調用情況。

如下圖所示:

Spring Cloud Alibaba元件:Sentinel實作接口限流示例

配置限流規則

點選簇點鍊路菜單,選擇/test接口記錄,點選流控按鈕

Spring Cloud Alibaba元件:Sentinel實作接口限流示例

對該接口設定限流規則

Spring Cloud Alibaba元件:Sentinel實作接口限流示例
Spring Cloud Alibaba元件:Sentinel實作接口限流示例

配置說明:

  • 門檻值類型選擇:QPS
  • 單機門檻值:2

表示對該接口的限流政策是每秒最多允許2個請求進入。

驗證限流規則

快速的通路這個接口,驗證是否會觸發限流控制

接口傳回資訊:Blocked by Sentinel (flow limiting) 表示觸發限流,驗證成功。

在Sentinel Dashboard(控制台)記錄 1秒通路5次QPS,通過2次,限流3次,統計圖藍色線表示限量,綠色表示

Spring Cloud Alibaba元件:Sentinel實作接口限流示例

如果覺得文章能幫到您,歡迎關注wx公衆号:大資料技術天涯,共同進步!

持續分享java微服務技術,大資料、人工智能等科技類原創文章。

Spring Cloud Alibaba元件:Sentinel實作接口限流示例