sentinel是什么?为什么要用sentinel?sentinel怎么在项目中应用
一 sentinel用于流控,降级;比如面对恶意攻击,一秒上万的请求,我们可以对这些请求在一段时间内拒绝访问,一般我们会设置qps来拒绝超额的访问
二 使用sentinel可以保护我们的服务不被大流量击垮,避免cpu,带宽被拉跨
三 项目中的应用
sentinel用于流控 降级
使用方法:
1.docker 容器化部署sentinel
docker pull bladex/sentinel-dashboard:latest
2.启动sentinel
docker run --name sentinel -d -p 8858:8858 镜像id
3.项目中整合
3.1添加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
3.2配置文件加sentinel配置信息
spring:
cloud:
sentinel:
transport:
dashboard: 192.168.0.0:8858
port: 9999
4.http://公网ip:8858 配置限流规则
5.引言:
配置sentinel限流策略,但是重启微服务,策略就会不见,需要重新再设置;
解决办法将sentinel流控策略持久化到nacos中,但是不能反向操作(控制台中修改策略不能反向操作到配置文件中)
操作步骤:
5.1 项目中加依赖
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
5.2配置持久化数据源
sentinel:
transport:
dashboard: 139.196.11.22:8858
#流控规则持久化到nacos配置中心
datasource:
ds1:
nacos:
server-addr: 192.168.0.0:8848
data-id: ${spring.application.name}.json
group-id: DEFAULT_GROUP
data-type: json
rule-type: flow
5.3 配置中心配置 json文件
[
{
"resource":"/test",
"controlBehavior":0,
"count":2,
"grade":1,
"limitApp":"default",
"strategy":0
},
{
"resource":"/api/user/v1/user_list",
"controlBehavior":0,
"count":1,
"grade":1,
"limitApp":"default",
"strategy":0
}
]
解释
resource:资源名,
limitApp:流控针对的调用来源,若为 default 则不区分调用来源
grade:限流类型(QPS 或并发线程数),0代表根据并发数量来限流,1代表根据QPS来进行流量控制
count:限流阈值
strategy:调用关系限流策略
controlBehavior:流量控制效果(直接拒绝、Warm Up、匀速排队)
clusterMode:是否为集群模式,存在问题