Dubbo使用Sentinel进行限流降级

如下示例均基于Spring Boot框架环境实现。

启动Sentinel控制台

在Dubbo中使用Sentinel进行限流和降级时,必须先启动Sentinel控制台,所有的限流和降级配置均通过控制台进行,在Dubbo服务提供方和服务消费方只需要接入Sentinel即可。
启动Sentinel控制台,只需要按照官方文档操作即可,详见:Sentinel 控制台

在Dubbo服务中接入Sentinel

在Dubbo服务项目中添加如下依赖:

1
2
3
4
5
6
7
8
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-apache-dubbo-adapter</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-transport-simple-http</artifactId>
</dependency>

通常,添加上述依赖配置之后,Dubbo服务就会将流量等信息发送到Sentinel控制台进行监控和查看,此时无法在应用代码层做任何修改。

如果希望在Dubbo服务在收到限流或降级之后进行某些处理,可能还需要对一些特定的异常进行捕获和处理,或者是添加注解配置。

如下实例所示,在注解@DubboReference通过mock参数指定服务降级之后执行的接口实现类。

1
2
3
4
5
6
7
8
9
10
@DubboReference(mock = "org.apache.dubbo.springboot.demo.consumer.DemoServiceMock")
DemoService demoService;

// 明确定义一个服务降级之后执行的Mock类
public class DemoServiceMock implements DemoService {
@Override
public String sayHello(String name) {
return "Hello, Mock";
}
}

【参考】
Sentinel 官网网站
Sentinel Github文档