Springboot+Dubbo+Nacos 集成 Sentinel(入门)

Myth丶恋晨 2024-02-19 11:28 91阅读 0赞

Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。Sentinel 官网

整体架构如下:

801e508e6bbc4e86bc753a52a02e2029.png

在 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.添加依赖

  1. <dependency>
  2. <groupId>com.alibaba.cloud</groupId>
  3. <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
  4. <version>${spring-cloud-alibaba.version}</version>
  5. </dependency>

3.简单配置

  1. spring:
  2. sentinel:
  3. transport:
  4. dashboard: 127.0.0.1:8080

4.测试访问项目接口

http://xxxx/api/user/getName

http://xxxxx/api/order/123

2823300cc45b4e9999956c24a1bb6c47.png

#

5.控制台流量控制

813897d4017841a084de56b0293cd5c9.png

6acaa058544c4be8872bb7bf8b308566.png

6fe90418f7e1465c97448be841f01736.png

160964cbbc434013a495ec7a970c2d90.png

658f104f3d3b46b2a432ba62468af0dd.png 资源名:直接填写请求路径

来源应用:默认default 不区分来源

流控模式:默认 直接,关联(关联资源达到阀值限流自己)、链路(记录指定链路流量)

阈值类型:默认 QPS(每秒响应请求数),线程数。

阈值:指定1,即每秒1次访问

阀值类型:默认单机

流控效果:默认直接失败(抛出异常)、Warm Up(增加预热时长)、排队等待。

6.关闭Sentinel懒加载

sentinel是懒加载机制,只有访问过一次的资源才会被监控。

  1. spring:
  2. sentinel:
  3. # 取消控制台懒加载,项目启动即连接Sentinel
  4. eager: true

Sentinel 流控规则-CSDN博客

发表评论

表情:
评论列表 (有 0 条评论,91人围观)

还没有评论,来说两句吧...

相关阅读