Sentinel 概念和功能|学习笔记

简介: 快速学习 Sentinel 概念和功能

开发者学堂课程【全面讲解 Spring Cloud Alibaba 技术栈(知识精讲+项目实战)第二阶段Sentinel 概念和功能】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/684/detail/11872


Sentinel 概念和功能

 

内容介绍:

一、基本概念

二、重要功能

 

一、基本概念

1.资源

资源就是 Sentinel 要保护的东西。

资源是 Sentinel 的关键概念。它可以是Java应用程序中的任何内容,可以是一个服务,也可以是一个方法甚至可以是一段代码。我们入门案例中的 message1 方法就可以认为是个资源。

2.规则

规则就是用来定义如何进行保护资源的。

作用在资源之上,定义以什么样的方式保护资源,主要包括流最控制规测、熔断降级规对以及系统保护规则。

我们入门案例中就是为 message1 资源设置了一种流控规则,限制了进入 message1 的流量。

 

二、重要功能

image.png

如上图所示,图片上的 CPU 资源和内存资源都可以看作是服务器的外界环境。

以中间的为核心作为研究象,其余两个称为上游和下游服务。上游服务调用核心服务,核心服务调用下游服务,等待下游服务返回响,经过处理,再把响应丢回去,这就是调用关系的过程。

容错的三个核心思想(也是 Sentinel 的三个重要功能):

1.保证自己不被上游服务压垮。

比如作为核心服务来讲,每一次可以接收三个请求。但是从上游服务过来五个请求,就会导致核心服务被压垮掉。

那么此时的核心措施就是限流。比如规定每次只能接收三个请求,多余的两个,要么排队等待要么直接丢弃,不要进入核心服务即可。

2.保证自己不被下游服务拖垮。

核心服务要调用下游服务,下游服务如果经常不给核心服务响应或者给异常响应。那么下游服务可能此时已经出问题,这时可以采用设置超时时间或者熔断降级,不适用这个下游服务或者使用备用的下游服务。

3.保证外界环境良好。

外界环境受到影响,比如cpu负载过高、内存不够,所以必须要保证外界环境充足。

Sentinel 的主要功能体现为下面这三个:

1.流量控制

流量控制在网络传输中是一个常用的概念,它用于调整网络包的数据,任意时间到来的请求往往是随机不可控的,而系统的处理能力是有限的。我们需要根据系统的处理能力对流量进行控制。Sentinel作为一个调配器,可以根据需要把随机的请求调整成合适的形状。

2.熔断降级

当检测到调用链路中某个资源出现不稳定的表现,例如请求响应时间长或异常比例升高的时候,则对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级取故障

Sentinel 对这个问题采取了两种手段:

(1)通过并发线程数进行限制

Sentinel 通过限制资源并发线程的数量,来减少不稳定资源对其它资源的影响。当某个资源出现不稳定的情况下,例如响应时间变长,对资源的直接影响就是会造成线程数的逐步堆积。

当线程数在特定资源上堆积到一定的数量之后,对该资源的新请求就会被拒绝。堆积的线程完成任务后才开始继续接收请求。

(2)通过响应时间对资源进行降级

除了对并发线程数进行控制以外,Sentinel还可以通过响应时间来快速降级不稳定的资源。当依赖的资源出现响应时间过长后,所有对该资源的访问都会被直接拒绝,直到过了指定的时间窗口之后才重新恢复。

Sentinel 和 Hystrix 的区别

两者的原则是一致的,都是当一个资源出现问题时,让其快速失败,不要波及到其它服务。但是在限制的手段上, 却采取了完全不一样的方法:

Hystrx 采用的是线程池隔离的方式,优点是做到了资源之间的隔离,缺点是增加了线程切换的成本。

Sentinel 采用的是通过并发线程的数量和响应时间来对资源做限制。

3.系统负载保护

Sentinel 同时提供系统维度的自适应保护能力。当系统负载较高的时候,如里还持续让请求进入可能会导致系统扇溃,无法响应。

在集群环境下,会把本应这台机器承载的流量转发到其它的机器上去。如果这个时候其它的机器也处在一个边像状态的时候,Sentinel 提供了对应的保护机制,让系统的入口流量和系统的负载达到一个平衡,保让系统在能力范围之内处理最多的请求。

总之,我们需要做的事情,就是在 Sentinel 的资源上配置各种各样的规则,来实现各种容错的功能。

相关文章
|
6月前
|
Java Nacos Sentinel
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
829 0
|
6月前
|
SpringCloudAlibaba 监控 Java
SpringCloud Alibaba Sentinel实现熔断与限流--学习笔记
SpringCloud Alibaba Sentinel实现熔断与限流--学习笔记
109 0
神器!Alibaba Sentinel,功能真心强大
文末送书《实战Alibaba Sentinel:深度解析微服务高并发流量治理》,无套路!有兴趣的同学记得在文末参与
|
JSON 算法 Java
Spring Cloud & Alibaba 实战 | 第十二篇: 微服务整合Sentinel的流控、熔断降级,赋能拥有降级功能的Feign新技能熔断,实现熔断降级双剑合璧(二))(JMeter模拟测试)
Spring Cloud & Alibaba 实战 | 第十二篇: 微服务整合Sentinel的流控、熔断降级,赋能拥有降级功能的Feign新技能熔断,实现熔断降级双剑合璧(JMeter模拟测试)(二)
|
监控 Java 应用服务中间件
Spring Cloud & Alibaba 实战 | 第十二篇: 微服务整合Sentinel的流控、熔断降级,赋能拥有降级功能的Feign新技能熔断,实现熔断降级双剑合璧(一))(JMeter模拟测试)
Spring Cloud & Alibaba 实战 | 第十二篇: 微服务整合Sentinel的流控、熔断降级,赋能拥有降级功能的Feign新技能熔断,实现熔断降级双剑合璧(JMeter模拟测试)(一)
|
SpringCloudAlibaba 负载均衡 Java
SpringCloud Alibaba学习(十):Sentinel的服务熔断功能(Sentinel整合Ribbon+OpenFeign+fallback)
SpringCloud Alibaba学习(十):Sentinel的服务熔断功能(Sentinel整合Ribbon+OpenFeign+fallback)
326 0
SpringCloud Alibaba学习(十):Sentinel的服务熔断功能(Sentinel整合Ribbon+OpenFeign+fallback)
|
监控 安全 Java
网关、Nacos 和 Sentinel|学习笔记(一)
快速学习网关、Nacos 和 Sentinel
网关、Nacos 和 Sentinel|学习笔记(一)
|
消息中间件 缓存 监控
网关、Nacos 和 Sentinel|学习笔记(三)
快速学习网关、Nacos 和 Sentinel
网关、Nacos 和 Sentinel|学习笔记(三)
|
Kubernetes 负载均衡 Cloud Native
Sentinel 2.0 :流量治理全面升级 | 学习笔记
快速学习 Sentinel 2.0 :流量治理全面升级
Sentinel 2.0 :流量治理全面升级 | 学习笔记
|
监控 Dubbo Java
Sentinel 使用入门|学习笔记
快速学习 Sentinel 使用入门
Sentinel 使用入门|学习笔记
下一篇
无影云桌面