服务降级(服务回退)

所有的 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. 如何快速使用Leangoo看板工具进行项目协作?
  2. 十以内的加减java编写程序_Java实现随机出题,10道10以内加减法计算代码实例
  3. 二、数据分析前,打下数据处理基础(上)
  4. LeetCode 367. 有效的完全平方数(二分查找)
  5. eclipse和mysql创建ssm_Eclipse下SSM项目的搭建
  6. python语言数值操作符_Python之组合数据类型、逻辑操作符、控制流语句、算术操作符...
  7. mysql是bsd协议吗_开源许可证 GPL、BSD、MIT、Mozilla、Apache 和 LGPL 的区别
  8. 前端程序员转行做新媒体运营?什么原因
  9. JavaMail使用阿里云企业版邮箱发送邮件
  10. 电脑MAC地址查询方法
  11. linux下配置Tilera MDE4.1.8方法
  12. Cloudera Manager5.14.3集群搭建
  13. 游戏开发、安卓、IOS知识概括
  14. cnpm使用报错-最佳方案
  15. 常用类库之Math类
  16. October 2009
  17. 厦门计算机中专学校,厦门有哪些中专学校
  18. 协议系列之TCP/IP协议
  19. android手机做音乐软件,安卓手机必备的五个黑科技APP,每个都强大到没有朋友!要低调使用...
  20. 梦龙_C语言作业11

热门文章

  1. Git如何上传代码到远程仓库(GiteeGithub)
  2. IntelliJ IDEA如何导出和导入项目
  3. 先验分布与后验分布,认真看看这篇
  4. linux nginx连接memcache和ngx_http_consistent_hash负载均衡算法
  5. python3 pymysql库介绍
  6. 干货|TTL电路详细讲解,工作原理+电路图,图文结合,轻松搞定
  7. matlab 怀特图,怀特异方差检验方法在matlab中的实现,以及广义最.....
  8. java 实现对数据表的备份与还原(备份与还原 到服务器中)
  9. jenkins pipeline slave部署nacos负载均衡平滑升级
  10. Java物流项目第五天 数据聚合服务开发(pd-aggregation)