是一种保护机制。

服务熔断

在生产者方进行使用。

演示代码:

生产者的基本代码不再赘述。下面只写与Hystrix有关的代码。

首先引入相关依赖:

    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-hystrix</artifactId><version>1.4.7.RELEASE</version></dependency>

生产者相关controller代码:

@RestController
@RequestMapping("/user")
public class UserController {@Resourceprivate UserMapper userMapper;@Resource(name = "userServiceImpl")private UserService userService;@Autowiredprivate DiscoveryClient discoveryClient;@GetMapping("/getAllUser")//一旦方法出现异常或者超时,就会调用fallbackMethod指定的方法@HystrixCommand(fallbackMethod = "getById")public String getAllUser() {List<User> users = userMapper.selectList(null);String jsonString = JSONObject.toJSONString(users);if (jsonString != null) {throw new RuntimeException("抱歉~没有此条记录---");}return jsonString;}public String getById() {User byId = userService.getById(1458679378555813890L);String s = JSONObject.toJSONString(byId);return "@HystrixCommand--抱歉只有如下记录:" + "\t" + s;}}

注意:在需要有熔断的方法之上一定要加  @HystrixCommand   注解。此注解不适用于类。

其中:fallbackMethod  指的是当前请求出现失败或者超时、方法异常等情况时的调用方法。

启动类代码:

@MapperScan("com.hwj.springcloudeurekaclienthystrix")
@EnableEurekaClient //本服务启动后,自动注册进Eureka
@SpringBootApplication
@EnableDiscoveryClient //服务发现
@EnableCircuitBreaker//Hystrix熔断器
public class SpringCloudEurekaClientHystrix {public static void main(String[] args) {SpringApplication.run(SpringCloudEurekaClientHystrix.class, args);}
}

注意:一定要加 @EnableCircuitBreaker   Hystrix熔断器注解。

到此,服务熔断已经实现。

服务降级

是什么:

整体资源空间即将到达上限,先暂时关闭掉某些服务,等资源空间松缓以后再启动。

服务降级处理是在客户端完成的,与服务端没有关系。

步骤:

1、新建一个feign接口并补充好内容。

2、在feign接口上添加   @FeignClient(name="xxx",fallbackFactory = yyy.class)   注解。含义为:给服务名为xxx的服务设置服务降级时执行的内容。

/*** @author HWJ* @date 2021-11-14*/
@FeignClient(name = "PROVIDERCRUD",fallbackFactory = UserClientFeignFactory.class)
public interface UserClientFeignService {@GetMapping(value = "/user/getAllUser")public String userList();
}

3、新建一个类,实现  FallbackFactory<T>接口,其中T指的是feign接口,并重写其方法。

/*** @author HWJ* @date 2021-11-15*/
@Component
public class UserClientFeignFactory implements FallbackFactory<UserClientFeignService> {@Overridepublic UserClientFeignService create(Throwable throwable) {return new UserClientFeignService() {@Overridepublic String userList() {return "此服务已停用!";}};}
}

注意,一定要此在类上加@Component注解。

此类含义:当feign接口中,该方法执行出现异常或者超时等不能正常返回结果的情况时,

返回 此类  该方法中  对应的内容。

4、在feign消费者端的application.yml中,添加如下代码:

## 启动feign中的hystrix组件
feign:hystrix:enabled: true

5、在feign消费者端启动类上修改:

@SpringBootApplication(scanBasePackages = {"com.hwj.sggapi.service","com.hwj.springcloudfeign.controller"})
@EnableEurekaClient
@EnableFeignClients(basePackages = "com.hwj.sggapi.service")
public class SpringCloudTestSGGFeign {public static void main(String[] args) {SpringApplication.run(SpringCloudTestSGGFeign.class,args);}
}

扫描包,将加 @Component 注解的类添加到spring。

扫描本身的controller包。

至此,服务降级完成。

PS:

1、服务熔断与服务降级的区别?

服务熔断:所谓服务熔断就是某个服务请求出现问题时,直接返回定义好的  fallbackMethod  或者fallbackFactory 。

服务降级:就是某一个分布式系统中,有a,b,c三个服务。但是某一天,a服务的访问量特别多,造成系统资源的短缺。这时候为了节约系统资源给a,就需要关闭除a以外的某个服务或者某些服务。此为片面上的服务降级。

2、引入依赖注意:feign接口引入openfeign不要引入feign。

        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId><version>版本</version></dependency>

要引入openfeign,不要引入feign。要不然没有

feign:
  hystrix:
    enabled: true

Hystrix断路器(熔断器)相关推荐

  1. Spring Cloud构建微服务架构:服务容错保护(Hystrix断路器)【Dalston版】

    前言 在前两篇<Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)>和<Spring Cloud构建微服务架构:服务容错保护(Hystrix依赖隔离)&g ...

  2. Hystrix断路器执行原理

    深入 Hystrix 断路器执行原理 Hystrix熔断机制,用于监控微服务调用情况,当失败的情况达到预定的阈值(5秒失败20次),会打开断路器,拒绝所有请求,直到服务恢复正常为止. circuitB ...

  3. Netflix Hystrix断路器简介与工作原理

    一.前言? 1.Netflix Hystrix断路器是什么? Netflix Hystrix是SOA/微服务架构中提供服务隔离.熔断.降级机制的工具/框架.Netflix Hystrix是断路器的一种 ...

  4. 微服务——Hystrix断路器(豪猪哥)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 概述 分布式系统面临的问题 是什么 能干嘛 Hystrix重要概念 服务降级(fallback) 哪些情况会触发降级 服务熔 ...

  5. Hystrix面试 - 深入 Hystrix 断路器执行原理

    Hystrix面试 - 深入 Hystrix 断路器执行原理 RequestVolumeThreshold HystrixCommandProperties.Setter().withCircuitB ...

  6. SpringCloud中 Feign结合Hystrix断路器开发。

    Feign结合Hystrix断路器开发: 转载于:https://www.cnblogs.com/longdb/p/10468371.html

  7. 五、Hystrix断路器

    Hystrix断路器 概述 分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖关系,每一个依赖关系在某些时候将不可避免的失败. 服务雪崩 多个微服务之间调用的时候,假如微服务A调用微服务 ...

  8. Hystrix断路器原理及实现(服务降级、熔断、限流)

    Hystrix断路器原理及实现(服务降级.熔断.限流) 分布式系统面临的问题 Hystrix重要概念(面试常考) Hystrix案例 Hystrix 服务提供者 Hystrix 服务消费者 原因与解决 ...

  9. SpringCloud07 - Hystrix 断路器

    扯淡: 服务与服务之间有业务关联就需要调用,当被调用的服务发生故障(上线后多半是由于网路原因导致连接超时),必然会波及到服务调用者.通俗讲,断路器就是在低层级的服务发生故障时将服务间的连接断开. 个人 ...

  10. SpringClound——Hystrix断路器

    SpringCloud学习资料汇总超级棒的 如上是我在看文章时忽然看到的一个很好的学习SpringCloud的网站 SpringClound--微服务概述--史上最烂 SpringClound--Sp ...

最新文章

  1. python和r语言比较_Python和R语言之分析对比 - 数据分析
  2. FPGA学习之路—接口(2)—I2C协议详解+Verilog源码分析
  3. apache ranger_Apache Ranger插件的美丽简洁
  4. 90年代微型计算机,版本控制如何在80年代和90年代的当今微型计算机上工作?
  5. android广播示例,android接受开机广播事件
  6. 黑客攻防技术宝典web实战篇:利用信息泄露习题
  7. [WCF]终结点与服务寻址(一)
  8. Apisonic Labs Speedrum Mac - MPC风格虚拟鼓采样器
  9. php 开源邮件系统,企业级开源邮件系统搭建的全过程
  10. java程序用maven打包的命令
  11. XCode7 iOS8.X Simulator 离线下载地址
  12. 华工历次数学实验源代码
  13. word调整标题编号
  14. PDF文件删除空白页
  15. HTML+CSS绘制太阳系九大行星运行轨迹
  16. Dilated Convolution膨胀卷积感受野详解
  17. group by 分组后 再对所有的数据求和
  18. “蔚来杯“2022牛客暑期多校训练营8
  19. 国密算法的ekey的使用--简述
  20. 训练数据,验证数据和测试数据

热门文章

  1. 上手Coc.nvim 完全指南
  2. 材料计算:电催化系列2——隐式溶剂效应、恒电势方法、OER台阶图、催化火山图、布拜图
  3. 为什么白板面试总是过不了
  4. Hbase面试题(持续更新)
  5. 大数据Hbase 面试题
  6. JS异步编程之Generator
  7. 核心频率个加速频率_255W TDP不算啥,英特尔14核酷睿i9-9990XE处理器全核加速5.0GHz...
  8. 【Python】基于Python的机器学习回归:可视化、预测及预测结果保存(附代码)
  9. 使用SQL.js访问SQLite
  10. 塑造价值的力量 | 摸鱼系列