安装 sentinel dashboard
我使用的 sentinel 版本是: sentinel-dashboard-1.8.0
启动控制台命令:
java -jar sentinel-dashboard-1.8.0.jar
默认启动的是 8080 端口, 登录账号和密码默认为 sentinel
。 如果需要修改启动端口可以在启动命令前面加 -Dserver.port=9999
修改
使用介绍
通常我们在项目中对于 sentinel 最常用的场景,就是默认的流控对接口的访问添加流控规则。Sentinel 也提供了对于 RestTemplate 、OpenFegin 的支持。
简单案例
1. 导入依赖
如果我们需要使用 sentinel ,首先我们需要在业务服务中,导入 sentinel 客户端的依赖。下面是 Maven 的 pom 依赖。 我们可以直接使用 spring-coud-starter-alibaba-sentinel
进行快速整合
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>
对于 spring-cloud-alibaba 相关的版本依赖信息如下
<properties> <spring-boot.version>2.3.10.RELEASE</spring-boot.version> <spring-cloud.version>Hoxton.SR8</spring-cloud.version> <spring-cloud-alibaba.version>2.2.5.RELEASE</spring-cloud-alibaba.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring-cloud-alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
2. YML 配置
我们在业务服务中导入了依赖过后,我们需要修改 application.yml 文件让服务启动过后自动注册到 sentinel-dashboard
服务上去。
spring: cloud: sentinel: transport: port: 8719 dashboard: localhost:8080
3. 绑定流控规则
我们可以通过 SentinelResource
对指定资源进行流控限制, 下面的 test1
对应着一个流控规则,test1
可以在 sentinel-dashboard
中直接配置
@RestController public class HelloController { @GetMapping("/hello") public String hello () { return "OK"; } }
4. 查看管理后台
注意:如果已经启动
snetinel-dashboard
后并且启动业务服务,在sentinel-dashboard
后台还是没有服务的话,我们可以先访问一下业务服务的接口,然后在刷新snetinel-dashboard
观察是否正常。如果还是不正常请考虑 sentinel 的 client 版本和dashboard
是否匹配。
首先选择自己对应服务展开,然后选择**【簇点链路】** 菜单。选择需要流控的接口 /hello
然后选择 【流控】按钮进行流控配置
我们可以配置, 我们选择【阀值类型】选择【QPS】,然后设置【单机阀值】 填入 1 。表示该接口每秒钟只能接受一个 QPS ,如果超过阈值过后就会触发 【流控】默认 Sentinel 返回 Blocked by Sentinel (flow limiting)
5. 流控规则触发
如果我们需要触发流控规则我们频繁访问 /hello
接口即可。
~ curl http://127.0.0.1:8066/hello OK% ~ curl http://127.0.0.1:8066/hello Blocked by Sentinel (flow limiting)%
通过上面的结果我们可以看到当单位时间内超过阈值过后, 就会触发 flow limit