- 前言
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
sentinel dashboard可以通过页面图形化的方式监控机器以及服务的运行情况和配置复杂的各种流控、降级等规则,以保证线上服务的稳定运行,本篇文章主要是介绍控制台参数意义和使用规则,达到快速使用的目的
- 对于sentinel而言,应用服务以及服务接口,服务器资源等都看做是资源,而sentinel所做的事情就是包含这些资源
- 开局一张图,内容往下排
先介绍第①部分:
- 实时监控:图形化界面显示接口(资源)的访问情况,主要是图表形式,图是线图,表内容有通过(拒绝QPS)响应时间等
- 簇点链路:也就是上图信息,显示详细的资源以及调用链路信息,可以对相应的资源进行一系列的流控、熔断降级等操作,接下来会对这些信息进行说明和配置使用
- 流控规则、熔断规则、热点规则、授权规则:和簇点链路里面资源的区别是需要手动添加资源名
- 系统规则:对服务器资源的控制
- 机器规则:对sentinel客户端集群配置的规则
- 机器列表:机器的名称、IP地址、通信端口号、客户端版本号、健康状态、心跳时间等
接下来介绍第②部分:
- 流控规则
- 资源名:可以简单的理解为接口名称,实际上可以是任何一段被保护起来的代码段,把这段被保护的代码起的一个资源名称
- 针对来源:默认值:default,对所有来源进行流控,也可以指定某个微服务进行流控。需要在对应微服务配置文件进行配置名称,然后填写在这里(和微服务名称没有关联)
- 阈值类型:QPS和并发线程数,对应的源码中FlowRule规则,单机阈值填写数值。当超过该值时,触发流控规则
- 流控模式:
- 直接:只对当前资源名进行流控
- 关联:对当前资源所关联的资源超过阈值的时候,会对当前资源进行流控
- 链路:对入口资源设置的值进行流控
- 流控效果:
- 快速失败:直接响应失败,如浏览器访问接口时页面直接写出:Blocked by Sentinel (flow limiting)
- Warm Up:预热模式,大量线程访问的时候,举个例子,该模式下单机阈值配置为20的时候,会从3(默认)经过一端时间上升到10
- 这个时间端由预热时长进行配置(单位秒)(Warm Up选中就会在页面出现)
- 排队等待:请求或者线程排队进行访问,默认是1秒内 单机阈值设置为10的时候,相当于100ms内有一个请求通过(当前场景不支持QPS大于1000的场景 )
- 超时时间:单位毫秒,排队超时的请求会被拒绝,所以为了避免请求被拒绝,该值需要适当的配置大一点
- 熔断规则:
- 资源名:受保护的资源的名称
- 熔断策略:
- 慢调用比例
- 最大RT:设置最大响应时间。超过就算慢调用
- 比例阈值:当时间窗口内统计的慢调用占总调用的比例超过该设置的值得时候,触发熔断机制
- 异常比例
- 比例阈值:当时间窗口内统计的异常次数占总调用的比例超过该设置的值得时候,触发熔断机制
- 异常数
- 异常数:当时间窗口内统计的异常次数超过该设置的值得时候,触发熔断机制
- 最小请求数:所以以上规则都需要满足这个条件的才可以,默认是5
- 熔断时长:触发熔断时持续时长,(超过这个时间之后,处于半开状态。后续访问不触发熔断时,可以自己修复)
- 统计时长:设置一个时间窗口用于统计
- 热点规则:
- 热点规则需要搭配@SentinelResource注解使用
- 资源名:是使用@SentinelResource注解定义的名称
- 参数索引:调用被保护的资源时传入的参数的索引位置,指定索引位置来指定热点参数;举个例子:当只有一个参数时,参数索引应该配置为0
- 参数类型:参数对应的基本数据类型
- 参数值:根据该设置值,作为热点参数值进行保护 (如商品的唯一标识作为参数时)
- 限流阈值:当QPS模式下,超过该设置的值得时候,会触发资源保护
- 单机阈值:这个是当前接口资源(其他参数值时)超过了单机阈值,也会触发保护机制
- 系统规则:
- 阈值类型
- LOAD:在Linux类型的服务器才能生效,使用的是服务器上的load1指标进行自适应触发系统保护
- RT:入口处所有的接口响应时长的平均RT超过设置的阈值时,触发系统规则,阈值单位默认是ms
- 线程数:单机上总的入口处的线程数超过阈值的时候,会触发系统规则保护
- 入口QPS:单机上总的入口处QPS总数,当超过设定的阈值的时候,触发系统规则进行保护
- CPU使用率:机器上的CPU使用率超过阈值时,就会触发系统规则,阈值设置范围是[0-1]
- 阈值
- 对应类型设置的数值,超过该值时,是会触发系统规则的
- 授权规则:
- 资源名:受保护的资源名称
- 流控应用:调用方的名称
- 需要在业务代码中使用filter或者interceptor中拦截判断 可以实现RequestOriginParser接口进行判断
- 访问链接带上k=v v即是流控应用中配置的值
- 授权类型:
- 白名单:可以调用指定的资源名对应的资源
- 黑名单:不可以调用指定的资源名对应的资源