添加Maven依赖
在以前的版本中整合 Sentinel 需要手动配置。新版本中添加 spring-cloud-alibaba-sentinel-gateway 依赖就可以了,内部帮我们配置好了。可以参考: SentinelSCGAutoConfiguration
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>
配置Sentinel
spring:cloud:sentinel:# 配置Sentinel控制台transport:dashboard: localhost:8888 # Sentinel 控制台地址# 如果需要配置Sentinel全局异常处理,可以添加以下配置scg:fallback:mode: response # 重定向(redirect) 或者 响应(response)# redirect: # mode 为 redirect 时,设置重定向URLresponse-status: 200 # 响应状态码response-body: "{code: 500, msg: '服务器压力山大,请稍后再试!'}" # 响应内容体
配置规则
配置规则有多种方式
1.代码中通过Bean的初始化来配置。
2.通过控制台配置
3.集成配置中心进行配置
代码中配置
@Configurationpublic class GatewayFlowRuleConfig {/*** 初始化网关流控规则*/@PostConstructpublic void init() {Set<GatewayFlowRule> rules = new HashSet<>();rules.add(new GatewayFlowRule().setResourceMode(SentinelGatewayConstants.RESOURCE_MODE_ROUTE_ID) // 模式.setResource("user_route") // 资源名,gateway网关路由.setGrade(RuleConstant.FLOW_GRADE_QPS) // 流控类型 QPS、线程数.setCount(3) // 间隔时间内最大请求次数.setIntervalSec(1L) // 间隔时间.setControlBehavior(RuleConstant.CONTROL_BEHAVIOR_DEFAULT) // 流控方式 默认快速失败.setBurst(0) // 超过最大请求次数,还能容忍多少个请求通过);GatewayRuleManager.loadRules(rules);}}
控制台中配置
控台配置比较直观,方便。缺点就是不能持久化,只要服务重启规则就没有了。控制台规则持久化,可以查看如果持久化。
配置中心配置规则
这里以 Nacos 为例
添加Maven依赖
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-sentinel-datasource</artifactId></dependency><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId></dependency>
配置Sentinel Datasource
spring:cloud:sentinel:datasource:# 名称自定义gateway-flow-rule:nacos:server-addr: ${spring.cloud.nacos.discovery.server-addr}namespace: ${spring.cloud.nacos.discovery.namespace}group-id: SENTINEL_GATEWAY_FLOW_GROUPdata-id: ${spring.application.name}-gateway-flow-rules.json# 配置网关的流控规则一定要设置成 gw-flow,flow 是普通流控规则。rule-type: gw-flow # 设置 gateway flow 流控规则类型
Nacos添加规则配置
创建Nacos配置文件,命名空间、groupId、dataId与上面配置一致。
配置参数参考代码中配置规则类 GatewayFlowRule
[{"app": "gateway-server","burst": 0,"controlBehavior": 0,"count": 5.0,"grade": 1,"interval": 1,"intervalUnit": 0,"maxQueueingTimeoutMs": 500,"resource": "user_route","resourceMode": 0}]
重启项目,Nacos中的规则配置在控制台就能看到了。

