0%

Spring Cloud Alibaba限流降级Sentinel入门搭建

启动 sentinel dashboard

在官网下载 sentinel-dashboard-1.8.1.jar,并运行

1
java -Dserver.port=8081 -Dcsp.sentinel.dashboard.server=localhost:8081 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.1.jar

8081端口是指访问dashboard的端口。

启动以后,可以通过链接 http://localhost:8081 访问到页面,用户名和密码都是 sentinel

把项目加入到 dashboard

写一个标准的Springboot项目。

pom.xml文件里面添加如下依赖:

1
2
3
4
5
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>${sentinel.version}</version>
</dependency>

在项目的 application.yml 配置文件里面添加如下内容:

1
2
3
4
5
spring:
cloud:
sentinel:
transport:
dashboard: localhost:8081

在需要加入限流的业务逻辑里面添加如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@Service
public class UserServiceImpl implements UserService {

// 限流的规则设置
@PostConstruct
private void initFlowRules() {

List<FlowRule> rules = new ArrayList<>();
FlowRule flowRule = new FlowRule();
flowRule.setResource("UserFlowRule");
// 设置QPS为1
flowRule.setGrade(RuleConstant.FLOW_GRADE_QPS);
flowRule.setCount(1);

rules.add(flowRule);
FlowRuleManager.loadRules(rules);
}

@Override
@SentinelResource(value = "UserFlowRule", blockHandler = "degradeMethod")
public String sayHello(String name) {
System.out.println("executed...");
return "hello, " + name;
}

/**
* 降级方法
* @param name
* @param blockException
* @return
*/
public String degradeMethod(String name, BlockException blockException) {
return "限流" + blockException.getRule().getResource();
}

}