阿里微服务架构Spring Cloud Alibaba Sentinel实战

Sentinel是一款针对微服务架构的流量控制组件,提供流量控制、熔断降级、系统自适应保护等功能,确保微服务稳定性。对比Hystrix、resilience4j,Sentinel在限流、熔断、系统保护等方面更全面。支持多种规则配置和隔离策略,适用于SpringCloud、Dubbo等框架。

1、介绍

官网地址:https://sentinelguard.io/zh-cn/docs/introduction.html

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来帮助您保障微服务的稳定性。

2、与Hystrix、resilience4j对比

Hystrix具有以下功能:

  • 线程池隔离/信号量隔离 Sentinel 不支持线程池隔离;信号量隔离对应 Sentinel 中的线程数限流。
  • 熔断器 Sentinel 支持按平均响应时间、异常比率、异常数来进行熔断降级。
  • Command 创建 直接使用 Sentinel SphU API 定义资源即可,资源定义与规则配置分离。
  • 规则配置 在 Sentinel 中可通过 API 硬编码配置规则,也支持多种动态规则源
  • 注解支持 Sentinel 也提供注解支持
  • 开源框架支持 Sentinel 提供 Servlet、Dubbo、Spring Cloud、gRPC 的适配模块,开箱即用;若之前使用 Spring Cloud Netflix,可迁移至 Spring Cloud Alibaba

Hystrix官方已经停止更新

SentinelHystrixresilience4j
隔离策略信号量隔离(并发线程数限流)线程池隔离/信号量隔离信号量隔离
熔断降级策略基于响应时间、异常比率、异常数基于异常比率基于异常比率、响应时间
实时统计实现滑动窗口(LeapArray)滑动窗口(基于 RxJava)Ring Bit Buffer
动态规则配置支持多种数据源支持多种数据源有限支持
扩展性多个扩展点插件的形式接口的形式
基于注解的支持支持支持支持
限流基于 QPS,支持基于调用关系的限流有限的支持Rate Limiter
流量整形支持预热模式、匀速器模式、预热排队模式(流量规则处可配置)不支持简单的 Rate Limiter 模式
系统自适应保护支持不支持不支持
控制台提供开箱即用的控制台,可配置规则、查看秒级监控、机器发现等简单的监控查看不提供控制台,可对接其它监控系统
3、安装教程

下载地址:https://github.com/alibaba/Sentinel/releases
直接下载sentinel-dashboard-1.7.1.jar

java -jar sentinel-dashboard-1.7.1.jar

sentinel默认使用8080端口。访问地址:http://127.0.0.1:8080
用户名/密码:sentinel/sentinel

docker安装

docker pull bladex/sentinel-dashboard
docker run --name sentinel -d -p 8858:8858 -d bladex/sentinel-dashboard

访问地址:http://127.0.0.1:8858
用户名/密码:sentinel/sentinel

4、流控规则

以下列举常用的流控规则配置

QPS-直接-快速失败

在这里插入图片描述
QPS-关联-快速失败

在这里插入图片描述
QPS-直接-排队等待

在这里插入图片描述
QPS-直接-Warm Up

在这里插入图片描述

5、降级规则

降级策略,我们通常用以下几种方式来衡量资源是否处于稳定的状态:

  • 平均响应时间 (DEGRADE_GRADE_RT):当资源的平均响应时间超过阈值(DegradeRule 中的 count,以 ms 为单位)之后,资源进入准降级状态。接下来如果持续进入 5 个请求,它们的 RT 都持续超过这个阈值,那么在接下的时间窗口(DegradeRule 中的 timeWindow,以 s 为单位)之内,对这个方法的调用都会自动地返回(抛出 DegradeException)。注意 Sentinel 默认统计的 RT 上限是 4900 ms,超出此阈值的都会算作 4900 ms,若需要变更此上限可以通过启动配置项 -Dcsp.sentinel.statistic.max.rt=xxx 来配置。
  • 异常比例 (DEGRADE_GRADE_EXCEPTION_RATIO):当资源的每秒异常总数占通过量的比值超过阈值(DegradeRule 中的 count)之后,资源进入降级状态,即在接下的时间窗口(DegradeRule 中的 timeWindow,以 s 为单位)之内,对这个方法的调用都会自动地返回。异常比率的阈值范围是 [0.0, 1.0],代表 0% - 100%。
  • 异常数 (DEGRADE_GRADE_EXCEPTION_COUNT):当资源近 1 分钟的异常数目超过阈值之后会进行熔断。

【RT】
在这里插入图片描述
【异常比例】

在这里插入图片描述
【异常数】

在这里插入图片描述

6、热点规则

可查询官网说明:https://sentinelguard.io/zh-cn/docs/parameter-flow-control.html
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值