专栏目录
- 1-Spring Cloud Alibaba实战-系统架构演变与微服务常见问题
- 2-Spring Cloud Alibaba实战-简介与组件说明
- 3-Spring Cloud Alibaba实战-全组件项目搭建手册
- 4-Spring Cloud Alibaba实战-服务治理
- 5-Spring Cloud Alibaba实战-Nacos Config–配置中心
- 6-Spring Cloud Alibaba实战-Gateway网关核心架构
- 7-Spring Cloud Alibaba实战-Gateway网关核心原理
- 8-Spring Cloud Alibaba实战-分布式服务治理机制
- 9-Spring Cloud Alibaba实战-Sentinel原理
- 10-Spring Cloud Alibaba实战-Sleuth–链路追踪
- 11-Spring Cloud Alibaba实战-Nacos核心原理
Sentinel的概念和功能
基本概念
资源
资源就是Sentinel要保护的东西
资源是 Sentinel 的关键概念。它可以是 Java 应用程序中的任何内容,可以是一个服务,也可以是一个方法,甚至可以是一段代码。
我们入门案例中的select方法就可以认为是一个资源
规则
规则就是用来定义如何进行保护资源的
作用在资源之上, 定义以什么样的方式保护资源,主要包括流量控制规则、熔断降级规则以及系统保护规则。
我们入门案例中就是为message1资源设置了一种流控规则, 限制了进入message1的流量
重要功能
Sentinel的主要功能就是容错,主要体现为下面这三个:
流量控制
流量控制在网络传输中是一个常用的概念,它用于调整网络包的数据。任意时间到来的请求往往是随机 不可控的,而系统的处理能力是有限的。我们需要根据系统的处理能力对流量进行控制。Sentinel 作为一个调配器,可以根据需要把随机的请求调整成合适的形状。
熔断降级
当检测到调用链路中某个资源出现不稳定的表现,例如请求响应时间长或异常比例升高的时候,则对这 个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联故障
Sentinel 对这个问题采取了两种手段:
通过并发线程数进行限制
Sentinel 通过限制资源并发线程的数量,来减少不稳定资源对其它资源的影响。当某个资源出现不稳定的情况下,例如响应时间变长,对资源的直接影响就是会造成线程数的逐步堆积。当线程数在特定资源 上堆积到一定的数量之后,对该资源的新请求就会被拒绝。堆积的线程完成任务后才开始继续接收请 求。
通过响应时间对资源进行降级
除了对并发线程数进行控制以外,Sentinel 还可以通过响应时间来快速降级不稳定的资源。当依赖的资源出现响应时间过长后,所有对该资源的访问都会被直接拒绝,直到过了指定的时间窗口之后才重新恢 复。
Sentine规则
4.1.1 流控规则
流量控制,其原理是监控应用流量的QPS(每秒查询率) 或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。
图片
第1步: 点击簇点链路,我们就可以看到访问过的接口地址,然后点击对应的流控按钮,进入流控规则配置页面。
资源名:唯一名称,默认是请求路径,可自定义
针对来源:指定对哪个微服务进行限流,默认指default,意思是不区分来源,全部限制
阈值类型单机阈值
- QPS(每秒请求数量): 当调用该接口的QPS达到阈值的时候,进行限流
- 线程数:当调用该接口的线程数达到阈值的时候,进行限流
降级规则
降级规则就是设置当满足什么条件的时候,对服务进行降级。Sentinel提供了三个衡量条件:
平均响应时间 :当资源的平均响应时间超过阈值(以 ms 为单位)之后,资源进入准降级状态。如果接下来 1s 内持续进入 5 个请求,它们的 RT都持续超过这个阈值,那么在接下的时间窗口
(以 s 为单位)之内,就会对这个方法进行服务降级。
异常比例:当资源的每秒异常总数占通过量的比值超过阈值之后,资源进入降级状态,即在接下的 时间窗口(以 s 为单位)之内,对这个方法的调用都会自动地返回。异常比率的阈值范围是[0.0,1.0]
异常数 :当资源近 1 分钟的异常数目超过阈值之后会进行服务降级。注意由于统计时间窗口是分钟级别的,若时间窗口小于 60s,则结束熔断状态后仍可能再进入熔断状态
熔断
- 被触发熔断的服务一段时间内停止服务
降级
- 被触发降级的服务 返回部分能提供服务的数据
不同点:先触发降级,再触发熔断
相同点:他们都是服务治理的过程