sentinel是阿里开源的一个轻量级的分布式流量控制、容错框架,提供限流、熔断、降级等功能。
核心概念
- 资源:可以是java应用中任何内容,可以是服务、方法甚至代码,总结起来就是要保护的东西
- 规则:定义使用怎样的方式保护资源,主要包括流控规则、熔断降级规则等
搭建sentinel控制台
下载sentinel控制台的jar包:https://github.com/alibaba/Sentinel/releases
下载jar包,启动,默认端口8080,访问 localhost:8080 进入控制台,默认用户名、密码都是 sentinel
#启动sentinel控制台,默认使用8080端口,默认用户名、密码都是sentinel
java -jar sentinel-dashboard-1.8.0.jar
#指定使用的端口
java -Dserver.port=7505 -jar sentinel-dashboard-1.8.0.jar
#指定用户名、密码
java -Dsentinel.dashboard.auth.username=chy -Dsentinel.dashboard.auth.password=abcd -jar sentinel-dashboard-1.8.0.jar
#指定应用名称、sentinel控制台地址,这样sentinel本身也会作为一个应用注册到sentinel控制台上
java -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.0.jar
这些-D指定的参数可以搭配使用。
浏览器访问sentinel控制台的 ip:port 即可进入sentinel控制台。
给服务添加sentinel
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
spring:
cloud:
sentinel:
transport:
#sentinel控制台地址
dashboard: localhost:8080
#与sentinel控制台进行数据交互使用的端口,若被其它应用占用,会自动+1后检测是否可用,还不可用继续+1
port: 9999
sentinel默认使用懒加载,添加sentinel后,需要先访问服务节点,sentinel控制台才有该服务节点的数据。注意是服务节点,不是服务。
sentinel控制台的使用
参考官方文档:https://github.com/alibaba/Sentinel/wiki/%E6%8E%A7%E5%88%B6%E5%8F%B0
sentinel配置灵活、功能强大,但目前尚不稳定,慎用。