SpringCloud笔记-5-第五章 服务容错保护库Hystrix

本文介绍了Hystrix作为SpringCloud的熔断组件,用于防止服务因依赖故障导致的系统崩溃。通过配置和服务接口的回调实现,当依赖服务不可用时,Hystrix会触发熔断,返回预设的 fallback 响应,从而保障系统稳定性。通过实例展示了在服务正常和故障时的访问效果,验证了熔断机制的成功应用。
摘要由CSDN通过智能技术生成

5.1 什么是Hystrix?

熔断机制是解决微服务架构中因等待出现故障的依赖方响应而形成任务挤压,.
最终导致自身服务瘫痪的一种机制,它的功能类似电路的保险丝,其目的是为了阻断故障,从而保护系统稳定性。Hystrix作为Spring Cloud中实现了熔断机制的组件,具有服务容错保护功能。

在分布式系统中,服务与服务之间的依赖错综复杂,一种不可避免的情况就是某些服务会出现故障,导致依赖于它们的其他服务出现远程调度的线程阻塞。

Hystrix 是 Netflix 公司开源的一个项目,它提供了熔断器的功能,能够阻止分布式系统中出现的联动故障。

Hystrix 是通过隔离服务的访问点阻止联动故障的,并提供了故障的解决方案,从而提高了整个分布式系统的弹性。

配置文件

在原来的 application.yml 配置的基础上修改

spring:
  application:
    name: eureka-consumer-feign-hystrix
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7000/eureka/
server:
  port: 9003
feign:
  hystrix:
    enabled: true

创建回调类

创建 HelloRemoteHystrix 类实现 HelloRemote 中实现回调的方法

@Component
public class HelloRemoteHystrix implements HelloRemote {

    @Override
    public String hello(@RequestParam(value = "name") String name) {
        return "Hello World!";
    }
 }

添加 fallback 属性

在HelloRemote类添加指定 fallback 类,在服务熔断的时候返回 fallback 类中的内容。

@FeignClient(name = "eureka-producer", fallback = HelloRemoteHystrix.class)
public interface HelloRemote {

    @GetMapping("/hello/")
    String hello(@RequestParam(value = "name") String name);

测试

依次启动 eureka-server、eureka-producer 和刚刚的 eureka-consumer-feign-hystrix 这三个项目。

访问:http://localhost:9003/hello/zxj
返回:[0]Hello, hjj!feign Fri Aug 21 21:50:50 CST 2020

说明加入 Hystrix 后,不影响正常的访问。接下来我们手动停止 eureka-producer 项目再次测试:

访问:http://localhost:9003/hello/zxj
返回:[fallback]Hello World!

这时候我们再次启动 eureka-producer 项目进行测试:

访问:http://localhost:9003/hello/zxj
返回:[0]Hello, hjj!feign Fri Aug 21 21:50:50 CST 2020

根据返回结果说明熔断成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值