SpringCloud-Hystrix-服务降级

服务降级是什么?

  • 整体资源快不够了,忍痛将某些服务先关掉,待渡过难关,再开启回来
  • 服务降级处理是在客户端实现完成的,与服务端没有关系

服务降级测试:

1. 编写被关闭服务的返回信息,需要实现FallbackFactory接口
@Component
public class DeptClientServiceFallbackFactory implements FallbackFactory {
    @Override
    public Object create(Throwable throwable) {
        return new DeptClientService() {
            @Override
            public Dept queryById(Long id) {
                return new Dept().setDeptno(id)
                        .setDname("该id:"+id+"没有对应的信息,Consumer客户端提供的降级信息,此刻服务Provider已经关闭")
                        .setDb_source("no this database in MySQL");
            }
            @Override
            public List<Dept> queryAll() {
                return null;
            }
            @Override
            public boolean addDept(Dept dept) {
                return false;
            }
        };
    }
}

2. 在DeptClientService接口的 @FeignClient注解中添加fallbackFactory属性值
  • 已知DeptClientService接口是采用feign留下的接口

在这里插入图片描述

@Component
@FeignClient(value = "SPRINGCLOUD-PROVIDER-DEPT",fallbackFactory = DeptClientServiceFallbackFactory.class)
public interface DeptClientService {
        @GetMapping("/dept/get/{id}")
        public Dept queryById(@PathVariable("id") Long id); //根据id查询部门
        @GetMapping("/dept/list")
        public List<Dept> queryAll(); //查询所有部门
        @PostMapping(value = "/dept/add")
        public boolean addDept(Dept dept); //添加一个部门

        //feign 远程调用的接口,可以放在任意地方,放在api里是为了方便管理
    }

3. 在客户端开启Hystrix

在这里插入图片描述

feign:
  hystrix:
    enabled: true
4. 启动测试
  • 启动集群
  • 启动服务(生产者、服务提供者)
  • 启动客户端(服务消费者)
  • 客户端访问服务端

在这里插入图片描述

  • 关闭服务端
  • 客户端访问服务端

在这里插入图片描述


总结

  • 服务熔断是在服务端,当服务发生宕机,自动选择备用方案
  • 服务降级是在客户端,当整体资源不够时,选择关闭一些服务,当客户端想要访问被关闭的服务时,客户端会返回提示信息(备用方案)
  • 熔断需要一个方法对应一个备用方法(多个方法需要多个备用方法)
  • 降级是一个服务对应一个方法,多个方法依然对应一个备用方法
  • 熔断针对服务宕机,被迫进行的
  • 降级针对压力请求,是主动的进行的

  • 服务熔断:一般是某个服务故障或者异常引起,类似现实世界中的 “保险丝” , 当某个异常条件被触发,直接熔断整个服务,而不是一直等到此服务超时!
  • 服务降级:所谓降级,一般是从整体负荷考虑,就是当某个服务熔断之后,服务器将不再被调用,此时客户端可以自己准备一个本地的fallback回调,返回一个缺省值。这样做,虽然服务水平下降,但好歹可用,比直接挂掉要强。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值