spring cloud alibaba小白教程系列之(三)Sentinel的搭建与使用
spring cloud alibaba小白教程系列之(三)Sentinel的搭建与使用
先扯两句,不知道掘友们有没有发现,在掘金社区里全都大神,而且有意思的是,通过观察每个大神的头像,我才惊奇的发现,现在在社区里缺少师傅、二师兄、沙师弟。求组队一起升级打怪兽。哈哈!!!!!!
声明:本人不是大神,还占用了大师兄真是惭愧。我就是技术界的小白,希望能成为技术大神,梦想还是要有的,万一实现了那,哈哈哈!!!

前言
先简单说一下sentinel是什么,能干些什么。这里引用 sentinel官网。
❝
Sentinel是分布式系统的流量防卫兵。
Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
❞
sentinel其实就是相当于spring cloud中的Hystrix。
sentinel分为两个部分:
核心库(java客户端):不依赖任何框架/库,能够运行于所有的java运行的环境,同时对Dubbo、spring cloud等框架也有较好的支持。 控制台(Dashboard):基于spring boot开发,打包后可以直接运行,不需要额外的Tomcat等应用容器。 
下载与安装
下载
下载地址:sentinel 1.7.2 版本。
sentinel的下载与nacos一样,下载后的都是可以直接运行的jar包,都是基于spring boot开发。
安装
❝
注意:sentinel默认会使用
8080端口,如果想使用其它端口可以使用命令:
java -Dserver.port=8081 -jar sentinel-dashboard-1.7.2.jar 来指定端口。 ❞
运行启动sentinel,然后输入http://loalhost:8080 我这里使用的是默认端口,启动成功会看到如下截图,用户名和密码都是snetienl。

登陆成功后会显示:

到这里就证明sentinel安装成功了。接下来我们来搭建项目来使用sentinel。
❝
说明:页面上什么也没有,也说明这个页面是实时收集数据的。
❞
新建module
本文之直接新建module,方便演示,也为了和其它demo区分开。如果是真实项目可以直接在项目中改造。创建module就不多说了,如果还不会的小伙伴可以看我之前的写的教程。
修改pom
修改pom.xml文件,增加配置,如下:
<dependency><groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-sentinel</artifactId>
</dependency>
改yaml配置
修改application.yml配置文件,如下:
server:  port:8801
spring:
  cloud:
    nacos:
      discovery:
        server-addr:127.0.0.1:8848
    sentinel:
      transport:
        dashboard:127.0.0.1:8080# sentinel地址
        port:8179# 默认8179 如果被占用会自动加1依次开始扫描,直到找到未注册端口
  application:
    name:sentinel-server
management:
  endpoints:
    web:
      exposure:
        include:'*'
修改启动类
启动类增加@EnableDiscoveryClient注解
增加业务测试类
创建业务测试类TestController。随便写两个测试方法。
/** * @author fujie.feng
 * @Date 2020-05-25
 */
@RestController
publicclassTestController{
@GetMapping("/test")
public String test(){
return"success";
 }
@GetMapping("/app")
public String testApp(){
return"app";
 }
}
测试验证
❝
启动新建的module,前提是先启动nacos和sentinel。
❞
访问新增的业务类测试地址,http://localhost:8801/test 和 http://localhost:8801/app, 然后我们刷新sentinel的页面就可以看到如下截图,

到此,sentinel就搭建完成了。
简单使用sentinel
流控规则
先简单说明一下流控规则:
❝
资源名:唯一名称,默认请求路径。
针对来源:sentinel可以针对调用者进行限流,填写微服务名称,默认default(不区分来源)。
阈值类型/单机阈值:
QPS:每秒钟的请求数量,当调用该api的QPS达到阈值的时候,进行限流 线程数:当调用该api的线程数达到阈值的时候,进行限流。 是否集群:不需要集群
流控模式:
直接:api达到限流条件时,直接限流。 关联:当关联的资源达到阈值时,就限流自己 链路:只记录指定链路上的限流(指定资源从入口资源进来的流量,如果达到阈值,就进行限流)(api级别的针对来源) 流控效果:
快速失败:直接失败,抛异常。 Warm Up:根据codeFactor(冷加载因子,默认3)的值,从阈值/codeFactor,经过预热时长,才达到设置的QPS阈值。 ❞
新建流控规则
增加流控规则有两种方式,一种是在簇点联路中列出来的列表信息中直接编辑,另一种是在流控规则中直接添加,这里采用第二种方式,在流控规则中直接增加,如果所示:

可以按照截图中的顺序依次操作。
我这里流控的是/test 请求,阈值类型选择的是QPS,单机阈值是1。

❝
流控规则说明:/test每次只能请求一次
❞
验证规则
这时,我们可以访问http://localhost:8801/test,结果如下图所示

然后我们可以快速刷新这个页面,来看一下流控效果,如下图所示:

页面返回了Blocked by Sentinel(flow limiting),意思就是说,请求被sentinel阻止。说明我们设置的流控规则已经生效了。
我们这个时候也可以访问http://localhost:8801/app (没有设置流控规则),然后多刷新页面几次,会看到每次请求都是成功的。
这里就不过多演示其它功能,操作还是比较简单,小伙伴可以自行操作。
对比Hystrix
这里简单对比一下hystrix:
❝
Hystrix
需要我们自己手工搭建监控平台 没有一套web界面可以给我们进行更加细粒化配置流空,速率控制、服务熔断、服务降级等。 Sentinel
单独组件,可以独立出来。 直接界面化细粒度的统一配置。 ❞
总结
本文简单介绍了sentinel的使用和搭建过程,总体来说还是很简单的。
源码地址
github gitee 

spring cloud alibaba小白系列搭建教程:
spring cloud alibaba小白教程系列之(一)-Nacos服务的注册与发现 spring cloud alibaba小白教程系列之(二)-Nacos配置中心 
以上是 spring cloud alibaba小白教程系列之(三)Sentinel的搭建与使用 的全部内容, 来源链接: utcz.com/a/21672.html

