服务降级(服务回退)

所有的 RPC 技术里面服务降级是一个最为重要的话题,所谓的降级指的是当服务的提供方不可使用的时候,程序不会出现异常,而会出现本地的操作调用。

例如:在每年年底 12306 都是最繁忙的时候,那么在这个情况会发现有一些神奇的情况:当到了指定的时间大家开始抢票的 时候,如果你不抢,而后查询一些冷门的车次,票有可能查询不出来。因为这个时候会将所有的系统资源给抢票调度了,而其它的 服务由于其暂时不受到过多的关注,这个时候可以考虑将服务降级(服务暂停)。

服务的降级处理是在客户端实现的,与你的服务器端没有关系。

1、 【microcloud-service】扩充一个 IDeptService 的失败调用(服务降级)处理:

package cn.study.service.fallback;
import java.util.List;
import org.springframework.stereotype.Component;
import cn.study.service.IDeptClientService;
import cn.study.vo.Dept;
import feign.hystrix.FallbackFactory;
@Component
public class IDeptClientServiceFallbackFactoryimplementsFallbackFactory<IDeptClientService> {@Overridepublic IDeptClientService create(Throwable cause) {return new IDeptClientService() {@Overridepublic Dept get(long id) {Dept vo = new Dept();vo.setDeptno(888888L);vo.setDname("【ERROR】Feign-Hystrix"); // 错误的提示vo.setLoc("Consumer客户端提供");return vo;}@Overridepublic List<Dept> list() {return null;}@Overridepublic boolean add(Dept dept) {return false;}};}}

2、 【microcloud-service】修改 IDeptClientService 接口,追加本地的 Fallback 配置。

package cn.study.service;import java.util.List;import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;import cn.study.commons.config.FeignClientConfig;
import cn.study.service.fallback.IDeptClientServiceFallbackFactory;
import cn.study.vo.Dept;
@FeignClient(value = "MICROCLOUD-PROVIDER-DEPT", configuration = FeignClientConfig.class, fallbackFactory = IDeptClientServiceFallbackFactory.class)
public interface IDeptClientService {@RequestMapping(method = RequestMethod.GET, value = "/dept/get/{id}")public Dept get(@PathVariable("id") long id);@RequestMapping(method = RequestMethod.GET, value = "/dept/list")public List<Dept> list();@RequestMapping(method = RequestMethod.POST, value = "/dept/add")public boolean add(Dept dept);
}

此时当服务不可用的时候就会执行“IDeptClientServiceFallbackFactory”类中返回的 IDeptClientService 接口的匿名对象信息。

3、 【microcloud-consumer-hystrix】修改 application.yml 配置文件,追加 feign 配置启用。

feign:hystrix: enabled: true

4、 【microcloud-consumer-hystrix】修改程序启动主类:

package cn.study.microcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@EnableEurekaClient
@ComponentScan("cn.study.service,cn.study.microcloud")
@EnableFeignClients(basePackages={"cn.study.service"})
public class Consumer_80_StartSpringCloudApplication {public static void main(String[] args) {SpringApplication.run(Consumer_80_StartSpringCloudApplication.class,args);}
}

当追加上了“@ComponentScan(“cn.mldn.service”)”注解之后才可以进行包的扫描配置。

此时即使服务端无法继续提供服务了,由于存在有服务降级机制,也会保证服务不可用时可以得到一些固定的提示信息。
https://www.cnblogs.com/softidea/p/6346727.html

服务降级(服务回退)相关推荐

  1. SpringCloud微服务-服务注册发现-负载均衡-服务调用-服务降级-服务网关-配置中心-消息总线-消息驱动-链路追踪-alibaba-nacos-sentinel-seata理论原理分析

    SpringCloud理论技术 概述 ​ Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总 ...

  2. Hystrix 服务断路器(熔断器 )/服务降级/服务监控 hystrixDashboard

    1. 服务雪崩 多个微服务之间调用的时候, 假设微服务A 调用微服务B和微服务C, 微服务B和微服务C又调用其他的微服务, 这就是所谓的'扇出'. 如果扇出的链路上某个微服务的调用响应时间过长或者不可 ...

  3. 服务降级--服务降级的一点认识

    服务降级:主要是针对非正常情况下的应急服务措施;比如电商平台,在针对618.双11等高峰情形下采用部分服务不出现或者延时出现的情形. 为什么是非正常情况下呢,比如我要出差,如果经常出差的话,要带的衣服 ...

  4. 微服务之Hystrix(一):结合Eureka实现服务降级-服务熔断器处理

    目录 一:Hystrix简介 二:问题引入 三:线程隔离,服务降级原理 四:使用Hystrix 五:熔断器的引入 六:测试熔断器 代码地址:代码地址-GitHub 一:Hystrix简介 在微服务场景 ...

  5. 并发编程-26 高并发处理手段之服务降级与服务熔断 + 数据库切库分库分表

    文章目录 服务降级与服务熔断概述 服务降级举例 服务熔断 VS 服务降级 服务降级要考虑的问题 Hystrix 数据库切库分库分表 高可用的一些手段 服务降级与服务熔断概述 服务熔断: 一般是指软件系 ...

  6. feign直接走熔断_SpringCloud微服务面试必问:Hystrix 服务降级、熔断

    本文作者:JLSong 本文链接:https://www.cnblogs.com/songjilong/p/12770999.html 1.Hystrix是什么? Hystrix 是一个用于处理分布式 ...

  7. 【服务治理】服务熔断、服务降级、服务限流、流量削峰、错峰

    文章目录 服务熔断.服务降级和服务限流 服务熔断 服务降级 服务限流 实现 步骤三.Polly在.NetCore项目中封装 流量错峰.流量限流.流量削峰 流量错峰 服务端错峰策略 客户端错峰策略 流量 ...

  8. feign直接走熔断_【121期】面试官:什么是熔断?什么是服务降级?

    点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅 阶段汇总集 ...

  9. 微服务架构 — 服务治理 — 服务限流、服务降级、服务熔断

    目录 文章目录 目录 服务限流 服务降级 服务熔断 服务限流 C ⇄ S 的异常问题:C 的请求太多,超出 S 的服务能力,导致 S 不可用.例如:DoS 攻击,企图耗尽被攻击对象的资源,让目标系统无 ...

  10. 服务降级的概念及应用手段

    转载自 服务降级的概念及应用手段 什么是服务降级 服务降级,就是对不怎么重要的服务进行低优先级的处理.说白了,就是尽可能的把系统资源让给优先级高的服务.资源有限,而请求是无限的.如果在并发高峰期,不做 ...

最新文章

  1. IOS中CoreLocation框架地理定位
  2. mysql中blob_MySQL中的BLOB类型
  3. Unity 2D游戏开发快速入门(内部资料)
  4. 皮一皮:内涵了...
  5. dart语法中list相关详解
  6. 216. Combination Sum III 组合总和 III
  7. 【机器视觉】 dev_map_prog算子
  8. elasticsearch 6.x (三) linux 集群多节点部署
  9. ios侧滑返回:完美解决 interactivePopGestureRecognizer 卡住的问题
  10. Reddit 评级算法的工作原理
  11. java 类的传递_Java基本类型的传递
  12. Spring Boot 启动类真的是XXApplication?
  13. 1-2 实验2 点对点通信
  14. 快速排序和二分查找时间复杂度详解
  15. YOLOX源码解析--全网最详细,建议收藏!
  16. 截图软件shutter
  17. 【SemiDrive源码分析】【X9芯片启动流程】08 - X9平台 lk 目录源码分析 之 目录介绍
  18. 解决win10搜索框无法搜索本地应用或无反应
  19. 【调研】消费者调研与市场调研的区别
  20. python实现基金定投并可视化结果(及时止损)

热门文章

  1. 单元测试和E2E测试
  2. [WPS]一次性解决论文插图的题注与章节号对不上问题
  3. ubuntu(linux)打开jnlp文件
  4. Quartz数据库表分析
  5. The release Method
  6. python画图时,中文无法正常显示的问题,RuntimeWarning: Glyph 26631 missing from current font. font.set_text(s, 0, fl
  7. 备份oracle数据库
  8. Cannot open precompiled header file: 'Debug/****.pch': No such file or directory
  9. 重启服务器命令有哪些,每一个重启命令区别又是什么?
  10. 几款H桥电机驱动芯片直流有刷电机驱动芯片性能分析