Sentinel 介绍
Sentinel是⼀个⾯向云原⽣微服务的流量控制、熔断降级组件。 替代Hystrix,针对问题:服务雪崩、服务降级、服务熔断、服务限流
Sentinel 分为两个部分 : 核⼼库:( Java 客户端)不依赖任何框架 / 库,能够运⾏于所有 Java 运⾏时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的⽀持。 控制台:( Dashboard )基于 Spring Boot 开发,打包后可以直接运⾏,不需要额外的 Tomcat 等应⽤容器。 Sentinel 具有以下特征: 丰富的应⽤场景: Sentinel 承接了阿⾥巴巴近 10 年的双⼗⼀⼤促流量的核⼼场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填⾕、集群流量控制、实时熔断下游不可⽤应⽤等。 完备的实时监控: Sentinel 同时提供实时的监控功能。您可以在控制台中看到接⼊应⽤的单台机器秒级数据,甚⾄ 500 台以下规模的集群的汇总运⾏情况。 ⼴泛的开源⽣态: Sentinel 提供开箱即⽤的与其它开源框架 / 库的整合模块,例如与 SpringCloud 、 Dubbo 的整合。您只需要引⼊相应的依赖并进⾏简单的配置即可快速地接⼊ Sentinel 。 完善的 SPI 扩展点: Sentinel 提供简单易⽤、完善的 SPI 扩展接⼝。您可以通过实现扩展接⼝来快速地定制逻辑。例如定制规则管理、适配动态数据源等。 Sentinel 的主要特性: Sentinel 部署 下载地址: https://github.com/alibaba/Sentinel/releases 我们使⽤ v1.7.1 启动: java -jar sentinel-dashboard-1.7.1.jar & ⽤户名 / 密码: sentinel/sentinel工程改造 pom.xml 引⼊依赖
application.yml修改(配置sentinel dashboard)com.alibaba.cloud spring-cloud-starter-alibaba-sentinel
spring:
cloud:
sentinel:
transport:
dashboard: 192.168.1.7:8080
port: 8719
基于 Nacos 实现 Sentinel 规则持久化
pom.xml
中添加依赖
application.yml 中配置 Nacos 数据源com.alibaba.csp sentinel-datasource-nacos
spring:
application:
name: login-alibaba-server-gateway
cloud:
nacos:
discovery:
server-addr: 192.168.1.7:8848,192.168.1.7:8849,192.168.1.7:8850
namespace: 821227e8-16a0-4cac-9920-421d8a531f54
config:
server-addr: 192.168.1.7:8848,192.168.1.7:8849,192.168.1.7:8850
#锁定nacos server端的配置文件
namespace: 821227e8-16a0-4cac-9920-421d8a531f54
group: DEFAULT_GROUP
prefix: login-alibaba-parent-gateway
file-extension: yaml
#多配置文件配置
ext-config[0]:
# 指定文件名
data-id: login-alibaba-parent-black.yaml
# 分组
group: DEFAULT_GROUP
#开启动态刷新
refresh: true
sentinel:
transport:
dashboard: 192.168.1.7:8080
port: 8719
datasource:
flow:
nacos:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
data-id: ${spring.application.name}-flow-rules
groupId: DEFAULT_GROUP
data-type: json
rule-type: flow
degrade:
nacos:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
data-id: ${spring.application.name}-degrade-rules
groupId: DEFAULT_GROUP
data-type: json
rule-type: degrade
Nacos Server
中添加对应规则配置集(可以指定命名空间)
流控规则配置集
lagou-service-autodeliver-flflow-rules
[
{
"resource":"findResumeOpenState",
"limitApp":"default",
"grade":1,
"count":1,
"strategy":0,
"controlBehavior":0,
"clusterMode":false
}
]
resource
:资源名称
limitApp
:来源应⽤
grade
:阈值类型
0
线程数
1 QPS
count
:单机阈值
strategy
:流控模式,
0
直接
1
关联
2
链路
controlBehavior
:流控效果,
0
快速失败
1 Warm Up 2
排队等待
clusterMode:
true/false
是否集群
降级规则配置集
lagou-service-autodeliver-degrade-rules
[
{
"resource":"findResumeOpenState",
"grade":2,
"count":1,
"timeWindow":5
}
]
resource
:资源名称
grade
:降级策略
0 RT 1
异常⽐例
2
异常数
count:阈值
timeWindow
:时间窗
注意 1 )⼀个资源可以同时有多个限流规则和降级规则,所以配置集中是⼀个 json 数组 2 ) Sentinel 控制台中修改规则,仅是内存中⽣效,不会修改 Nacos 中的配置值,重启后恢复原来的值; Nacos 控制台中修改规则,不仅内存中⽣效, Nacos中持久化规则也⽣效,重启后规则依然保持



