Sentinel的安裝和使用


1、獲取 Sentinel 控制台

  1.1 下載編譯后壓縮包方式(推薦)

    下載地址

  1.2 從Github上下載源碼

    源碼地址

2、啟動 Sentinel 控制台

  2.1 linux模式

java -Dserver.port=8080 \
-Dcsp.sentinel.dashboard.server=localhost:8080 \
-Dproject.name=sentinel-dashboard \
-jar ./sentinel-dashboard.jar

  2.2 windows模式

java -jar ./sentinel-dashboard.jar \
--server.port=8080 \
--csp.sentinel.dashboard.server=localhost:8080 \
--project.name=sentinel-dashboard

注意:強烈建議使用JRE8啟動Sentinel控制台,高版本JDK可能存在未知BUG。

3、@SentinelResource注解

  @SentinelResource 用於定義資源,並提供可選的異常處理和 fallback 配置項。

  @SentinelResource 注解包含以下屬性:

  • value:資源名稱,必需項(不能為空)
  • entryType:entry 類型,可選項(默認為 EntryType.OUT)
  • blockHandler / blockHandlerClass:
    • blockHandler 對應處理 BlockException 的函數名稱,可選項。
    • blockHandler 函數訪問范圍需要是 public,返回類型需要與原方法相匹配,參數類型需要和原方法相匹配並且最后加一個額外的參數,類型為 BlockException。
    • blockHandler 函數默認需要和原方法在同一個類中。若希望使用其他類的函數,則可以指定 blockHandlerClass 為對應的類的 Class 對象,注意對應的函數必需為 static 函數,否則無法解析。
  • fallback / fallbackClass:
    • fallback 函數名稱,可選項,用於在拋出異常的時候提供 fallback 處理邏輯。
    • fallback 函數可以針對所有類型的異常(除了 exceptionsToIgnore 里面排除掉的異常類型)進行處理。
    • fallback 函數簽名和位置要求:
      • 返回值類型必須與原函數返回值類型一致;
      • 方法參數列表需要和原函數一致,或者可以額外多一個 Throwable 類型的參數用於接收對應的異常。
      • fallback 函數默認需要和原方法在同一個類中。若希望使用其他類的函數,則可以指定 fallbackClass 為對應的類的 Class 對象,注意對應的函數必需為 static 函數,否則無法解析。
  • defaultFallback(since 1.6.0):
    • 默認的 fallback 函數名稱,可選項,通常用於通用的 fallback 邏輯(即可以用於很多服務或方法)。
    • 默認 fallback 函數可以針對所有類型的異常(除了 exceptionsToIgnore 里面排除掉的異常類型)進行處理。
    • 若同時配置了 fallback 和 defaultFallback,則只有 fallback 會生效。
    • defaultFallback 函數簽名要求:
      • 返回值類型必須與原函數返回值類型一致;
      • 方法參數列表需要為空,或者可以額外多一個 Throwable 類型的參數用於接收對應的異常。
      • defaultFallback 函數默認需要和原方法在同一個類中。若希望使用其他類的函數,則可以指定 fallbackClass 為對應的類的 Class 對象,注意對應的函數必需為 static 函數,否則無法解析。
  • exceptionsToIgnore(since 1.6.0):用於指定哪些異常被排除掉,不會計入異常統計中,也不會進入 fallback 邏輯中,而是會原樣拋出。

  3.1 fallback / fallbackClass實例

    @SentinelResource(value = "getCodes", fallback="third_part_not_connected", fallbackClass = IndexServiceHandler.class)
    public List<Index> get(){
        return indexService.fetch_indexes_from_third_part();
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM