Cloud-Hystrix豪猪哥feign远程调用服务降级实现

什么是服务降级?
服务降级是指 当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理,或换种简单的方式处理,从而释放服务器资源以保证核心业务正常运作或高效运作。说白了,就是尽可能的把系统资源让给优先级高的服务。

由图可得,当某一时间内服务A的访问量暴增,而B和C的访问量较少,为了缓解A服务的压力,这时候需要B和C暂时关闭一些服务功能,去承担A的部分服务,从而为A分担压力,叫做服务降级。

 service层@FeignClient(服务名,实现降级处理的fallbackFactory)

@FeignClient(value = "lxtx-im-wallet", fallbackFactory = AirdropFeignFallbackFactory.class)
public interface AirdropFeign {

    @PostMapping(value = "/airdrop/list")
    BaseResult listPage(FeignAirdropReq feignAirdropReq);

}

需要实现FallbackFactory下的方法create返回的是我们进行降级的服务类,在这里处理服务降级后的一些程序

@Component
public class AirdropFeignFallbackFactory  implements FallbackFactory<AirdropFeign> {
    @Override
    public AirdropFeign create(Throwable throwable) {
        AirdropFeignFallback feignFallback = new AirdropFeignFallback();
        feignFallback.setCause(throwable);//进行降级
        return feignFallback;
    }
}

并在配置中开启服务降级

 把服务提供者挂了之后,再次访问这个接口即可看出这个服务已经进行降级处理

服务熔断和降级的区别

服务熔断—>服务端:某个服务超时或异常,引起熔断~,类似于保险丝(自我熔断)
服务降级—>客户端:从整体网站请求负载考虑,当某个服务熔断或者关闭之后,服务将不再被调用,此时在客户端,我们可以准备一个 FallBackFactory ,返回一个默认的值(缺省值)。会导致整体的服务下降,但是好歹能用,比直接挂掉强。
触发原因不太一样,服务熔断一般是某个服务(下游服务)故障引起,而服务降级一般是从整体负荷考虑;管理目标的层次不太一样,熔断其实是一个框架级的处理,每个微服务都需要(无层级之分),而降级一般需要对业务有层级之分(比如降级一般是从最外围服务开始)
实现方式不太一样,服务降级具有代码侵入性(由控制器完成/或自动降级),熔断一般称为自我熔断。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值