springCloud学习笔记系列(2)-服务容错保护:Spring Cloud Hystrix

爱⌒轻易说出口 提交于 2019-11-29 23:46:55

1.在微服务架构中,我们将系统拆分为很多个服务,各个服务之间通过注册与订阅的方式相互依赖,由于各个服务都是在各自的进程中运行,就有可能由于网络原因或者服务自身的问题导致调用故障或延迟,随着服务的积压,可能会导致服务崩溃。为了解决这一系列的问题,断路器等一系列服务保护机制出现了。

  断路器本身是一种开关保护机制,用于在电路上保护线路过载,当线路中有电器发生短路时,断路器能够及时切断故障电路,防止发生过载、发热甚至起火等严重后果。

  在分布式架构中,断路器模式的作用也是类似的。

  针对上述问题,Spring Cloud Hystrix 实现了断路器、线路隔离等一系列服务保护功能。它也是基于 Netflix 的开源框架 Hystrix 实现的,该框架的目标在于通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。Hystrix 具备服务降级、服务熔断、线程和信号隔离、请求缓存、请求合并以及服务监控等强大功能

2.引入依赖(在ribbon的客户端的依赖的添加)

<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-hystrix -->

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-hystrix</artifactId>

<version>1.4.6.RELEASE</version>

</dependency>

3.在启动类上添加熔断器开关注解

SpringBootApplication

@EnableEurekaClient

//开启熔断标识

@EnableHystrix

public class OneEurekaClientApplication {

@Bean

@LoadBalanced//让restTemplate具备Ribbon负载均衡的能力。

public RestTemplate restTemplate()

{

return new RestTemplate();

}

 

 

public static void main(String[] args) {

SpringApplication.run(OneEurekaClientApplication.class, args);

}

}

4.在service要调用的客户端链接上的方法加上熔断后的注解

@HystrixCommand(fallbackMethod = "erroMsg")

public String getClientString(){

logger.info("到这里........................getClientString");

return this.restTemplate.getForObject("http://two-client/home/index", String.class);

 

}

public String erroMsg(){

 

return "您请求的接口出现了一点的错误....";

}

5.请求客户端,把two-client关闭,返回的数据


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!