Sentinel记录

1.服务雪崩

分布式系统环境下, 通常有多层的服务调用,当由于网络原因或者自身的原因,导致服务不可用,调用这个服务就会出现线程阻塞的情况,若有大量请求涌入,导致服务瘫痪。

由于服务与服务的依赖性,故障会传播,不可用请求调用链向上传递,导致整个微服务系统瘫痪。

1.1常见的容错方案

隔离、超时、限流、熔断、降级

隔离:将系统按照一定原则划分为若干个服务模块,各个模块相互独立,无强依赖。当发生故障,将问题和影响隔离在某个模块内部,不影响整体的系统服务。

线程池隔离和信号量隔离

超时:设置一个最大响应时间,若服务调用超出响应时间则断开请求,释放线程。

限流:限定阈值,请求超过阈值则抛弃或者排队处理。

熔断:当下游服务因访问压力过大而响应慢或失败时,上游服务暂时切断对下游服务的调用,以免影响其他服务的运行

降级:为服务提供一个备用方案,一旦服务无法正常调用就执行备用方案。

2.Sentinel

Sentinel (分布式系统的流量防卫兵) 是阿里开源的一套用于服务容错的综合性解决方案。它以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。

2.1Sentinel 的特征

  • 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
  • 完备的实时监控:Sentinel 提供了实时的监控功能。通过控制台可以看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。
  • 广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 SpringCloud、Dubbo、gRPC 的整合。只需要引入相应的依赖并进行简单的配置即可快速地接入Sentinel。
  • 完善的扩展点:Sentinel 提供简单易用、完善的扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。

2.2Sentinel 的组成

核心库(Java 客户端):不依赖任何框架/库,能够运行于所有 Java 运行时环境,同时对 Dubbo /Spring Cloud 等框架也有较好的支持。

控制台(Dashboard):基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器。

3.OpenFeign整合Sentinel

3.1引入sentinel的依赖

<!--服务容错-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

3.2开启Sentinel支持

feign:
  sentinel:
    enabled: true

3.3创建容错类

@Service
@Slf4j
public class OssFileServiceFallBack implements OssFileService {

    @Override
    public R test() {
        return R.error();
    }

    @Override
    public R removeFile(String url) {
        log.info("熔断保护");
        return R.error();
    }
}

3.4指定容错类

@Service
@FeignClient(value = "service-oss", fallback = OssFileServiceFallBack.class)
public interface OssFileService {
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值