SpringCloud11 -- Alibaba Sentinel
Sentinel
簡介
簡單來講 實現降級、熔斷與限流,就是Hystrix
Sentinel 是什麼?
隨著微服務的流行,服務和服務之間的穩定性變得越來越重要。Sentinel 以流量為切入點,從流量控制、熔斷降級、系統負載保護等多個維度保護服務的穩定性。
Sentinel 具有以下特徵:
- 豐富的應用場景:Sentinel 承接了阿里巴巴近 10 年的雙十一大促流量的核心場景,例如秒殺(即突發流量控制在系統容量可以承受的範圍)、訊息削峰填谷、叢集流量控制、實時熔斷下游不可用應用等。
- 完備的實時監控:Sentinel 同時提供實時的監控功能。您可以在控制檯中看到接入應用的單臺機器秒級資料,甚至 500 臺以下規模的叢集的彙總執行情況。
- 廣泛的開源生態:Sentinel 提供開箱即用的與其它開源框架/庫的整合模組,例如與 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相應的依賴並進行簡單的配置即可快速地接入 Sentinel。
- 完善的 SPI 擴充套件點:Sentinel 提供簡單易用、完善的 SPI 擴充套件介面。您可以通過實現擴充套件介面來快速地定製邏輯。例如定製規則管理、適配動態資料來源等。
Sentinel 的主要特徵:
Sentinel 的開源生態:
安裝
windows
-
下載sentinel的jar包
-
執行sentinel
由於是一個jar包,所以可以直接java -jar執行
注意,預設sentinel佔用8080埠
-
訪問sentinel http://localhost:8080/#/login
帳號密碼都是sentinel
整合專案
執行nacos 訪問http://localhost:8848/nacos
新建專案cloud-alibaba-sentinel-service8401
pom
<dependencies>
<!-- SpringCloud ailibaba nacos-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringCloud ailibaba sentinel-datasource-nacos 持久化需要用到-->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
<!-- SpringCloud ailibaba sentinel-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency><!-- 引用自己定義的api通用包,可以使用Payment支付Entity -->
<groupId>com.jsu.springcloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--監控-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--熱部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
yml
server:
port: 8401
spring:
application:
name: cloud-alibaba-sentinel-service
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服務註冊中心地址
sentinel:
transport:
dashboard: localhost:8080 #配置Sentinel dashboard地址
port: 8719
management:
endpoints:
web:
exposure:
include: '*'
啟動類
@SpringBootApplication
@EnableDiscoveryClient
public class SentinelMain8401 {
public static void main(String[] args) {
SpringApplication.run(SentinelMain8401.class);
}
}
controller
@RestController
@Slf4j
public class FlowLimitController {
@GetMapping("/testA")
public String testA()
{
return "------testA";
}
@GetMapping("/testB")
public String testB()
{
log.info(Thread.currentThread().getName()+"\t"+"...testB");
return "------testB";
}
}
執行8401 重新整理http://localhost:8080/ 發現空空如也
實時監控
Sentinel是懶載入 需要訪問8401的服務
觸點鏈路
表示有兩個訪問路口 /favicon.ico屬於專案圖示的顯示
流控規則
-
資源名: 唯一名稱,預設請求路徑
-
針對來源: Sentinel可以針對呼叫者進行限流,填寫微服務名,預設default (不區分來源)
-
閾值型別/單機閾值:
- QPS(每秒鐘的請求數量):當呼叫該api的QPS達到閾值的時候,進行限流。
- 執行緒數: 當呼叫該api的執行緒數達到閾值的時候,進行限流
-
是否叢集:不需要叢集
-
流控模式:
- 直接: api達到限流條件時,直接限流
- 關聯: 當關聯的資源達到閾值時,就限流自己
- 鏈路: 只記錄指定鏈路上的流量(指定資源從入口資源進來的流量,如果達到閾值,就進行限流) 【api級別的針對來源】
-
流控效果:
- 快速失敗: 直接失敗,拋異常
- Warm Up: 根據codeFactor(冷載入因子,預設3)的值,從閾值/codeFactor,經過預熱時長,才達到設定的QPS閾值
- 排隊等待: 勻速排隊,讓請求以勻速的速度通過,閾值型別必須設定為QPS,否則無效
流控模式
直接
新增監控 QPS
測試: 當快速重新整理時候 報錯 新增時候設定為每秒一次如果超出 直接快速失敗
問題
報錯顯示的是預設的資訊 能不能有自己的獨特的資訊 或者進行後續的處理方法 能不能像fallback一樣的兜底方法
新增監控 執行緒數
狂點後 沒有變化
QPS和執行緒數區別:
- QPS:每秒鐘的訪問請求數量,狂點http://localhost:8401/testA 那麼就會超過QPS的閾值 報錯
- 執行緒數: 當每秒鐘的訪問請求執行緒的數量,如果同一個執行緒 可以每秒訪問無數次. 兩個網頁 同時訪問http://localhost:8401/testB 那麼就會超過執行緒數的閾值 報錯
關聯
新建postman
建立collection
執行的途中 去訪問testA
結果:
testB 超過閾值1 testA掛了 testB無事…
應用場景: 比如支付介面達到閾值,就要限流下訂單的介面,防止一直有訂單
鏈路:
多個請求呼叫同一個微服務
流控效果
快速失敗
預熱
公式:
閾值除以coldFactor(預設為3) 經過預熱時長後才會達到閾值
Warm Up ( RuleConstant.CONTROL_BEHAVIOR_AARA_uP)
方式,即預熱/冷啟動
方式。當系統長期處於低水位的情況下,當流量突然增加
時,直接把系統拉昇到高水位可能瞬間把系統壓垮
。通過"冷啟動"”,讓通過的流量緩慢增加,在一定時間內逐漸增加到閾值上限,給冷系統一個預熱的時間,避免冷系統被壓垮。
預設coldFactor為3,即請求QPS從threshold/3開始,經預熱時長逐漸升至設定的QPS閾值。
新建流控
測試:狂擊 剛開始報錯 5s後 恢復正常(手速限定在每秒10次以內)
排隊等待
核心 : 勻速排隊 閾值必須是qbs
測試
降級規則
就是降級熔斷
沒有半開
的狀態 就是系統自動檢測異常 沒有異常關閉斷路器回覆使用,有異常繼續開啟斷路器不可用.
sentinel 要不關閉要不開啟
RT(平均響應時間,秒級)
平均響應時間超出閾值且在時間視窗內通過的請求>=5,兩個條件同時滿足後觸發降級
視窗期過後關閉斷路器
RT最大4900(更大的需要通過-Dcsp.sentinel.statistic.max.rt=XXXX才能生效)
新建
200毫秒內解決 解決就ok 解決不了就開啟斷路器
Jmeter 1秒鐘10個執行緒 每次請求10s
上述配置:
永遠的1秒鐘打進10個執行緒(大於5個) 呼叫testD 我們希望200毫秒內完成本次處理任務,如果超過200毫秒還沒處理完,在未來的1秒鐘的時間視窗內 斷路器開啟 (保險絲跳閘)微服務不可用 保險絲跳閘斷電了.
但是java程式碼 睡眠1s
當關閉jmeter 時候 回覆正常
異常比列(秒級)
QPS>= 5且異常比例(秒級統計)超過閾值時,觸發降級;時間視窗結束後,關閉降級
單獨訪問一次,必然來一次報錯一次(int age =10/0) 調一次錯一次
jmeter
開啟jmeter後,直接高併發傳送請求,多次呼叫達到我們的配置條件了。斷路器開啟(保險絲跳閘),微服務不可用了,不再報錯error而是服務降級了。
異常數(分鐘級)
異常數(分鐘統計)超過閾值時,觸發降級;時間視窗結束後,關閉降級
http://localhost:8401/testE,第一次訪問絕對報錯,因為除數不能為零,我們看到error視窗,但是達到5次報錯後,進入熔斷後降級。
熱點規則
之前的案例,當限流出現問題的時候,使用的是sentinel系統預設的提示, Blocked by Sentinel(flow limiting)
熱點規則類似於hystrix 當某個方法出現問題的時候,找到對應的兜底降級的方法。
結論:從@HystrixCommand到@SentinelSourece
簡單使用
配置熱點規則
含義:第0個引數一秒內點選一次
發現
當每秒點選一次的時候 正常顯示 當點選速度加快的時候 降級處理,使用兜底方法
當取消blockHandler時候 sentinel熱點規則還是原來的
發現
當每秒點選一次的時候 正常顯示 當點選速度加快的時候 跳轉error page
注意:
因為設定是第一個引數 所以當url的引數是第二個時候 狂點選 也不會跳轉其他頁面
例外項
前提條件 :引數型別必須是基本資料型別或者String
狂擊後 還是正常訪問
注意
當新增執行時異常的時候!!
- @SentinelResource
處理的是Sentinel控制檯配置的違規情況,有blockHandler方法配置的兜底處理; - RuntimeException
int age = 10/0,這個是java執行時報出的執行時異常RunTimeException,@SentinelResource不管 - 總結
@SentinelResource主管配置出錯,執行出錯該走異常走異常
系統規則
熱點規則是對於某個url進行限流,系統規則是對於整個專案進行限流
系統保護規則是從應用級別的入口流量進行控制,從單臺機器的load、CPU使用率、平均RT、入口QPS
和併發執行緒數
等幾個維度監控應用指標,讓系統儘可能跑在最大吞吐量的同時保證系統整體的穩定性。
系統保護規則是應用整體維度的,而不是資源維度的,並且僅對入口流量生效。入口流量指的是進入應用的流量( EntryType.IN ),比如Web服務或Dubbo服務端接收的請求,都屬於入口流星。
系統規則支援以下的模式:
-
Load自適應(僅對Linux/Unix-like機器生效):系統的 load1作為啟發指標,進行自適應系統保護。當系統load1超過設定的啟發值,且系統當前的併發執行緒數超過估算的系統容量時才會觸發系統保護(BBR階段)。系統容量由系統的maxQps * minRt估算得出。設定參考值一般是CPu cores * 2.5。
-
CPU usage (1.5.0+版本)︰當系統CPU使用率超過閾值即觸發系統保護(取值範圍0.0-1.o) ,比較靈敏。
-
平均RT:當單臺機器上所有入口流星的平均RT達到閾值即觸發系統保護,單位是毫秒。·併發執行緒數:當單臺機器上所有入口流量的併發執行緒數達到閾值即觸發系統保護。
-
入口QPS:當單臺機器上所有入口流是的QPS達到閾值即觸發系統保護。
狂訪問http://localhost:8401/testA 對於其他的請求也一樣
@SentinelResource
按照資源限流
8401新增controller
狂刷 降級處理 使用兜底方法
當關閉8401服務的時候,發現流控規則沒有了 證明是臨時
訪問URL限流
當@SentinelResource註解中沒有blockHandler的時候 那麼當限流時候 返回Sentinel自帶預設的限流頁面
自定義限流邏輯
新建hanler類
public class CustomerBlockHandler
{
public static CommonResult handlerException(BlockException exception)
{
return new CommonResult(4444,"按客戶自定義,global handlerException----1");
}
public static CommonResult handlerException2(BlockException exception)
{
return new CommonResult(4444,"按客戶自定義,global handlerException----2");
}
}
在controller中,指定使用自定義類中的方法作為降級方法
Sentinel中定義流控規則:這裡資源名,是以url指定,也可以使用@SentinelResource註解value的值指定
測試:
整體
其他屬性
服務熔斷
sentinel整合ribbon+openfeign+fallback
搭建基本專案
新建cloud-alibaba-provider-payment9003/9004
pom
<dependencies>
<dependency>
<groupId>com.jsu.springcloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- SpringCloud ailibaba nacos-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--監控-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--熱部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
yml
server:
port: 9003
spring:
application:
name: nacos-payment-provider
cloud:
nacos:
discovery:
server-addr: localhost:8848 # 配置Nacos地址
management:
endpoints:
web:
exposure:
include: "*"
啟動類
@SpringBootApplication
@EnableDiscoveryClient
public class NacosPayment9003 {
public static void main(String[] args) {
SpringApplication.run(NacosPayment9003.class);
}
}
業務邏輯程式碼
@RestController
@Slf4j
public class PaymentController {
@Value("${server.port}")
private String serverPort;
public static HashMap<Long,Payment> hashMap = new HashMap<Long, Payment>();
static {
hashMap.put(1L,new Payment(1L,"28r2e85asd15a6sd32d"));
hashMap.put(2L,new Payment(2L,"878asd4878ax7sa5cva"));
hashMap.put(3L,new Payment(3L,"56asd46casgf4g6vfs5"));
}
@RequestMapping(value = "/paymentSQl/{id}")
public CommonResult<Payment> paymentSQl(@PathVariable("id") Long id){
Payment payment = hashMap.get(id);
CommonResult<Payment> result = new CommonResult<>(200, "from mysql,ServerPort:" + serverPort);
return result;
}
}
新建cloud-alibaba-nacos-consumer-order84
pom
<dependencies>
<!-- SpringCloud ailibaba nacos-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- SpringCloud ailibaba sentinel-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency><!-- 引用自己定義的api通用包,可以使用Payment支付Entity -->
<groupId>com.jsu.springcloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--監控-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--熱部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
yml
server:
port: 84
spring:
application:
name: nacos-order-consumer
cloud:
nacos:
discovery:
server-addr: localhost:8848
sentinel:
transport:
dashboard: localhost:8080
port: 8719
# 消費者將要去訪問的微服務名稱(註冊成功進入nacos的微服務提供者)
service-url:
nacos-user-service: http://nacos-payment-provider
啟動類
@EnableDiscoveryClient
@SpringBootApplication
@EnableFeignClients
public class OrderNacosMain84 {
public static void main(String[] args) {
SpringApplication.run(OrderNacosMain84.class);
}
}
配置類
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
Ribbon
84服務新增controller
@RestController
@Slf4j
public class CircleBreakerController {
@Value("${service-url.nacos-user-service}")
public String SERVICE_URL;
@Autowired
private RestTemplate restTemplate;
// ===================== ribbon =======================
@RequestMapping("/consumer/fallback/{id}")
@SentinelResource(value = "fallback") //沒有配置
// @SentinelResource(value = "fallback",fallback = "handlerFallback")// fallback只負責業務異常
// @SentinelResource(value = "fallback",blockHandler = "blockHandler") // blockHandler只負責sentinel控制檯的違規
// @SentinelResource(value = "fallback",fallback = "handlerFallback",
// blockHandler = "blockHandler",exceptionsToIgnore = {IllegalArgumentException.class})
public CommonResult<Payment> fallback(@PathVariable Long id){
CommonResult<Payment> result = restTemplate.getForObject(SERVICE_URL+"/paymentSQl/"+id,CommonResult.class,id);
if (id == 4L){
throw new IllegalArgumentException ("IllegalArgumentException,非法引數異常....");
}else if(result.getData() == null){
throw new NullPointerException("NullPointerException,該id沒有對應記錄,空指標異常");
}
return result;
}
//本例是fallback
public CommonResult handlerFallback(@PathVariable Long id, Throwable e) {
Payment payment = new Payment(id,"null");
return new CommonResult<>(444,"兜底異常handlerFallback,exception內容 "+e.getMessage(),payment);
}
//本例是blockHandler
public CommonResult blockHandler(@PathVariable Long id, BlockException blockException) {
Payment payment = new Payment(id,"null");
return new CommonResult<>(445,"blockHandler-sentinel限流,無此流水: blockException "+blockException.getMessage(),payment);
}
}
訪問84服務 實現負載均衡
業務異常
在84的controller設定 如果id傳值為4 丟擲非法引數異常 傳非1 2 3 4丟擲空指標異常
使用fallback fallback負責業務異常
控制檯配置違規
兩者都存在
當1s一次 訪問http://localhost:84/consumer/fallback/4 服務降級 使用fallback方法
當狂擊的時候 服務限流 使用blockHandler方法
exceptionsToIgnore
如果有exceptionsToIgnore等於的異常 那麼不再有fallback方法兜底 沒有降級效果
OpenFeign
修改84專案
新增pom
<!--openfeign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
新增yml
feign:
sentinel:
enabled: true
啟動類
@EnableDiscoveryClient
@SpringBootApplication
@EnableFeignClients
業務邏輯程式碼
@FeignClient(value = "nacos-payment-provider",fallback =PaymentFallbackImpl.class)
public interface PaymentService {
// value對應9003/9004的請求路徑
@GetMapping(value = "/paymentSQl/{id}")
public CommonResult<Payment> paymentSQL(@PathVariable("id")Long id);
}
@Component
public class PaymentFallbackImpl implements PaymentService{
@Override
public CommonResult<Payment> paymentSQL(Long id) {
return new CommonResult<>(44444,"服務降級返回,----- PaymentFallbackService",new Payment(id,"errorSerial...."));
}
}
controller
//================== OpenFeign ==================
@Autowired
private PaymentService paymentService;
@GetMapping(value = "/consumer/paymentSQL/{id}")
public CommonResult<Payment> paymentSQL(@PathVariable("id") Long id) {
return paymentService.paymentSQL(id);
}
測試
當關閉9003和9004服務以後
熔斷框架比較
持久化
修改8401專案
pom
<!-- 持久化 -->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
yml
spring:
application:
name: cloud-alibaba-sentinel-service
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服務註冊中心地址
sentinel:
transport:
dashboard: localhost:8080 #配置Sentinel dashboard地址
port: 8719
datasource:
ds1:
nacos:
server-addr: localhost:8848
dataId: cloud-alibaba-sentinel-service
groupId: DEFAULT_GROUP
data-type: json
rule-type: flow
在nacos中新建業務規則
[
{
"resource": "/rateLimit/byUrl",
"limitApp": "default",
"grade": 1,
"count": 1,
"strategy": 0,
"controlBehavior": 0,
"clusterMode": false
}
]
// resource: 資源名稱
// limitApp: 來源應用
// grade: 閾值型別 0表示執行緒數 1表示qps
// count: 單機閾值
// strategy: 流控模式 0表示直接 1表示關聯 2 表示鏈路
// controlBehavior: 流控效果 0快速失敗 1warm up 2排隊等待
// clusterMode: 是否叢集
測試
關機後 流控規則沒了
重啟後 狂刷http://localhost:8401/rateLimit/byUrl 流控規則又出現了
相關文章
- SpringCloud-Alibaba-SentinelSpringGCCloud
- Spring Cloud Alibaba SentinelSpringCloud
- SpringCloud-Alibaba-Sentinel(1)初探SpringGCCloud
- Spring-Cloud-Alibaba之SentinelSpringCloud
- Spring Cloud Alibaba(9)---Sentinel概述SpringCloud
- 六、Alibaba sentinel之限流原理分析
- Spring Cloud Alibaba元件之SentinelSpringCloud元件
- springcloud alibaba sentinel降級 @SentinelResourceSpringGCCloud
- Spring Cloud Alibaba教程:Sentinel的使用SpringCloud
- Spring Cloud Alibaba(四)--Gateway與SentinelSpringCloudGateway
- Sentinel分散式限流元件,SpringCloud Alibaba整合分散式元件SpringGCCloud
- [Spring-Cloud-Alibaba] Sentinel 規則持久化SpringCloud持久化
- Spring Cloud Alibaba(11)---Sentinel+Nacos持久化SpringCloud持久化
- Spring Cloud Alibaba:Sentinel實現熔斷與限流SpringCloud
- Spring Cloud Alibaba | Sentinel: 服務限流基礎篇SpringCloud
- Spring Cloud Alibaba | Sentinel: 服務限流高階篇SpringCloud
- SpringCloud Alibaba系列(三) Sentinel熱點引數限流SpringGCCloud
- Spring Cloud Alibaba系列(六)sentinel的實際應用SpringCloud
- 9.Spring Cloud Alibaba Sentinel流控熔斷元件SpringCloud元件
- Spring Cloud Alibaba Sentinel 主要原理和核心類介紹SpringCloud
- Spring Cloud Alibaba - Sentinel入門案例(四)(熱點規則 )SpringCloud
- 記一次spring cloud alibaba+Sentinel監控整合SpringCloud
- Spring Cloud Alibaba基礎教程:使用Sentinel實現介面限流SpringCloud
- spring cloud alibaba系列(二)Sentinel應用的限流管理SpringCloud
- Spring Cloud Alibaba(10)---Sentinel控制檯搭建+整合SpringCloudAlibabaSpringCloudGC
- 一篇搞定Sentinel-搭建Spring Cloud Alibaba服務元件Sentinel實現服務資源控制SpringCloud元件
- Spring Cloud Alibaba系列(五)sentinel實現服務限流降級SpringCloud
- Spring Cloud Alibaba基礎教程:Sentinel使用Apollo儲存規則SpringCloud
- Spring Cloud Alibaba基礎教程:Sentinel使用Nacos儲存規則SpringCloud
- SpringCloud Alibaba(二) - Sentinel,整合OpenFeign,GateWay服務閘道器SpringGCCloudGateway
- 原始碼分析 Alibaba sentinel 滑動視窗實現原理(文末附原理圖)原始碼
- Spring Cloud Alibaba基礎教程:Sentinel Dashboard同步Apollo儲存規則SpringCloud
- Spring Cloud Alibaba | Sentinel: 分散式系統的流量防衛兵初探SpringCloud分散式
- Spring Cloud Alibaba系列——Sentinel降級規則簡介與實踐SpringCloud
- Spring Cloud Alibaba生態探索:Dubbo、Nacos及Sentinel的完美結合SpringCloud
- Spring Cloud Alibaba基礎教程:Sentinel Dashboard中修改規則同步到NacosSpringCloud
- 當Spring Cloud Alibaba Sentinel碰上Spring Cloud Sleuth會擦出怎樣的火花SpringCloud
- SpringCloud使用Sentinel,Sentinel持久化,Sentinel使用nacos持久化SpringGCCloud持久化