• Sentinel基础知识


    什么是Sentinel

    alibaba的熔断器组件,用于服务熔断降级

    微服务时代,各个微服务之间相互调用,如果有单个服务出现问题,整个服务可能会出现雪崩

    sentinel中的基本概念

    1、资源

    资源是 Sentinel 的关键概念。它可以是 Java 应用程序中的任何内容,例如,由应用程序提供的服务,或由应用程序调用的其它应用提供的服务,甚至可以是一段代码。

    只要通过 Sentinel API 定义的代码,就是资源,能够被 Sentinel 保护起来。大部分情况下,可以使用方法签名,URL,甚至服务名称作为资源名来标示资源。

    2、规则

    围绕资源的实时状态设定的规则,可以包括流量控制规则、熔断降级规则以及系统保护规则。所有规则可以动态实时调整。

    从sentinel的面板看 有这些规则可以设置

    在这里插入图片描述
    比较常用的就是流控和熔断

    什么是流量控制?

    流量控制在网络传输中是一个常用的概念,它用于调整网络包的发送数据。然而,从系统稳定性角度考虑,在处理请求的速度上,也有非常多的讲究。任意时间到来的请求往往是随机不可控的,而系统的处理能力是有限的。我们需要根据系统的处理能力对流量进行控制

    流量控制有以下几个角度:
    资源的调用关系,例如资源的调用链路,资源和资源之间的关系;
    运行指标,例如 QPS、线程池、系统负载等;
    控制的效果,例如直接限流、冷启动、排队等。
    Sentinel 的设计理念是让您自由选择控制的角度,并进行灵活组合,从而达到想要的效果。

    什么是熔断降级

    当调用链路中某个资源出现不稳定,例如,表现为 timeout,异常比例升高的时候,则对这个资源的调用进行限制,并让请求快速失败,避免影响到其它的资源,最终产生雪崩的效果。

    Sentinel各种规则的使用

    1、流控规则

    监控应用流量的QPS(每秒查询率)或并发线程数等指标,当达到指定的阈值对流量进行控制,避免被瞬时的高流量冲垮,保证应用的高可用性
    在这里插入图片描述
    资源名:默认是请求路径
    针对来源:对哪个微服务进行限流,默认default即不区分来源
    QPS:调用该接口的QPS达到阈值的时候进行限流
    线程数:当调用该接口的线程数达到阈值的时候进行限流

    流控模式:
    在这里插入图片描述

    sentinel有三种流控模式:
    1、直接:接口达到限流条件时,开启限流

    2、关联:当关联的资源达到限流条件时,开启限流(适合做应用让步)
    例1:两个资源之间具有资源争抢或者依赖关系,这两个资源便具有了关联。比如对数据库同一个字段的读操作和写操作存在争抢,读的速度过高会影响写的速度,写的速度过高会影响读的速度。如果放任读写操作争抢资源,则争抢本身带来的开销会降低整体的吞吐量。

    例2:下订单和支付接口,支付接口故障,需要在下订单时就限流失败

    3、链路:当从某个接口过来的资源达到限流条件时,开启限流
    例:/trace2接口中调用了资源tranceService 设置如下 则调用/trace2时会有流控效果
    在这里插入图片描述
    流控效果:
    1、快速失败:直接失败,抛出异常
    2、warm up:从开始阈值到最大QPS阈值有一个缓冲阶段,一开始的阈值时最大QPS阈值的1/3,然后慢慢增长,知道最大阈值
    3、排队等待:让请求以均匀的速度通过

    2、降级

    降级规则即满足条件时对服务进行降级,sentinel提供三个衡量条件

    慢调用比例
    选择以慢调用比例作为阈值,需要设置允许的慢调用RT(即最大的响应时间),请求的响应时间大于该值统计为慢调用。当单位统计时长内请求数目大于设置的最小请求数目,并且慢调用的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN状态),若接下来的一个请求响应时间小于设置的慢调用RT则结束熔断,若大于设置的慢调用RT则会被再次熔断

    案例:

    在这里插入图片描述
    上面配置的熔断规则的意思是:如果在【1000】ms内,请求数超过【1】,响应时间超过【900】ms的请求比例大于【0.1】,则熔断10s,接下来的10s内都不会调用真实方法,走降级方法

    异常比例
    当单位统计时长内请求数目大于设置的最小请求数目,并且异常的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态,若接下来的一个请求成功完成则结束熔断,否则会再次被熔断。
    异常比例的阈值范围是[0.0,1.0],代表0% - 100%

    异常数
    当单位统计时长内的异常数目超过阈值后自动进行熔断。经过熔断时长后熔断器会进入探测恢复状态。若接下来的一个请求成功完成,则结束熔断,否则会再次被熔断。

    3、热点

    热点是经常访问的数据,很多时候希望统计某个热点数据中访问频次最高的top k数据,并对其访问进行限制

  • 相关阅读:
    【运筹优化】基于堆优化的天际线启发式算法和复杂的评分策略求解二维矩形装箱问题 + Java代码实现
    理解ceres
    运行时应用自我保护(RASP):应用安全的自我修养
    2023年入职/转行网络安全,该如何规划?
    HTML5 SVG
    mulesoft What‘s the typeOf(payload) of Database Select
    P1830 轰炸III
    请回答数据结构【图】
    如何让 WinDebug Preview 加载 Dotnet Core 的 SOS.dll 进行调试
    攻防演练蓝队|Windows应急响应入侵排查
  • 原文地址:https://blog.csdn.net/qq_37831759/article/details/139040657