Sentinel 整合SpringCloud的詳細(xì)教程
Spring Cloud Alibaba Sentinel 是阿里巴巴提供的,致力于提供微服務(wù)一站式解決方案,Spring Cloud Alibaba 默認(rèn)為 Sentinel 整合了,ServeLet、RestTemplate、FeignClient 和 Spring Flux。在 Spring 的生態(tài)中不僅不全了 Hystrix 在 ServeLet 和 RestTemplate 這一塊的空白,而且還完美的兼容了 Hystrix 在 Feign 中的限流降級(jí)用法,并支持運(yùn)行時(shí)靈活的配置和調(diào)整限流降級(jí)規(guī)則。
引入依賴:
<!--Sentinel 整合SpringCloud 的依賴-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-sentinel</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
配置文件:
(入門使用中,應(yīng)用名稱使用的 JVM 參數(shù)設(shè)置的,整合 SpringCloud 就不需要那樣了,配置文件中配置了應(yīng)用的名稱后,Sentinel 會(huì)自動(dòng)加載)
# 設(shè)置應(yīng)用的名稱
spring:
application:
name: springCloudSentinel
cloud:
sentinel:
transport:
#設(shè)置Sentinel控制臺(tái)的主機(jī)地址和端口號(hào)
dashboard: localhost:9000
編寫測(cè)試 Controller ,控制臺(tái)添加 Sentinel_Cloud 資源 限流測(cè)試
@SentinelResource(value = "Sentinel_Cloud",blockHandler = "exceptionHandler")
@GetMapping("/sentinelCloud")
public String sentinelCloud(){
//使用限流規(guī)則
return "Sentinel_Cloud,成功調(diào)用";
}
限流時(shí)調(diào)用的方法:
/**
* 定義降級(jí) / 限流 的處理函數(shù)
*
* @param exception
* @return
*/
public String exceptionHandler(BlockException exception) {
exception.printStackTrace();
return "Sentinel_Cloud,訪問(wèn)限流";
}
Sentinel整合Feign (OpenFeign)
Sentinel適配了Feign組件。如果想要使用,除了引用spring-cloud-starter-alibaba-sentinel的依賴,還需要兩個(gè)步驟:
配置打開Sentinel對(duì)Feign的支持:feign.sentinel.enable=true
加入spring-cloud-starter-openfeign依賴使Sentinel starter自動(dòng)化配置類生效。
# 設(shè)置應(yīng)用的名稱
spring:
application:
name: springCloudSentinel
cloud:
sentinel:
transport:
#設(shè)置Sentinel控制臺(tái)的主機(jī)地址和端口號(hào)
dashboard: localhost:9000
# 開啟 Sentinel 對(duì) Feign 的支持
feign:
sentinel:
enabled: true
服務(wù)端調(diào)用方Controller
@GetMapping("/feignHello")
public String feignHello(){
return feignClient.feignHello();
}
服務(wù)提供方 FeignClient
@FeignClient(contextId = "testFeignClient", value = "注冊(cè)中心中服務(wù)的名稱", fallback = FeignFallbackService.class)
public interface TestFeignClient {
/**
* OpenFeign 遠(yuǎn)程調(diào)用的方法
*
* @return
*/
@GetMapping("/test/feignHello")
String feignHello();
}
提供一個(gè) FeignClient 接口的實(shí)現(xiàn)類,作為限流的處理方法
@Service
public class FeignFallbackService implements TestFeignClient{
@Override
public String feignHello() {
return "Feign 遠(yuǎn)程調(diào)用限流了";
}
}
Sentinel 控制臺(tái)添加限流規(guī)則:
請(qǐng)求方式:http://服務(wù)模塊注冊(cè)中心名稱/test/feignHello

到此這篇關(guān)于Sentinel 之 整合SpringCloud的文章就介紹到這了,更多相關(guān)Sentinel 整合SpringCloud內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解SpringBoot 發(fā)布ApplicationEventPublisher和監(jiān)聽ApplicationEvent事
這篇文章主要介紹了詳解SpringBoot 發(fā)布ApplicationEventPublisher和監(jiān)聽ApplicationEvent事件,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
Java對(duì)象和JSON字符串之間的轉(zhuǎn)換方法(全網(wǎng)最清晰)
這篇文章主要介紹了如何在Java中使用Jackson庫(kù)將對(duì)象轉(zhuǎn)換為JSON字符串,并提供了一個(gè)簡(jiǎn)單的工具類示例,該工具類支持基本的轉(zhuǎn)換功能,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下2025-02-02
springboot實(shí)現(xiàn)跨域的五種方式總結(jié)
在Spring Boot中實(shí)現(xiàn)跨域,可以采用全局跨域和局部跨域兩種方式,下面這篇文章主要給大家介紹了關(guān)于springboot實(shí)現(xiàn)跨域的五種方式,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
Spring?Security權(quán)限注解啟動(dòng)及邏輯處理使用示例
這篇文章主要為大家介紹了Spring?Security權(quán)限注解啟動(dòng)及邏輯處理使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
Java?LocalDateTime獲取時(shí)間信息、格式化、轉(zhuǎn)換為數(shù)字時(shí)間戳代碼示例
其實(shí)我們?cè)贘ava項(xiàng)目中對(duì)日期進(jìn)行格式化,主要是利用一些日期格式化類,下面這篇文章主要給大家介紹了關(guān)于Java?LocalDateTime獲取時(shí)間信息、格式化、轉(zhuǎn)換為數(shù)字時(shí)間戳的相關(guān)資料,需要的朋友可以參考下2023-11-11
Maven install 報(bào)錯(cuò)"程序包不存在"問(wèn)題的解決方法
這篇文章主要介紹了Maven install 報(bào)錯(cuò)"程序包不存在"問(wèn)題的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
spring boot啟動(dòng)后直接關(guān)閉了的問(wèn)題解決
本文主要介紹了spring boot啟動(dòng)后直接關(guān)閉了的問(wèn)題解決,SpringBoot項(xiàng)目啟動(dòng)后自動(dòng)關(guān)閉的原因是未引入web依賴,導(dǎo)致以普通Java項(xiàng)目運(yùn)行,下面就來(lái)介紹一下解決方法,感興趣的可以了解一下2025-02-02
解決Tomcat啟動(dòng)報(bào)異常java.lang.ClassNotFoundException問(wèn)題
這篇文章主要介紹了解決Tomcat啟動(dòng)報(bào)異常java.lang.ClassNotFoundException問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01

