SpringCloud(五)sentinel實現接口限流

Sentinel是什麼

Sentinel的官方標題是:分佈式系統的流量防衛兵。從名字上來看,很容易就能猜到它是用來作服務穩定性保障的。對於服務穩定性保障組件,如果熟悉Spring Cloud的用戶,第一反應應該就是Hystrix。但是比較可惜的是Netflix已經宣佈對Hystrix停止更新。那麼,在未來我們還有什麼更好的選擇呢?除了Spring Cloud官方推薦的resilience4j之外,目前Spring Cloud Alibaba下整合的Sentinel也是用戶可以重點考察和選型的目標。

Sentinel的功能和細節比較多,一篇內容很難介紹完整。所以下面我會分多篇來一一介紹Sentinel的重要功能。本文就先從限流入手,說說如何把Sentinel整合到Spring Cloud應用中,以及如何使用Sentinel Dashboard來配置限流規則。通過這個簡單的例子,先將這一套基礎配置搭建起來。

1.啓動Sentinel Dashboard

下載地址:sentinel

啓動方式:java -Dserver.port=8888 -jar sentinel-dashboard-1.6.0.jar

可以通過-Dserver.port=8888來切換啓動的端口,-Dserver.servlet.session.timeout=7200: 用於指定 Spring Boot 服務端 session 的過期時間,如 7200 表示 7200 秒;60m 表示 60 分鐘,默認爲 30 分鐘;


這裏我碰到一個問題:使用最新的sentinel Dashboard 1.7.1.jar會出現問題

Sentinel Dashboard界面新增流控規則時報錯:失敗:invalid type

主要問題是Sentinel Dashboard的jar包版本過高,導致代碼裏的sentinel-code版本與dashboard的版本不一致,最終報錯。

github上的issue:https://github.com/alibaba/Sentinel/issues/1236#issuecomment-571907232


啓動後輸入賬號密碼,全部爲sentinel,進入主頁面

 到此sentinel dashboard的啓動就完成了,接下來啓動項目

pom中加入

<dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
      <version>2.1.1.RELEASE</version>
</dependency>

在配置文件中加入相關配置

spring 
  cloud:
    sentinel:
      transport:
        dashboard: localhost:8080

在項目中寫一個簡單接口

 @GetMapping("/unLock")
 public String lock() throws Exception {
     return "success";
 }

啓動項目就可以了,在dashboard查看前,先調用接口幾次,不然dashboard上可能看不到,這裏我用jmeter請求了500次

接下來測試限流的作用,點擊簇點鏈路,選擇要限流的接口,點擊流控

使用jmeter發起500次請求

限流生效

 

 

發佈了92 篇原創文章 · 獲贊 179 · 訪問量 60萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章