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