sentinel介绍
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。 Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
Sentinel 具有以下特征:
- 丰富的应用场景: Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、实时熔断下游不可用应用等。
- 完备的实时监控: Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。
- 广泛的开源生态: Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。
- 完善的 SPI 扩展点: Sentinel 提供简单易用、完善的 SPI 扩展点。您可以通过实现扩展点,快速的定制逻辑。例如定制规则管理、适配数据源等。
如何在项目中引用sentinel
如果要在您的项目中引入 Sentinel,使用 group ID 为 com.alibaba.cloud 和 artifact ID 为 spring-cloud-starter-alibaba-sentinel 的 starter。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
这是摘抄于sentinel在github官网上的对于sentinel的介绍
这次记录的是关于sentinel的流控介绍
1、在github上下载相应的jar包
2、执行jar包
java -jar xxx.jar
3、新建一个工程,并配置sentinel相关配置
我是配置在nacos服务注册中心的动态配置中
如图:

sentinel:
transport:
dashboard: localhost:8080
4、将动态配置文件加载到对应的工程的配置文件中
server.port=9001
# 这里的应用名对应 Nacos Config 中的 Data ID,实际应用名称以配置中心的配置为准
spring.application.name=nacos-provider-config
# 指定查找名为 nacos-provider-config.yaml 的配置文件
spring.cloud.nacos.config.file-extension=yaml
# Nacos Server 的地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.group=DEV_GROUP
spring.cloud.nacos.config.namespace=71d72c8d-0641-427f-8757-188cf06bd57a
5、配置成功后进行测试,随便写个controller进行测试

测试成功的现象
1、在nacos注册中心的状态

我们会将服务注册到nacos注册平台
2、在sentinel的平台上的现象

3、我们的controller也是正常访问


流控规则
1、对QPS的限制进行流量控制
比如我限制每秒点击量只能是一次 在sentinel平台中配置


出现的效果就是当我一秒中连续点击多次时,会出现以下效果

这就是我破坏我所设置的规则,就会起到限流的作用。
2、对线程数的限制进行流量控制 只能接受一个线程(请求),当一个线程未完成时,另一个线程直接返回失败

出现的现象

对于QPS和限制线程数来说
QPS就是在外部限制请求数量,而限制线程数就是将请求全部放入,但是在内部限制流量。
3、关联 限制流量
当A服务因为请求过多挂掉时,服务提供者B会进行限流
设置

打个比方:设想一下支付接口和订单接口,当支付接口挂了时,订单接口就会限流,减少流量。
4、warm up 预热


公式: 阀值除以coldFactor(默认值为3),经过预热时长后才会达到阀值
默认coldFactor 为3,即请求QPS从threshold/3开始,经过预热时长后才会达到阀值。

我这么设置意思就是QPS达到10/3 = 3,经过5秒预热后达到阀值,就会正常启动。
在5秒前连续点击超过三次,就会部分请求就会直接失败,但是经过5秒达到阀值,就不会出现直接失败的请求,除非每秒点击次数超过阀值。
5、排队等待


6、链路限流
