Sentinel

1、熔断降级限流

熔断

A服务调用B服务的某个功能,由于网络不稳定、B服务卡机等问题,导致功能时间超长。如果这样子的次数太多,我们就可以直接将B断路(A不再请求B接口),凡是调用B服务的直接返回降级数据,不必等待B的超长执行。这样B的故障问题就不会级联影响到A。

降级

整个网站处于流量高峰期,服务器压力剧增,根据当前业务情况及流量,对一些服务和页面进行有策略的降级(停止服务,所有的调用直接返回降级数据)。以此缓解服务器资源的压力,以保证核心业务的正常运行,同时也保持了客户和大部分客户得到正确的响应。

相同点:

1、为了保证集群大部分服务的可用性和可靠性,防止崩溃,牺牲小我

2、用户最终都是体验到某个功能不可用

不同点:

1、熔断是被调用方故障,触发的系统主动规则

2、降级是基于全局考虑,停止一些正常的服务,释放资源

限流

对进入服务的请求流量进行控制,使服务能够承担不超过自己的流量压力。

2、Sentinel简介

官方文档:https://github.com/ailbaba/Sentinel/wiki

项目地址:https://github.com/alibaba/Sentinel

随着微服务的流行,服务与服务之间的稳定性变得越来越来重要。Sentinel以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

2.1 Sentinel与Hystrix

|---------|---------------------|----------------|
| 功能 | Sentinel | Hystrix |
| 隔离策略 | 信号量隔离(并发线程数限流) | 线程池隔离、信号量隔离 |
| 熔断降级策略 | 基于响应时间、异常比率、异常数 | 基于异常比率 |
| 实时统计表现 | 滑动窗口(LeapArray) | 滑动窗口(基于RxJava) |
| 动态规则配置 | 支持多种数据源 | 支持多种数据源 |
| 扩展性 | 多个扩展点 | 插件形式 |
| 基于注解的支持 | 支持 | 支持 |
| 限流 | 基于QPS,支持基于调用关系的限流 | 有限的支持 |
| 流量整形 | 支持预热模式、匀速器模式、预热排队模式 | 不支持 |
| 系统自适应保护 | 支持 | 不支持 |
| 控制台 | 可配置规则、查看秒级监控、机器发现等 | 简单的监控查看 |

2.2 Sentinel-定制网关流控返回

XML 复制代码
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
</dependency>
java 复制代码
@Configuration
public class SentinelGatewayConfig {

    public SentinelGatewayConfig() {
        GatewayCallbackManager.setBlockHandler(new BlockRequestHandler() {
            // 响应式编码,网关限流了请求就会调用此回调
            @Override
            public Mono<ServerResponse> handleRequest(ServerWebExchange serverWebExchange, Throwable throwable) {
                R error = R.error(BizCodeEnum.BLOCK_EXCEPTION.getCode(), BizCodeEnum.BLOCK_EXCEPTION.getMsg());
                String errJson = JSON.toJSONString(error);

                return ServerResponse.ok().body(Mono.just(errJson), String.class);
            }
        });
    }

}
相关推荐
1.01^10002 天前
[000-01-008].第08节:Sentinel 环境搭建
sentinel
世俗ˊ2 天前
微服务-- Sentinel的使用
java·微服务·sentinel
朱杰jjj4 天前
Sentinel实时监控不展示问题
sentinel
灰色孤星A7 天前
微服务保护学习笔记(五)Sentinel授权规则、获取origin、自定义异常结果、规则持久化
微服务·sentinel·微服务保护·规则持久化·授权规则·雪崩问题
晴子呀11 天前
Redis Sentinel(哨兵)详解
数据库·redis·sentinel
cnsummerLi13 天前
springboot项目引入Sentinel熔断
java·spring boot·sentinel
Hsu琛君珩13 天前
【Redis】Redis Sentinel(哨兵)系统:自动故障恢复与高可用性配置全解
redis·sentinel·wpf
钗头风14 天前
(十五)SpringCloudAlibaba-Sentinel持久化到Nacos
sentinel
这河里吗l16 天前
Java后端面试题(微服务相关)(day12)
java·开发语言·微服务·gateway·sentinel
missterzy18 天前
Spring Boot 整合 Sentinel 实现流量控制
spring boot·后端·spring cloud·sentinel