一、簡介
Sentinel 是面向分布式服務(wù)架構(gòu)的高可用流量防護組件,主要以流量為切入點,從限流、流量整形、熔斷降級、系統(tǒng)負載保護、熱點防護等多個維度來幫助開發(fā)者保障微服務(wù)的穩(wěn)定性。
避免大批量的瞬時請求都打到服務(wù)上,將服務(wù)壓垮。
Sentinel 具有以下特征:
- 豐富的應(yīng)用場景:Sentinel 承接了阿里巴巴近 10 年的雙十一大促流量的核心場景,例如秒殺(即突發(fā)流量控制在系統(tǒng)容量可以承受的范圍)、消息削峰填谷、集群流量控制、實時熔斷下游不可用應(yīng)用等。
- 完備的實時監(jiān)控:Sentinel 同時提供實時的監(jiān)控功能。您可以在控制臺中看到接入應(yīng)用的單臺機器秒級數(shù)據(jù),甚至 500 臺以下規(guī)模的集群的匯總運行情況。
- 廣泛的開源生態(tài):Sentinel 提供開箱即用的與其它開源框架/庫的整合模塊,例如與 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相應(yīng)的依賴并進行簡單的配置即可快速地接入 Sentinel。
- 完善的 SPI 擴展點:Sentinel 提供簡單易用、完善的 SPI 擴展接口。您可以通過實現(xiàn)擴展接口來快速地定制邏輯。例如定制規(guī)則管理、適配動態(tài)數(shù)據(jù)源等。
二、如何使用
第一步:引入pom依賴
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
第二步:配置yml文件
spring:
cloud:
sentinel:
transport:
dashboard: 127.0.0.1:8858 #配置自己的服務(wù)器或本地路由
第三步:測試使用
service層定義一個方法
Boolean test();
impl實現(xiàn)這個方法
@SentinelResource(value = "test",blockHandler = "exceptionHandler")
@Override
public Boolean test() {
return true;
}
public ResultUtil exceptionHandler(BlockException ex){
return ResultUtil.success("請求過于頻繁");
}
在要進行限流的方法上加上?@SentinelResource注解
編寫controller測試
@GetMapping("/test")
public ResultUtil test(){
return ResultUtil.success(userService.test());
}
@SentinelResource注解包含一下屬性:
(1)vale
? ? ? ? 資源名稱,必需項,因為需要通過resource name找到對應(yīng)的規(guī)則,這個是必須配置的。 ? 定義資源名,該名稱將會顯示在控制臺中,并且在定義流控以及熔斷降級規(guī)則時,指定資源名稱。
(2)entryType
? ? ? ? 入口類型,可選項: EntryType.IN和EntryType.OUT(默認為 EntryType.OUT)
(3)blockHandler? ? ? ? 對應(yīng)處理 BlockException 的函數(shù)名稱,可選項。
(4)blockHandlerClass
? ? ? ? ? blockHandler 函數(shù)默認需要和原方法在同一個類中。若希望使用其他類的函數(shù),則可以指定 blockHandlerClass 為對應(yīng)的類的 Class 對象,注意對應(yīng)的函數(shù)必需為 static 函數(shù),否則無法解析。
(5)fallback
? ? ? ? 函數(shù)名稱,可選項,僅針對降級功能生效(DegradeException)。fallback 函數(shù)的訪問范圍需要是 public,參數(shù)類型和返回類型都需要與原方法相匹配,并且需要和原方法在同一個類中。業(yè)務(wù)異常不會進入 fallback 邏輯。
(6)fallbackClass
? ? ? ? fallbackClass的應(yīng)用和blockHandlerClass類似,fallback 函數(shù)默認需要和原方法在同一個類中。 ? 若希望使用其他類的函數(shù),則可以指定 fallbackClass 為對應(yīng)的類的 Class 對象,注意對應(yīng)的函數(shù)必需為 static 函數(shù),否則無法解析。
(7)defaultFallback
? ? ? ? 如果沒有配置defaultFallback方法,默認都會走到這里來,默認的 fallback 函數(shù)名稱,可選項,通常用于通用的 fallback 邏輯,默認 fallback 函數(shù)可以針對所有類型的異常(除了 exceptionsToIgnore 里面排除掉的異常類型)進行處理,若同時配置了 fallback 和 defaultFallback,則只有 fallback 會生效。
(8)exceptionsToIgnore
? ? ? ? 用于指定哪些異常被排除掉,不會計入異常統(tǒng)計中,也不會進入 fallback 邏輯中,而是會原樣拋出。
然后將項目部署到服務(wù)器上,啟動
?去調(diào)用剛寫的測試接口
?這里data為空是因為我進行了限流控制,設(shè)置為0,所以每次訪問都是null,如果設(shè)為1就能訪問到
?文章來源:http://www.zghlxwxcb.cn/news/detail-502233.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-502233.html
到了這里,關(guān)于springcloud中間件:sentinel的簡單使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!