Sentinel配置持久化到Nacos实现流控熔断

news2024/11/26 2:47:35

控制台

jar 下载:github.com/alibaba/Sen…

启动参数

# 将控制台自身接入到sentinel
nohup java -jar -Dproject.name=sentinel-dashboard -Dcsp.sentinel.dashboard.server=localhost:8181 sentinel-dashboard-1.8.5.jar --server.port=8181 &> sentinel.log &
# -Dsentinel.dashboard.auth.username=sentinel 
# -Dsentinel.dashboard.auth.password=sentinel 

控制台页面

心跳时间

通过多次刷新页面,发现默认每隔10秒发送一次心跳。

规则下发

端口配置会在应用对应的机器上启动一个 Http Server ,该 Server 会与 Sentinel 控制台 做交互。

比如 Sentinel 控制台添加了一个限流规则,会把规则数据 push 给这个 Http Server 接收,Http Server 再将规则注册到 Sentinel 中。

接入Nacos

pom

<!-- spring cloud alibaba nacos discovery 依赖 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.2.3.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
            <version>2021.1</version>
        </dependency>

yaml

spring:
  application:
    name: cloud-alibaba-sentinel
  cloud:
    nacos:
      discovery:
        enabled: true
        server-addr: 0.0.0.0:8848
        namespace: 9862bd7f-2dc2-47a4-9c80-c6290c5c3e2b
        metadata:
          management:
            context-path: ${server.servlet.context-path}/actuator
      config:
        enabled: false
#        namespace:
#        group:
    sentinel:
      transport:
        dashboard: localhost:8181
        port: 8182
#        clientIp: localhost

本地连接服务器的sentinel,能注册上但是没有实时监控也没有链路,换了版本也不行。

最后还是用的本地sentinel,如果有知道解决方法的可以评论。

流控案例

名词解释

  • 资源名 :唯一名称,默认请求路径。资源是 Sentinel 的关键概念。它可以是 Java 应用程序中的任何内容,例如,由应用程序提供的服务,或由应用程序调用的其它应用提供的服务,甚至可以是一段代码。

  • 针对来源 :就是调用者。Sentinel 可以针对调用者进行限流,这里填写微服务名,默认default就是不区分来源。

  • 阈值类型、 单机阈值:这里区分 QPS和 并发线程数。

    • QPS :Query Per Second,每秒请求的数量,当调用该请求API每秒请求的数量达到配置的 阈值 的时候,进行限流。
    • 并发线程数 : 当调用该请求API的线程数量达到配置的 阈值 的时候,进行限流。
  • 流控模式 :资源的调用关系,流控模式分为 直连 、关联、链路

    • 直连模式 :请求的API达到限流条件(配置的阈值)时,直接进行限流;
    • 关联模式 :当关联的资源达到配置的 阈值 时,就限流自己,比如 /test-a 需要读取数据 c , /test-b 则是更改数据 c ,他们之间有个 争抢资源 的关系,如果放任这两个操作 争抢资源,则 争抢 本身带来的开销会降低整体的 吞吐量 。此时对 /test-a 设置限流规则流控模式为关联,关联资源为 /test-b , 那么当 /test-b 写数据 c 的操作过于频繁时,则限制 /test-a 读取 c 的操作。
    • 链路模式 :Sentinel 记录着资源之间的调用链路,这些资源通过调用关系,相互之间构成一棵调用树。链路模式 就是只关心这颗树上 指定的一条链路 上是否达到阈值而进行限流,不关心其他调用路径上的调用。
  • 流控效果:控制的效果,有 快速失败 、冷启动(或称 预热 、Warm Up)、 排队等待。流控效果只在阈值类型为QPS时才有效,阈值类型为线程数的流控效果是如果超出阈值,新的请求会被立即拒绝。

    • 快速失败 :默认的流量控制方式,当QPS超过任意规则的阈值后,新的请求就会被立即拒绝,拒绝方式为抛出 FlowException 。
    • Warm Up :预热/冷启动方式。根据 codeFactor(冷加载因子,默认3)的值,请求 QPS 从 阈值/codeFacotor阈值/codeFacotor阈值/codeFacotor 开始,经 预热时长 逐渐升至设定的 QPS 阈值。
    • 排队等待 :这种方式会严格控制请求通过的间隔时间,也即是让请求以均匀的速度通过。

流控测试

熔断案例

来看一下熔断规则的这些字段:

  • 资源名 :唯一名称,默认请求路径。
  • 熔断策略 :包括 慢调用比例 , 异常比例 , 异常数 。
  • 最大RT :RT 就是响应时间,这里设置 最大响应时间 。熔断策略配置为 慢调用比例 时,必须设置该字段,用来确定哪些请求时慢调用。
  • 比例阈值 :配置 慢调用比例 时该值为慢调用占所有请求的比例上限;配置 异常比例 时为请求异常所占比例的上限。取值范围:0 ~ 1。
  • 异常数 :就是请求的异常数量。注意:Sentinel 中异常降级的统计是仅针对 业务异常 ,Sentinel 进行降级时本身的异常(BlockException)是不生效的。
  • 熔断时长 :熔断经过该值后恢复到 HALF-OPEN 状态。HALF-OPEN 状态:熔断后经过熔断时长后的第一个请求成功而没有错误则恢复正常结束熔断,否则继续熔断。
  • 最小请求数 :请求数目大于该值时才会根据配置的熔断策略进行降级。
  • 统计时长 :应该和上面几个字段联合起来理解:当 单位统计时长 内满足请求数目大于 最小请求数 时才会根据配置的熔断策略进行降级。

该配置将要达到的效果是: 1秒(1000ms)内达到10个请求以上,当响应时长超过0.5秒的请求数量大于1(10 * 0.1)个的时候进行熔断,熔断5秒后变成 Half Open 状态,即5秒后的第一个请求若没有问题则恢复正常,否则继续熔断。 这是一个 慢调用比例 的熔断策略。

配置持久化

在 Sentinel DashBoard 上配置的规则只存在缓存中,当项目重启,这些规则就消失了。如何持久化配置信息呢?

Sentinel 提供多种不同的数据源来持久化规则配置,包括 File ,Redis 、Nacos 、ZooKeeper 等。

pom

<!-- 引入 Sentinel 数据源 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-sentinel-datasource</artifactId>
</dependency>
<!-- Sentinel数据源之 Nacos -->
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
</dependency>

流量控制规则(FlowRule)

  • resource :资源名,资源名是限流规则的作用对象,比如请求资源 getUser 。
  • grade :限流阈值类型,QPS 或线程数模式。0表示线程数,1表示QPS。默认为1,即 QPS 模式
  • count :限流阈值。比如值为2表示1秒超过2个请求就限流。
  • strategy :流控模式:直接、链路、关联,默认 直接 。0表示直接,1表示关联,2表示链路。
  • controlBehavior :流控效果(直接拒绝 / 排队等待 / 慢启动模式),0表示快速失败,1表示Warm Up,2表示排队等待。
  • limitApp :流控针对的调用来源。默认就是 default ,代表不区分调用来源.

熔断降级规则 (DegradeRule)

  • resource :资源名,资源名是限流规则的作用对象,比如请求资源 getUser 。
  • grade :熔断策略,支持慢调用比例/异常比例/异常数策略。1:慢调用比例,2:异常比例,3:异常数。默认为1,慢调用比例。
  • count :慢调用比例模式下为慢调用临界 RT(超出该值计为慢调用);异常比例/异常数模式下为对应的阈值。
  • timeWindow :熔断时长,单位为秒。
  • minRequestAmount :熔断触发的最小请求数,请求数小于该值时即使异常比率超出阈值也不会熔断。默认为 5 。
  • statIntervalMs :统计时长(单位为 ms),如 60*1000 代表分钟级。默认为 1000 ms。
  • slowRatioThreshold :慢调用比例阈值,仅慢调用比例模式有效

示例

[
  {
    "resource": "/user/findById",
    "limitApp": "default",
    "grade": 1,
    "count": 2,
    "strategy": 0,
    "controlBehavior": 0,
    "clusterMode": false
  }
]

yaml

spring:
  application:
    name: cloud-commerce-user
#  zipkin:
#    #    sender:
#    #       type: kafka # 默认是 web
#    base-url: http://101.43.160.149:9411/
  cloud:
    nacos:
      discovery:
        enabled: true
        server-addr: 0.0.0.0:8848
        namespace: 123
        metadata:
          management:
            context-path: ${server.servlet.context-path}/actuator
    sentinel:
      transport:
        # 101.43.138.173
        dashboard: localhost:8181
        port: 8182
#        clientIp: localhost
      datasource:
        nacos: # 这个名字任意起
          nacos:
            serverAddr: 0.0.0.0:8848
            groupId: DEFAULT_GROUP
            dataId: cloud-sentinel-rule
            namespace: 123
            ruleType: flow
            data-type: json

发布配置之后重启项目,访问流控的资源,规则就会被拉取到 sentinel-dashbroad 。

在 nacos 更改配置,也会实时更新。

双向推送

大佬改造之后的 dashboard :github.com/CHENZHENNAM…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/42752.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

单商户商城系统功能拆解38—分销应用—分销订单

c 下面以likeshop单商户高级版 商城系统为例进行功能拆解&#xff0c;likeshop单商户高级版商城系统可以实现快速部署&#xff0c;文档齐全&#xff0c;代码全开源&#xff0c;无加密&#xff0c;极易二次开发&#xff0c;助力企业以极低的成本上线电商业务。并且likeshop以其…

Java项目模块占用CPU过高问题分析

背景&#xff1a;近期一个模块&#xff08;暂且称为A&#xff09;新上了一个需求&#xff0c;改动了些代码&#xff0c;在测试环境部署之后&#xff0c;该模块系统CPU使用率动不动就飙升到90%&#xff0c;甚至200%&#xff0c;严重影像其他业务执行。排查过程 1.使用top查看当…

【LeetCode】813. 最大平均值和的分组

题目描述 给定数组 nums 和一个整数 k 。我们将给定的数组 nums 分成 最多 k 个相邻的非空子数组 。 分数 由每个子数组内的平均值的总和构成。 注意我们必须使用 nums 数组中的每一个数进行分组&#xff0c;并且分数不一定需要是整数。 返回我们所能得到的最大 分数 是多少。答…

eclipse中创建的Maven Module和Maven Project及其间区别

eclipse中创建Maven Module和Maven Project及其间的区别Maven Module和Maven ProjectProject和Module的关系及用法Maven Module工程必须有父工程Maven Module和Maven Project Maven Project可以理解为父工程&#xff0c;是最上级的项目&#xff0c;一般没有其他parent项目。是一…

Word控件Spire.Doc 【图像形状】教程(6): 如何在 C#、VB.NET 的 Word 文档中插入形状和形状组

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

天河超算,安装Hypre

1)下载&#xff0c;解压 略 得到目录&#xff1a;hypre-master 源文件在src目录下面 src包含如下目录&#xff1a; 2&#xff09;cmake编译 版本比较新 HYPRE_RELEASE_NAME hypre HYPRE_RELEASE_VERSION 2.26.0 HYPRE_RELEASE_DATE 2022/10/14 HYPRE_RELEASE_TIM…

CT正投影算法归纳

一、CT重建基本原理 CT 系统成像基本模型可以描述成&#xff1a;   f为待重建图像&#xff0c;P为投影数据&#xff0c;W为系统矩阵&#xff0c;其中&#xff0c;投影矩阵反映探测器上的投影与重建物体的关系&#xff0c;其模型刻画对于重建速度和精度有着重要影响。 二、…

Java:多线程基础(一)-创建线程的两种方式

目录 线程与进程 Thread类 创建线程的两种方式 方式1&#xff1a;继承Thread类 方式2&#xff1a;实现Runnable接口 * 方式2延伸&#xff1a;实现Callable接口 Callable接口 Futuretask类 返回线程计算结果&#xff1a;get() Callable&#xff1a;创建子线程…

Redis实战之共享session + jwt 实现登录拦截、刷新token

共享session问题 每个tomcat中都有一份属于自己的session,假设用户第一次访问第一台tomcat&#xff0c;并且把自己的信息存放到第一台服务器的session中&#xff0c;但是第二次这个用户访问到了第二台tomcat&#xff0c;那么在第二台服务器上&#xff0c;肯定没有第一台服务器…

百度边止血边扩张

在经过一系列的“内部调整”之后&#xff0c;百度交出了一份超预期的财报。北京时间11月22日&#xff0c;百度发布了截至2022年9月30日的第三季度财务报告。第三季度&#xff0c;百度实现营收325.4亿元&#xff0c;同比增长2%&#xff1b;归属百度的净利润&#xff08;non-GAAP…

在线杂志小程序开发,开启在线阅读时代

互联网技术的快速发展&#xff0c;让人们越来越依赖从网络上查看各种新闻资讯。传统的纸质杂志已经很难顺应时代的发展脚步&#xff0c;但是人们对于杂志的需求并没有减少。因此为了更好的满足众多读者对于杂志的需求&#xff0c;开发在线杂志小程序是十分必要的。在线杂志阅读…

时光倒流-第12届蓝桥杯Scratch选拔赛真题精选

[导读]&#xff1a;超平老师计划推出Scratch蓝桥杯真题解析100讲&#xff0c;这是超平老师解读Scratch蓝桥真题系列的第88讲。 蓝桥杯选拔赛每一届都要举行4~5次&#xff0c;和省赛、国赛相比&#xff0c;题目要简单不少&#xff0c;再加上篇幅有限&#xff0c;因此我精挑细选…

医院预约小程序源码,挂号陪护就医功能,提供全方位服务

随着人口老龄化形式加剧&#xff0c;年轻人工作压力大&#xff0c;没有闲余时间陪伴父母老人&#xff0c;因此针对解决独自去医院排队以及现代化设备需要等要求&#xff0c;而衍生出来的一个新型行业-挂号陪护。医院预约小程序源码开发的出现无非就是解决了这一难题&#xff0c…

教培行业迎来重大变局,三大方向或成新机遇

“双减”政策落地&#xff0c;教培行业迎来重大变局。校内教育深化改革正在路上&#xff0c;而学科类机构或将踏上转型之路&#xff0c;结合政策和市场来看&#xff0c;素质教育类、职业教育类、教育数字化3大方向或成新机遇。 “双减”的总体思路是什么呢&#xff1f; 教育部有…

[附源码]计算机毕业设计SpringbootON-FIT

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

QGIS下载在线地图(Google 卫星、esri 卫星)

前言 国内外有很多在线地图下载软件&#xff0c;但功能单一&#xff0c;基本上只能下载数据&#xff0c;无法做GIS分析&#xff0c;且多为收费&#xff0c;即便是免费&#xff0c;也多少有所限制。 在QGIS中&#xff0c;可以完全免费且迅速下载在线地图&#xff0c;首先请看阅…

Kafka集群环境的部署

Kafka集群环境的搭建一、Kafka集群二、搭建两台服务器2.1、 zookeeper部署2.2、 启动1号机器的broker2.3、 启动2号机器的broker2.4、查看kafka集群2.5、测试集群总结后言一、Kafka集群 二、搭建两台服务器 笔者的两台服务器IP&#xff1a; 服务器IP1号192.168.11.592号192.1…

matplotlib你真的明白plt,fig和ax吗

你真的明白plt&#xff0c;fig和ax吗&#xff1f; plt系列接口是用来模仿MATLAB的风格的。如果用户熟悉MATLAB&#xff0c;还是建议以plt为主的。对于基本的画图&#xff0c;plt系列足够了。 个人觉得&#xff0c;真正不合适的用法&#xff0c;反而是各种混淆plt接口和其它更细…

单目相机模型

针孔相机模型 针孔相机模型是实际研究中最常用的模型。针孔是一个中间有一个小孔的假想墙壁&#xff0c;光只能从小孔通过。 fff是摄像机焦距&#xff0c;ZZZ是摄像机到物体的距离&#xff0c;XXX是物体长度&#xff0c;是图像平面上的物体长度。由相似三角形可得&#xff1a…