限流降级

使用 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 日:Update docsy to 0.6.0 (#2141) (20081578326)