荐 阿里微服务架构Spring Cloud Alibaba Sentinel实战
程序员文章站
2022-03-10 23:09:44
Spring Cloud Alibaba Sentinel1、介绍2、与Hystrix、resilience4j对比3、流控规则4、降级规则5、热点规则1、介绍官网地址:https://sentinelguard.io/zh-cn/docs/introduction.html随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来帮助您保障微服务的稳定性。2、与Hystrix...
1、介绍
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。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官方已经停止更新
Sentinel | Hystrix | resilience4j | |
---|---|---|---|
隔离策略 | 信号量隔离(并发线程数限流) | 线程池隔离/信号量隔离 | 信号量隔离 |
熔断降级策略 | 基于响应时间、异常比率、异常数 | 基于异常比率 | 基于异常比率、响应时间 |
实时统计实现 | 滑动窗口(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
本文地址:https://blog.csdn.net/li521wang/article/details/107337519
下一篇: python json序列化和反序列化