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配置灵活、功能强大,但目前尚不稳定,慎用。