Springboot+Dubbo+Nacos 集成 Sentinel(入门)
Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。Sentinel 官网
整体架构如下:
在 Sentinel 里面,所有的资源都对应一个资源名称以及一个 Entry。Entry 可以通过对主流框架的适配自动创建,也可以通过注解的方式或调用 API 显式创建;每一个 Entry 创建的时候,同时也会创建一系列功能插槽(slot chain)。这些插槽有不同的职责,例如:
NodeSelectorSlot
主要负责收集资源的路径,并将这些资源的调用路径,以树状结构存储起来,用于根据调用路径来限流降级。
ClusterBuilderSlot
用于存储资源的统计信息以及调用者信息,例如该资源的 RT, QPS, thread count 等等,这些信息将用作为多维度限流,降级的依据;
StatisticSlot
用于记录、统计不同纬度的 runtime 指标监控信息;
FlowSlot
用于根据预设的限流规则以及前面 slot 统计的状态,来进行流量控制;
AuthoritySlot
根据配置的黑白名单和调用来源信息,来做黑白名单控制;
DegradeSlot
通过统计信息以及预设的规则,来做熔断降级;
SystemSlot
通过系统的状态,例如 load1 等,来控制总的入口流量;
1.版本选择
参考 SpringCloudAlibaba SpringCloud SpringBoot 版本对照-CSDN博客
依赖版本:
spring-boot:2.3.12.RELEASE
spring-cloud-alibaba:2.2.7.RELEASE
spring-cloud:Hoxton.SR12
nacos:2.0.3
Sentinel: 1.8.1
Springboot SpringCloudAlibaba Nacos 项目搭建-CSDN博客
Linux 部署Sentinel控制台-CSDN博客
2.添加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>${spring-cloud-alibaba.version}</version>
</dependency>
3.简单配置
spring:
sentinel:
transport:
dashboard: 127.0.0.1:8080
4.测试访问项目接口
http://xxxx/api/user/getName
http://xxxxx/api/order/123
#
5.控制台流量控制
资源名:直接填写请求路径
来源应用:默认default 不区分来源
流控模式:默认 直接,关联(关联资源达到阀值限流自己)、链路(记录指定链路流量)
阈值类型:默认 QPS(每秒响应请求数),线程数。
阈值:指定1,即每秒1次访问
阀值类型:默认单机
流控效果:默认直接失败(抛出异常)、Warm Up(增加预热时长)、排队等待。
6.关闭Sentinel懒加载
sentinel是懒加载机制,只有访问过一次的资源才会被监控。
spring:
sentinel:
# 取消控制台懒加载,项目启动即连接Sentinel
eager: true
Sentinel 流控规则-CSDN博客
还没有评论,来说两句吧...