電流量降級

使用 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)