如下示例均基于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;
public class DemoServiceMock implements DemoService { @Override public String sayHello(String name) { return "Hello, Mock"; } }
|
【参考】
Sentinel 官网网站
Sentinel Github文档