Sentinel 介绍| 学习笔记

简介: 本次课程主要分为三大部分,在这一部分中,将会介绍 Sentinel 诞生的背景、增长的核心特性。Sentinel 的完善的开源生态,以及流控降级组件对比。在第二部分中,会演示 Sentinel 的一些非常基本的使用场景,包括与 Spring cloud 的外边应用结合,Spring cloud 网关结合以及与 Dubbo 服务进行结合的演示。在第三部分中,介绍一下阿里云应用高可用服务 AHAS 的使用,以及如何快速的接入阿里云 AHAS 真正的流控降级。

开发者学堂课程【微服务实战-服务熔断 - Sentinel Sentinel 介绍】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/618/detail/9423


流控降级 Spring Cloud Alibaba Sentinel

 

课程目标:

一、了解开源流控降级组件 Sentinel 的特性

二、了解 Sentinel 作为流控降级组件的优势(对比 Hystrix 等)

三、在 Dubbo / Spring Cloud 应用/Spring Cloud Gateway 网关中结合 Sentinel 进行流控降级

四、了解阿里应用高可用服务(AHAS)的特性,并能够在阿里云上快速接入 AHAS Sentinel 流控降级


一、 Sentinel 介绍

1.背景

在微服务中稳定性一直是一个避不开的一个重要的话题。在很多时候会遇到有非常多的流量突然打到系统上,导致系统扛不住,这是几个非常典型的场景。

精心准备的大促流量扛不住?

瞬间洪峰超出最大负载?

激增流量打垮冷系统?

热点商品挤占正常流量?

CPU Load 居高不下?

流量是非常实时性的,不可预测,那么在大四场景中非常有可能有大规模的流量突然到达,这时候如果不对这样的流量进行有效的防护的话,就会打垮服务,导致不可用。

服务不可靠自己被拖死?

RPC 超时?

异常比例升高?

队列占满?

线程池占满?

为服务稳定性的场景需要进行一些绿化的措施,来保障微服务的稳定性这就是Sentinel 的核心作用。

均匀平滑的用户访问?

可靠稳定的下游服务?

2. 面向分布式服务架构的轻量级流量控制组件

限流:Sentinel 是阿里巴巴开源的、面向分布式服务架构的清淡及流量控制组件。它的结构和新特性的第一个就是限流,也就是把服务的 PPS 每秒钟的请求量,现在某个阈值来保护服务不被突然的流量所打垮。

流量整形:流量是随机的不均匀的不可预测的。很多时候,需要把一些突然的流量调整成一个合适的形状,比如说希望这一时刻的流量是匀速通过的,或者希望流量是缓慢增加,而不是突然而来,一下子达到异值,这时候可能就会需要进行流量整形。

熔断降级:如在电极可以保证对方自己不被远程的不稳定服务所拖垮,可以及时的去熔断这一些不稳定的服务,避免吉林失败导致的雪崩。

系统自适应保护:提供整体维度的系统自身宝库,结合系统的 cpu 使用率、load、总QPS 等实时指标,来保护整个系统的流量不被打垮,同时又最大限度地利用了系统的吞吐量。

GitHub 地址: https://github.com/alibaba/Sentinel

Sentinel 介绍

在微服务中服务的调用一般会分为 consumer 和 provider 2个角色。

image.png

provider

1. 限流保护:过快调用直接拒绝

在 provide 端,需要provider 进行限流保护来保证 provider 不被过快的调用或者激增的流量所打垮。

可以配置 QPS 模式的限流让多余的流量直接拒绝。

2. 授权保护:不受信任的应用直接拒绝

同时,也可以对 provider 进行授权保护。比如有一些不受信任的应用、电影来源或者不受信任的用户可以针对这一些不受信任的应用来源或者用户配置授权规则。这样就可以拦截掉这一些不受信任的请求。

3. 系统保护:load 超出阈值停止服务

同时,可以在 provider 端配置系统保护规则。当 provider 的 cpu 使用率或者 load超出阈值的时候即停止服务来保护整个系统不被打垮。

4. 热点保护︰增强版的限流保护

Provide 端也可以进行热点保护及针对某一些调用的参数来进行限流,并且自动识别其中的热点来进行防护。可以达到比普通限流效果更好的一个效果。

Consumer

降级保护:不可靠的调用快速失败

在 consumer 需要防止 consumer 被不稳定的服务调用所拖垮。所以可以在consumer 端去配置熔断降级规则当服务的调用超出了某一段时间的阈值,或者是某一个异常请求量的时候自动熔断这个不稳定的服务的调用来防止自己被拖垮。这也就是 Sentinel 流量控制和熔断降级比较核心的一个应用场景。


二、多样化的流量控制场景

从衡量标准、调用关系以及邂逅的控制效果等多个维度提供多样化的流量控制。

Sentinel 可以针对 QPS 并发线程数异常比率或者RT来作为衡量的指标进行限流降级。同时 Sentinel 支持基于调用关系的限流。

Sentinel 支持某个关联资源的限流,或者是针对某一个特定的电影来源。同时,在限流的控制手段上,Sentinel 除了支持使请求快速失败之外,还支持自动的降级请求的预热以及匀速排队的功能。

同时 Sentinel 也支持热点参数级别的限流。并且真正的从1.4.0版本开始提供了极全维度的限流,可以限制某个服务在集群内的调用总量

集群限流在某些小流量或者流量不均的场景下非常好用,同时真正的提供了基于 TCP BBR 算法的系统自适应保护能力,可以根据系统的实时水位,兼顾系统处理请求的能力和当前的稳定性来保证系统的吞吐量最大化的同时,又让整个系统保持一个相对稳定的状态。这些就是 sentinel 多样化的流量控制场景。

image.png

 

三、开源生态

微服务框架的场景

sentinel 针对常用的微服务框架进行了相应的适配。比如spring cloud double GRPC Rocket and cute以及一些最新的 re active 的场景,包括 reactor Spring one flex 等都进行了相应的适配。

用户只需要引入相应的适配依赖,并进行简单的配置,即可快速将自己的微服务应用接入增长,享受 sentinel 的流控降级服务,非常方便。同时,也支持非常多的API gateway比如 Java 里面的和 three cloud Gateway

同样,用户只需要将自己的 API gateway 中引入 sentinel 的相关的设备,依赖即可快速的将自己的 API gateway 纳入生产的防护之中。可以针对 HDL 最终的路由以及自定义的 API 进行流控,来从入口处保障服务的稳定性。同时,也支持 envoy Istio等等的生态未来将会在 service mesh 中发挥全局流量控制的能力。

在电脑中会配置限流降级规则。而规则的存储,会有非常多的动态规则圆的知识。比如Ad Michaels。Zookeeper credits 以及阿波罗等等。可以利用这一些配置中心组件去存储 sentinel 的相关配置非常的方便。

 

四、流控降级组件对比

SentinelHystrixresilience4j

隔离策略

Sentinel:信号量隔离(并发线程数限流)

Hystrix:线程池隔离/信号量隔离

resilience4j:信号量隔离

熔断降级策略

Sentinel:基于响应时间、异常比率、异常数

Hystrix:基于异常比率

resilience4j:基于异常比率、响应时间

实时统计实现

Sentinel:滑动窗口(LeapArray)

Hystrix:滑动窗口(基于 RxJava)

resilience4jRing Bit Buffer

动态规则配置

Sentinel:支持多种数据源

Hystrix:支持多种数据源

resilience4j:有限支持

扩展性

Sentinel:多个扩展点

Hystrix:插件的形式

resilience4j:接口的形式

基于注解的支持

Sentinel:支持

Hystrix:支持

resilience4j:支持

限流

Sentinel:基于 QPS,支持基于调用关系的限流

Hystrix:有限的支持

resilience4jRate Limiter

流量整形

Sentinel:支持预热模式、匀速器模式、预热排队模式

Hystrix:不支持

resilience4j:简单的 Rate Limiter 模

系统自适应保护

Sentinel:支持

Hystrix:不支持

resilience4j:不支持

控制台

Sentinel:提供开箱即用的控制台,可配置规则、查看秒级监控、机器发现等

Hystrix:简单的监控查看

resilience4j:不提供控制台,可对接其它监控系统

相关文章
|
6月前
|
Java Nacos Sentinel
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
781 0
|
6月前
|
SpringCloudAlibaba 监控 Java
SpringCloud Alibaba Sentinel实现熔断与限流--学习笔记
SpringCloud Alibaba Sentinel实现熔断与限流--学习笔记
107 0
|
Java 开发者 Sentinel
Sentinel 手动实现限流规则 | 学习笔记
快速学习 Sentinel 手动实现限流规则
239 0
|
监控 安全 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 使用入门|学习笔记
|
Java API 开发者
Sentinel 规则持久化|学习笔记
快速学习 Sentinel 规则持久化
Sentinel 规则持久化|学习笔记
|
Java 开发者 Sentinel
Sentinel 概念和功能|学习笔记
快速学习 Sentinel 概念和功能
Sentinel 概念和功能|学习笔记
|
Java 开发者 Sentinel
@Sentinel Resource注解讲解|学习笔记
快速学习@Sentinel Resource注解讲解
@Sentinel Resource注解讲解|学习笔记
下一篇
无影云桌面