搭建java项目
- 项目结构
- maven坐标
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>
- 配置信息
spring: application: name: sentinel cloud: sentinel: transport: # 指定控制台 dashboard: 127.0.0.1:8849 # 服务与控制台交互的http端口 默认8719 port: 8719 # 指定客户端的ip 在多网卡的情况下这个很重要 client-ip: 192.168.31.16 nacos: discovery: server-addr: 127.0.0.1:8848 username: nacos password: nacos inetutils: preferred-networks: 192.168.31 # 使用sentinel 需要设置暴露站点 management: endpoints: web: exposure: include: '*' server: port: 8084
4.代码
注意:sentinel没有启动注解,只需要在需要进行控制的资源上加上@SentinelResource注解,value为资源名
搭建sentinel环境
-
启动控制台
sentinel默认的端口是8080,此端口极易冲突 所以需要手动设置端口java -jar -Dserver.port=8849 sentinel-dashboard-1.8.0.jar &
-
启动完成之后访问sentinel的控制台:http://127.0.0.1:8849/#/login,默认用户名密码都是sentinel
-
登录成功之后
测试
-
启动测试类SentinelApp
-
使用浏览器访问接口 127.0.0.1:8084/sentinel/demo
控制台会打印下面这几行日志
-
刷新sentinel管理界面,发现服务已经被sentinel监控到了
-
设置一个流控规则
-
拿出我们的麒麟臂,疯狂刷新 http://localhost:8084/sentinel/demo
控制台会打印
-
实时监控面板
需要注意的是监控面板是自动刷新的,不能查询历史记录
一个更加详细,思路清晰的sentinel使用传送门,其中博主整理了限流规则该如何使用,怎么理解
踩坑实录
-
sentinel默认是懒加载,所以服务启动之后刷新控制台界面没有对应服务是正常的,这个时候只要访问一下监控的接口,服务就可以在sentinel控制台查看了。
-
需要注意sentinel的控制台和服务之间的网络一定要是互通的,当在控制台界面保存规则报错的时候,可能就是这个原因导致的
解决方案:设置配置项 spring.cloud.sentinel.transport.client-ip
当sentinel出现问题的时候我们可以通过查看控制台来发现并解决问题