電流量降級
使用 Sentinel 保護您的應用程式免受個別服務流量突然過載導致的穩定性問題。
什麼是 Sentinel
隨著微服務的普及,服務與服務之間的穩定性變得越來越重要。Sentinel 是一個面向分散式、多語言異構服務架構的流量管理組件,主要以流量為切入點,從流量路由、流量控制、流量整形、熔斷降級、系統自適應過載保護、熱點流量防護等多個維度幫助開發者保障微服務的穩定性。
1. 範例架構說明
介面定義
public interface FooService {
String sayHello(String name);
}
介面實現
@DubboService(timeout = 3000)
public class FooServiceImpl implements FooService {
@Override
public String sayHello(String name) {
return String. format("Hello, %s at %s", name, LocalDateTime. now());
}
}
電流量限制配置
FlowRule flowRule = new FlowRule(FooService. class. getName())
.setCount(10)
.setGrade(RuleConstant.FLOW_GRADE_QPS);
FlowRuleManager. loadRules(Collections. singletonList(flowRule));
2. 快速入門範例
步驟 1:下載原始碼
git clone -b master https://github.com/apache/dubbo-samples.git
cd ./dubbo-samples-sentinel/
步驟 2:構建用例
執行 maven 命令打包 demo 項目
mvn clean package
步驟 3:啟動 Provider
java -classpath ./target/dubbo-samples-sentinel-1.0-SNAPSHOT.jar org.apache.samples.sentinel.FooProviderBootstrap
步驟 4:啟動 OrderService
java -classpath ./target/dubbo-samples-sentinel-1.0-SNAPSHOT.jar org.apache.samples.sentinel.FooConsumerBootstrap
您可以在控制台輸出中看到,`Blocked` 表示已經開始阻擋。
Success: Hello, dubbo at 2022-08-08T15:42:40.809
Success: Hello, dubbo at 2022-08-08T15:42:40.812
Success: Hello, dubbo at 2022-08-08T15:42:40.815
Success: Hello, dubbo at 2022-08-08T15:42:40.818
Success: Hello, dubbo at 2022-08-08T15:42:40.821
Success: Hello, dubbo at 2022-08-08T15:42:40.823
Success: Hello, dubbo at 2022-08-08T15:42:40.826
Success: Hello, dubbo at 2022-08-08T15:42:40.828
Success: Hello, dubbo at 2022-08-08T15:42:40.830
Success: Hello, dubbo at 2022-08-08T15:42:40.834
Blocked
Blocked
Blocked
Blocked
Blocked
有關 Sentinel 的更多使用方法,請參考:Sentinel 護航 Dubbo 服務,Sentinel 官網
上次修改時間:2023 年 2 月 9 日:將 docsy 更新至 0.6.0 (#2141) (20081578326)