1. 程式人生 > 程式設計 >Spring Cloud Alibaba整合Sentinel的實現步驟

Spring Cloud Alibaba整合Sentinel的實現步驟

一、需求

實現一個簡單的 整合 sentinel,不涉及sentinel的用法

二、實現步驟

1、下載 sentinel dashboard

https://github.com/alibaba/Sentinel/releases
注意:

預設會啟動8080埠,如果埠衝突,可以在啟動命令上加入 -Dserver.port=新埠

預設使用者名稱和密碼[sentinel/sentinel]
啟動控制檯可用的配置項

2、服務提供者和消費者引入sentinel依賴

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

注意: 在這個裡面查詢 sentinel-core的版本號,可以確定我們需要下載那個版本的 sentinel dashboard

3、配置控制檯資訊

spring:
 sentinel:
  transport:
  # 控制檯的地址
  dashboard: localhost:8080
  # 與控制檯通訊的埠,預設是8719,不可用會一直+1,知道找到一個可用的
  port: 8719
  # 和控制檯保持心跳的ip地址
  client-ip: 127.0.0.1
  # 傳送心跳的週期,預設是10s
  heartbeat-interval-ms: 10000

4、一個簡答的整合就整合完了,訪問資源,檢視控制檯。

三、整合Feigen

1、配置檔案中加入 feign.sentinel.enabled=true 即可。
2、加入依賴

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

3、對 Feign介面的降級或限流等操作時,資源名稱的格式為:httpmethod:protocol://requesturl

四、整合 RestTemplate

1、在RestTemplate上加入 @SentinelRestTemplate註解。
2、配置檔案中加入 resttemplate.sentinel.enabled: true,預設就是 true
3、降級或限流時的處理

抄sentinel的官網描述,文字給出連結

@SentinelRestTemplate 註解的屬性支援限流(blockHandler,blockHandlerClass)和降級(fallback,fallbackClass)的處理。

其中 blockHandler 或 fallback 屬性對應的方法必須是對應 blockHandlerClass 或 fallbackClass 屬性中的靜態方法。

該方法的引數跟返回值跟 org.springframework.http.client.ClientHttpRequestInterceptor#interceptor 方法一致,其中引數多出了一個 BlockException 引數用於獲取 Sentinel 捕獲的異常。

比如上述 @SentinelRestTemplate 註解中 ExceptionUtil 的 handleException 屬性對應的方法宣告如下:

public class ExceptionUtil {
 public static ClientHttpResponse handleException(HttpRequest request,byte[] body,ClientHttpRequestExecution execution,BlockException exception) {
  ...
 }
}

五、@SentinelResource的用法

1、@SentinelResource 註解用來標識資源是否被限流、降級。
2、一般推薦將 @SentinelResource 註解加到服務實現上
3、可以指定 blockHandlerfallback ,在發生異常時的處理。

六、程式碼路徑

https://gitee.com/huan1993/spring-cloud-alibaba-parent/tree/master/sentinel

七、參考文件

Sentinel Wike
Sentinel 註解支援

到此這篇關於Spring Cloud Alibaba整合Sentinel的實現步驟的文章就介紹到這了,更多相關Spring Cloud Alibaba整合Sentinel內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!