Spring Cloud 学习笔记06----断路器(Hystrix)(Finchley版本)

本文介绍了SpringCloud中的断路器组件Hystrix,用于防止级联故障。在微服务架构中,Hystrix通过断路器模式在服务调用失败达到一定阈值时,打开断路器,返回错误响应,避免系统资源被长时间占用。文中展示了如何在SpringCloud项目中引入Hystrix,并通过一个快速入门示例说明其工作原理。
摘要由CSDN通过智能技术生成

简介

接上一篇Spring Cloud 学习笔记04----服务消费者(RestTemplate+Ribbon(客户端负载均衡)),接下来我们来学习另外一个组件 断路器(Hystrix)。
在微服务架构中,我们将系统拆分成很多个独立服务单元,服务与服务之间通过RPC的方式调用,在Spring Cloud 中可以通过RestTemplate+Ribbon 或者Feign 的方式调用。为了保证高可用性,单个服务通常会集群部署。这样就有可能因为网络原因或者是依赖服务自身问题出现调用故障或延迟,而这些问题会直接导致调用方的对外服务也出现延迟,若此时调用方的请求不断增加,最后等待出现故障的依赖方响应形成任务积压,最终导致自身服务的瘫痪。

断路器(Hystrix)简介

Netflix的创造了一个调用的库Hystrix实现了断路器图案。在微服务架构中,通常有多层服务调用。
如图所示,微服务图

微服务图
较低级别的服务中的服务故障可能导致用户级联故障。当对特定服务的调用的不可用达到一个阀值时(Hystrix中的默认值为5秒内的20次故障),断路器打开,向调用方返回一个错误响应,而不是长时间的等待。这样就不会使得线程因调用故障服务被长时间占用不释放,避免了故障在分布式系统中的蔓延。
如下图. Hystrix回退防止级联故障

在这里插入图片描述

快速入门

在使用Spring Cloud Hystrix 实现断路器之前。首先,我们先构建一个服务调用关系。
我们以上一篇的项目为基础,首先启动如下项目:
eureka-server 工程:服务注册中心,端口1111
order-provider 工程: order-service的服务,两个实例启动端口分别是8081 和8082
service-ribbon 工程:使用Ribbon实现的服务消费者,端口为8764。
在未加入断路器之前,关闭8081的实例,发送GET请求到http://localhost:8764/getOrderService,可以看到如下输出
在这里插入图片描述

引入Hystrix。

  1. 在service-ribbon 工程的pom.xml 引入 spring-cloud-starter-hystrix 依赖
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
		</dependency>
  1. 在service-ribbon 工程的主类ServiceRibbonApplication中使用@EnableCircuitBreaker注解开启断路器功能:
@SpringBootApplication
@EnableEurekaClient    //ribbon
@EnableCircuitBreaker  //断路器
@SpringCloudApplication
public class ServiceRibbonApplication {

	public static void main(String[] args) {
		SpringApplication.run(ServiceRibbonApplication.class, args);
	}

	@Bean
	@LoadBalanced  //开启负载均衡
	RestTemplate restTemplate() {
		return new RestTemplate();
	}
}

PS: 这里可以使用Spring Cloud应用中的@SpringCloudApplication注解来修饰应用主类,该注解的具体定义如下所示。可以看到,该注解中包含了上述我们所引用的三个注解, 这也意味着一个Spring Cloud 标准应用包含服务发现以及断路器。

。。。。。。。。。。。。。。。。。


版权原因,完整文章,请参考如下:Spring Cloud 学习笔记06----断路器(Hystrix)(Finchley版本)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值