父工程pom
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-alibaba-dependenciesartifactId>
<version>2.2.1.RELEASEversion>
<type>pomtype>
<scope>importscope>
dependency>
dependencies>
dependencyManagement>
子工程pom
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-sentinelartifactId>
dependency>
You can download the latest Sentinel Dashboard jar from the release page.
使用java启动命令,默认端口号8080
java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar
spring:
cloud:
sentinel:
eager: true
auth:
enabled: true
username: sentinel
password: sentinel
transport:
dashboard: 127.0.0.1:8088
也可以通过添加VM配置启动服务
-Dproject.name=nacos-provider -Dcsp.sentinel.dashboard.server=127.0.0.1:8088
流量控制规则
Field | 说明 | 默认值 |
---|---|---|
resource | 资源名,资源名是限流规则的作用对象 | |
count | 限流阈值 | |
grade | 限流阈值类型,QPS 模式(1)或并发线程数模式(0) | QPS 模式 |
limitApp | 流控针对的调用来源 | default,代表不区分调用来源 |
strategy | 调用关系限流策略:直接、链路、关联 | 根据资源本身(直接) |
controlBehavior | 流控效果(直接拒绝/WarmUp/匀速+排队等待),不支持按调用关系限流 | 直接拒绝 |
clusterMode | 是否集群限流 | 否 |
@Configuration
public class FlowConfig {
private String LIMIT_KEY = "QPS1";
// 初始限流流规则
@PostConstruct
public void inintFlowQpsRule() {
List<FlowRule> rules = new ArrayList<FlowRule>();
FlowRule flowRule = new FlowRule();
// 限流的资源
flowRule.setResource(LIMIT_KEY);
// 限流规则
flowRule.setGrade(RuleConstant.FLOW_GRADE_QPS);
// 设置并发数2(1s只能有2个请求进来)
flowRule.setCount(2);
// 应用来源(隔离用)
flowRule.setLimitApp("default");
rules.add(flowRule);
FlowRuleManager.loadRules(rules);
}
}
服务:
@Override
// @SentinelResource(value = "getInfo")
public String getInfo() {
Entry entry = null;
try {
// sentinel获取许可的工具类
entry = SphU.entry("QPS1");
} catch (BlockException e) {
log.warn("当前访问人数过多,请稍后再试");
return "当前访问人数过多,请稍后再试";
} finally {
if (entry != null) {
entry.exit();
}
}
return "return info success";
}
熔断降级规则
Field | 说明 | 默认值 |
---|---|---|
resource | 资源名,即规则的作用对象 | |
count | 阈值 | |
grade | 熔断策略,支持秒级 RT/秒级异常比例/分钟级异常数 | 秒级平均 RT |
timeWindow | 降级的时间,单位为 s | |
rtSlowRequestAmount | RT 模式下 1 秒内连续多少个请求的平均 RT 超出阈值方可触发熔断(1.7.0 引入) | 5 |
minRequestAmount | 异常熔断的触发最小请求数,请求数小于该值时即使异常比率超出阈值也不会熔断(1.7.0 引入) | 5 |