熔断降级

1、概念(参考:https://blog.csdn.net/xiaojin21cen/article/details/88373447)摘要

熔断:如果某个目标服务调用慢或者有大量超时,此时,熔断该服务的调用,对于后续调用请求,不在继续调用目标服务,直接返回,快速释放资源。如果目标服务情况好转则恢复调用。

降级:当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。

2、SpringCloud使用Hystrix先熔断后降级

参考:https://my.oschina.net/u/2342969?q=Hystrix  

           https://mrbird.cc/Spring-Cloud-Hystrix-Circuit-Breaker.html

本质是客户端熔断(eureka消费端熔断)

基本工作过程:

基本使用思路:

2-1、先熔断:  打开Hystrix的断路器。

@EnableCircuitBreaker

2-2、后降级:(客户端)消费者使用@HystrixCommand命令,并且实现回退方法。

@HystrixCommand(fallbackMethod = "自定义方法")

2-3、消费者调用多个生产者服务可以开启异步(AsyncResult)模式。

    
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.netflix.hystrix.contrib.javanica.command.AsyncResult;

    //fallbackMethod 降级方法。
    @HystrixCommand(fallbackMethod = "testAsyncError")
    public Future<String> testAsync(){
    return new AsyncResult<List<MongoDBTest>>() {
            @Override
            public List<MongoDBTest> invoke() {
                //调用服务生产者服务逻辑
                //... ...
            }
        };
    }
    
    public String testAsyncError(String abc){
       System.out.println("=================降级逻辑处理==================");
       return null;
    }

2-4、 @HystrixProperty 

 隔离策略

@HystrixProperty(name=”execution.isolation.strategy”, value=”THREAD”)  线程隔离 

@HystrixProperty(name=”execution.isolation.strategy”, value=”SEMAPHORE”)  信号隔离 (建议使用信号隔离,无线程开销,速度优良)

 自定义超时时间@HystrixProperty(name=”execution.isolation.thread.timeoutinMilliseconds”,value=”2000”) 默认1000ms
是否开启超时时间@HystrixProperty(name=”execution.timeout.enabled”, value=”false”) 

 

 

 

配置信号量

 

@HystrixProperty(name=”execution.isolation.semaphore.maxConcurrentRequests”, value=”2”)

当信号量(即调用该接口的并发数量)大于2时,进入降级逻辑处理。(虽然可以做限流,但不提倡使用)

配置最小请求数@HystrixProperty(name=”circuitBreaker.requestVolumeThreshold”, value=”20”) 默认最小请求数20,需要结合errorThresholdPercentage来使用。
配置失误请求比例@HystrixProperty(name=”circuitBreaker.errorThresholdPercentage”, value=”50”) 默认请求失误的几率为50%,在满足requestVolumeThreshold的阈值,超过半数请求失败的情况,触发熔断机制。

 

 

 

 

 2-5、请求合并,当一个消费者调用多个服务时,可以将所有调用服务合并成一个服务。(不研究)

 2-6、整合 Dashboard仪表盘 

3、传统服务使用Sentinel熔断降级 (后续再写)

 

Sentinel是一个中间件,需要在服务器中搭建这个中间件,这个中间件比起Hystrix强大

https://mrbird.cc/Sentinel%E6%8E%A7%E5%88%B6%E5%8F%B0%E8%AF%A6%E8%A7%A3.html

https://www.jianshu.com/p/6ee4b7bdb844

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值