Sentinel 整合SpringCloud的詳細教程
Spring Cloud Alibaba Sentinel 是阿裡巴巴提供的,致力於提供微服務一站式解決方案,Spring Cloud Alibaba 默認為 Sentinel 整合瞭,ServeLet、RestTemplate、FeignClient 和 Spring Flux。在 Spring 的生態中不僅不全瞭 Hystrix 在 ServeLet 和 RestTemplate 這一塊的空白,而且還完美的兼容瞭 Hystrix 在 Feign 中的限流降級用法,並支持運行時靈活的配置和調整限流降級規則。
引入依賴:
<!--Sentinel 整合SpringCloud 的依賴--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-sentinel</artifactId> <version>2.2.0.RELEASE</version> </dependency>
配置文件:
(入門使用中,應用名稱使用的 JVM 參數設置的,整合 SpringCloud 就不需要那樣瞭,配置文件中配置瞭應用的名稱後,Sentinel 會自動加載)
# 設置應用的名稱 spring: application: name: springCloudSentinel cloud: sentinel: transport: #設置Sentinel控制臺的主機地址和端口號 dashboard: localhost:9000
編寫測試 Controller ,控制臺添加 Sentinel_Cloud 資源 限流測試
@SentinelResource(value = "Sentinel_Cloud",blockHandler = "exceptionHandler") @GetMapping("/sentinelCloud") public String sentinelCloud(){ //使用限流規則 return "Sentinel_Cloud,成功調用"; }
限流時調用的方法:
/** * 定義降級 / 限流 的處理函數 * * @param exception * @return */ public String exceptionHandler(BlockException exception) { exception.printStackTrace(); return "Sentinel_Cloud,訪問限流"; }
Sentinel整合Feign (OpenFeign)
Sentinel適配瞭Feign組件。如果想要使用,除瞭引用spring-cloud-starter-alibaba-sentinel的依賴,還需要兩個步驟:
配置打開Sentinel對Feign的支持:feign.sentinel.enable=true
加入spring-cloud-starter-openfeign依賴使Sentinel starter自動化配置類生效。
# 設置應用的名稱 spring: application: name: springCloudSentinel cloud: sentinel: transport: #設置Sentinel控制臺的主機地址和端口號 dashboard: localhost:9000 # 開啟 Sentinel 對 Feign 的支持 feign: sentinel: enabled: true
服務端調用方Controller
@GetMapping("/feignHello") public String feignHello(){ return feignClient.feignHello(); }
服務提供方 FeignClient
@FeignClient(contextId = "testFeignClient", value = "註冊中心中服務的名稱", fallback = FeignFallbackService.class) public interface TestFeignClient { /** * OpenFeign 遠程調用的方法 * * @return */ @GetMapping("/test/feignHello") String feignHello(); }
提供一個 FeignClient 接口的實現類,作為限流的處理方法
@Service public class FeignFallbackService implements TestFeignClient{ @Override public String feignHello() { return "Feign 遠程調用限流瞭"; } }
Sentinel 控制臺添加限流規則:
請求方式:http://服務模塊註冊中心名稱/test/feignHello
到此這篇關於Sentinel 之 整合SpringCloud的文章就介紹到這瞭,更多相關Sentinel 整合SpringCloud內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 剖析SpringCloud Feign中所隱藏的坑
- Spring Cloud Alibaba 使用 Feign+Sentinel 完成熔斷的示例
- SpringCloud中使用Sentinel實現限流的實戰
- 使用FeignClient設置動態Url
- 一篇文章教你如何在SpringCloud項目中使用OpenFeign