从 Sentinel 1.6.0 起sentinel已经支持自定义用户名和密码了,只需要在执行jar命令时指定即可,命令如下:
java -Dsentinel.dashboard.auth.username=admin -Dsentinel.dashboard.auth.password=123 -jar sentinel-dashboard-1.7.1.jar用户可以通过如下参数进行配置:
-Dsentinel.dashboard.auth.username=sentinel 用于指定控制台的登录用户名为 sentinel;
-Dsentinel.dashboard.auth.password=123456 用于指定控制台的登录密码为 123456;如果省略这两个参数,默认用户和密码均为 sentinel;
-Dserver.servlet.session.timeout=7200 用于指定 Spring Boot 服务端 session 的过期时间,如 7200 表示 7200 秒;60m 表示 60 分钟,默认为 30 分钟;
注意:部署多台控制台时,session 默认不会在各实例之间共享,这一块需要自行改造。
除了用户名密码相关的配置,sentinel控制台还提供了其他的可配置选项,如下图:
6、微服务如何接入sentinel控制台?微服务为什么要集成sentinel控制台,sentinel不是提供了相关的API吗?
其实Spring Boot 官方一直提倡约定>配置>编码的规则,能够不硬编码何乐而不为呢?
因此本文后续内容主要还是结合sentinel控制台进行讲解,关于API的使用大家可以按照官方文档学习,讲解的非常清楚。
好了,言归正传,微服务如何接入sentinel控制台呢?
1、新建微服务模块注册进入Nacos这里的注册中心依然使用的是nacos,有不会用的请看专栏第一篇Nacos文章:
新建一个微服务模块:sentinel-service9008,相关代码不贴出了。
相关配置如下:
server: port: 9008 spring: application: ## 指定服务名称,在nacos中的名字 name: sentinel-service cloud: nacos: discovery: # nacos的服务地址,nacos-server中IP地址:端口号 server-addr: 127.0.0.1:8848 management: endpoints: web: exposure: ## yml文件中存在特殊字符,必须用单引号包含,否则启动报错 include: '*'源码全部会上传,获取方式看文末!
2、添加依赖除了Nacos的依赖,还需要添加一个sentinel的依赖:
<!--sentinel的依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>以上只贴出了sentinel相关依赖,nacos依赖不再贴了,见源码!
3、添加配置集成控制台只需要添加如下配置即可集成sentinel控制台:
spring: cloud: sentinel: transport: ## 指定控制台的地址,默认端口8080 dashboard: localhost:8080 4、新建一个测试接口下面新建一个测试接口,用于测试相关规则,如下:
@RestController @RequestMapping("/sentinel") public class FlowLimitController { @GetMapping("/test") public String test(){ return "接收到一条消息--------"; } } 5、启动微服务启动9008这个微服务,然后浏览器输入::9008/sentinel/test,此时查看sentinel控制台,将会看见sentinel-service这个服务已经被监控了,如下图:
注意:sentinel是懒加载机制,只有访问过一次的资源才会被监控。
不过可以通过配置关闭懒加载,在项目启动时就连接sentinel控制台,配置如下:
spring: sentinel: # 取消控制台懒加载,项目启动即连接Sentinel eager: true 7、流量控制如何配置?流量控制(flow control),其原理是监控应用流量的 QPS 或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。
QPS:每秒请求数,即在不断向服务器发送请求的情况下,服务器每秒能够处理的请求数量。
并发线程数:指的是施压机施加的同时请求的线程数量。
同一个资源可以创建多条限流规则,一条限流规则由以下元素组成:
resource:资源名,即限流规则的作用对象。
count: 限流阈值
grade:限流阈值类型(1:QPS 0:并发线程数),默认值QPS
limitApp:流控针对的调用来源,若为 default 则不区分调用来源,默认值default