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);
            }
        });
    }

}
相关推荐
Volunteer Technology7 小时前
sentinel基本操作
spring cloud·sentinel
程序员泠零澪回家种桔子9 小时前
Sentinel核心能力解析:限流与集群方案
后端·架构·sentinel
团子的二进制世界2 天前
Sentinel-服务保护(限流、熔断降级)
java·开发语言·sentinel·异常处理
团子的二进制世界2 天前
Sentinel 的核心规则体系
sentinel·熔断·热点·流控
小马爱打代码3 天前
Sentinel:入门到实战详细教程
sentinel
小马爱打代码4 天前
Spring Boot:Sentinel 企业级熔断、降级与限流实战
spring boot·后端·sentinel
没有bug.的程序员4 天前
Spring Cloud Sentinel:熔断降级规则配置与分布式流量防线实战终极指南
java·分布式·后端·spring cloud·sentinel·熔断规则·分布式流量防线
u0104058367 天前
Java中的服务熔断机制:Hystrix与Sentinel的比较
java·hystrix·sentinel
what丶k7 天前
微服务稳定性守护者:Sentinel 全面使用指南(从入门到企业级落地)
微服务·架构·sentinel
鸽鸽程序猿7 天前
【JavaEE】【SpringCloud】 熔断和限流 Alibaba Sentinel
spring cloud·java-ee·sentinel