狂神SpringCloud 服务降级

服务降级

​ 因为Feign项目的不成功,导致服务降级也无法完成

​ 问题已解决,版本问题

  • 根据实际业务情况以及流量,对一些服务喝页面有策略的不处理或换简单的方式处理,从而释放服务器资源以保证核心服务正常运作或高效运作
  • 使用场景:
    • 当负载超过了预设的阀值或流量超出预计,保证重要的服务能正常运行,将不紧急,不重要的服务延迟使用或暂停使用
  • 核心设计
    • 服务降级-分布式开关
      • image-20201011180951413
      • 超时降级:设定超时重试次数和机制,使用异步机制探测恢复情况
      • 失败次数降级:一些不稳定的API,当失败次数达到一定阀值,自动降级,使用异步机制探测回复情况
      • 故障降级:调用的远程服务挂掉(网络故障,DNS故障,Http服务返回错误的状态码和RPC服务抛出异常)可以直接降级
      • 限流降级:触发了限流超额,可以使用暂时屏蔽的方式来进行短暂的屏蔽
  • 配置中心
    • 服务降级的配置信息是集中式管理的,可视化界面
    • 配置中心和应用之间需要网络通信,因此网络因素可能会导致配置信息丢失,导致变更不及时
    • 配置中心需要达到几个点:
      • image-20201011182834105
      • 启动主动拉取配置:用于初始化配置,减少第一次定时周期
      • 发布订阅配置:用于实时配置以及及时变更
      • 定时拉取配置:用于解决发布订阅失败或消息丢失的情况
      • 离线文件缓存配置:用于临时解决重启连不上配置中心的问题
      • 可编辑配置文档:用于直接编辑文档的方式来实现配置的定义
      • 提供Telnet命令变更配置:用于解决配置中心失效而不能变更配置的情况
  • 后面还有好多,暂不做记录

Demo

  • consumer

  • 主要操作

    • 实现FallbackFactory接口
    • FeignService接口降级实现
  • 修改FeignClient增加服务降级功能fallbackFactory

  • 开启服务降级

  • @Component
    public class DeptConsumerFallbackFactory implements FallbackFactory {
        @Override
        public FeignService create(Throwable throwable) {
            return new FeignService() {
                @Override
                public String test() {
                    return "FallbackFactory ==================test";
                }
    
                @Override
                public String Test(int id) {
                    return "FallbackFactory ==================Test "+id;
                }
            };
        }
    }
    
  • 实现FallbackFactory接口,里面实现服务降级的备选方案,当provider服务关闭时,客户端也能自己做出备选响应

  • @Component交给spring管理

  • @Component
    @FeignClient(value = "PROVIDER-8001" ,fallbackFactory = DeptConsumerFallbackFactory.class)
    public interface FeignService {
    
        @RequestMapping(method = RequestMethod.GET ,value = "/test")
        String test();
    
        @RequestMapping(method = RequestMethod.GET ,value = "/hystrix/{id}")
        String Test(@PathVariable(value = "id")int  id);
    }
    
  • FeignClient加入实现服务降级注入的bean

  • feign.hystrix.enabled=true
    
  • 开启服务降级,默认false

  • 测试

  • 开启provider、consumer、Eureka

  • image-20201018082047011

  • consumer能正常访问provider的服务

  • 当provider可能因为某种原因停止,consumer不可用也能获取提示信息,而不至于挂起耗死服务器

  • image-20201018082621292

  • image-20201018082645916

  • image-20201018082708567

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值