SpringCloud-4-Netflix-4-Hystrix

简介: Hystrix 就是断路器,也叫熔断器。

 Hystrix 就是断路器,也叫熔断器。

       在分布式系统中有很多的模块相互之间进行交互,如果其中的一个出现了问题,那么就会影响整个流程,导致整个服务出现故障。假如某一个模块无法正常工作时,能够通过我们提前配置的容错措施来使得整个系统能够继续正常运行,这样就可以在单个模块出问题时及时熔断该链路,不影响整个系统的运行。

       Spring Cloud 断路器提供了跨不同断路器实现的抽象。

支持的实现

  • Netfix Hystrix
  • Resilience4J
  • Sentinel
  • Spring Retry

       现在我们的一个8080端口服务宕机了,我们@HystrixCommand(fallbackMethod = "error")注解来捕捉到这个事件。

代码实现一下

一、直接使用上篇的eureka client服务,加入hystrix依赖

<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.xing</groupId><artifactId>StudyCloud</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>StudyCloud-eureka-client</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><!--web组件--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--eurekaclient组件--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

二、启动类中加@EnableCircuitBreaker注解启动熔断器

packagecom.xing.study.cloud.eureka;
importcom.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
importorg.springframework.boot.SpringApplication;
importorg.springframework.boot.autoconfigure.SpringBootApplication;
importorg.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
importorg.springframework.cloud.netflix.eureka.EnableEurekaClient;
importorg.springframework.web.bind.annotation.RequestMapping;
importorg.springframework.web.bind.annotation.RestController;
importorg.springframework.web.client.RestTemplate;
/*** @author rt*/@RestController@SpringBootApplication@EnableEurekaClient@EnableCircuitBreakerpublicclassApplication {
@RequestMapping("/")
publicStringhome() {
return"Hello World";
    }
@HystrixCommand(fallbackMethod="error")
@RequestMapping("/hystrix")
publicStringhystrix() {
returnnewRestTemplate().getForObject("http://127.0.0.1:8080/",String.class);
    }
/***  回调方法* @return str*/publicStringerror(){
return"/hystrix调用8080端口地址失败拉,回调error方法";
    }
publicstaticvoidmain(String[] args) {
SpringApplication.run(Application.class, args);
    }
}

       配置文件还是保持上篇的

spring.application.name=eureka-client1server.port=8882eureka.instance.instance-id=eureka-client1eureka.client.service-url.defaultZone=http://172.23.13.15:8881/eureka/eureka.client.register-with-eureka=trueeureka.client.fetch-registry=true

三、启动服务(记得要启动Eureka Server项目)

       访问发布的接口:http://127.0.0.1:8882/hystrix

1d46348dcfea08b457ab2d43a3f44c96.png

       可以看到在一定时间后,跳到了error()方法,我们就可以在error方法中进行回退、降级、缓存结果啥的,有兴趣可以继续往深学学。

       目前hystrix已经停止更新了,以后使用的话再好好学习。

CircuitBreakerFactory.create API将创建一个名为CircuitBreaker的类的实例 。

该run方法需要Supplier和aFunction。

Supplier是您要包装在断路器中的代码。

Function是如果断路器跳闸将执行的回调方法。

将传递Throwable导致触发回退的函数。

如果不想提供回退,可以选择排除回退。

     

END

目录
相关文章
|
5月前
Springcloud-ribbon和hystrix配置
Springcloud-ribbon和hystrix配置
38 0
|
12月前
|
负载均衡 算法 Java
springcloud netflix ribbon 使用
springcloud netflix ribbon 使用
99 0
|
缓存 监控 NoSQL
SpringCloud Hystrix
SpringCloud Hystrix
51 0
|
负载均衡 算法
03、SpringCloud之Ribbon(netflix)学习笔记(二)
03、SpringCloud之Ribbon(netflix)学习笔记(二)
03、SpringCloud之Ribbon(netflix)学习笔记(二)
|
负载均衡 网络协议 算法
03、SpringCloud之Ribbon(netflix)学习笔记(一)
03、SpringCloud之Ribbon(netflix)学习笔记(一)
03、SpringCloud之Ribbon(netflix)学习笔记(一)
|
负载均衡 中间件 应用服务中间件
SpringCloud-6-Netflix-6-Ribbon
SpringCloud Ribbon是SpringCloud基于Netfix Ribbon实现的一套客户端负载均衡工具。
101 0
SpringCloud-6-Netflix-6-Ribbon
|
负载均衡 算法 应用服务中间件
SpringCloud-03 Netflix Ribbon学习笔记
SpringCloud-03 Netflix Ribbon学习笔记
SpringCloud-03 Netflix Ribbon学习笔记
|
缓存 监控 算法
SpringCloud-05 Hystrix学习笔记
SpringCloud-05 Hystrix学习笔记
SpringCloud-05 Hystrix学习笔记
SpringCloud - Hystrix(七)
SpringCloud - Hystrix(七)
91 0
SpringCloud - Hystrix(七)
|
微服务
SpringCloud - Hystrix(五)
SpringCloud - Hystrix(五)
151 0
SpringCloud - Hystrix(五)