SpringCloud学习笔记-Hystrix熔断器

      摘自官网http://springcloud.cc的定义:“熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。

      在微服务框架内一个接口可能就是一个微服务, 各个服务之间相互依赖, 假设某个微服务运行缓慢甚至宕掉了, 会阻塞调用者线程,出现类似Android里常见的ANR错误; 即调用者进程无法释放资源,导致进程占用内存越来越大直到调用者进程挂掉。 

      熔断器的作用就是即时发现运行异常的服务, 告知调用者不再调用该服务接口, 从而避免调用者服务资源消耗殆尽。  原理如官网插图:


         被调用者服务运行异常时, 调用者服务会执行回调函数。

      SpringCloud框架内微服务间交互使用Rest或Feign, 下面分别介绍集成方法。

1、 RestTemplate + Hystrix:

       在工程pom.xml文件里添加spring-cloud-starter-hytrix依赖。

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

        在程序入口类添加注解@EnableHytrix, 表示加载熔断器功能。

@EnableEurekaClient
@SpringBootApplication
@EnableHystrix
public class SpringCloudConsumerApplication {

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

	@LoadBalanced
	@Bean
    RestTemplate restTemplate() {
		return new RestTemplate();
	}
}
        改造接口服务类



        运行当前工程, 并在浏览器内输入http://localhost:11000/consumer?param="hytrix" ,   浏览器显示:

你调用了hello-service1的API,结果是sorry,"hytrix",service-hello1 not responde
        因为没启动呢service-hello1服务, 所以执行了回调函数, 从而避免阻塞调用者线程。


2、Feign + Hystrix

      OpenFeign是自带断路器的, 不用在pom.xml和入口类添加新增引用, 但hytrix默认是关闭的, 需要设置feign.hystrix.enabled=true。打开SrpingCloudFeignDemo工程, 修改application.yml。

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:10001/eureka/
server:
  port: 12000
spring:
  application:
    name: service-feign-consumer
feign:
  hystrix:
    enabled: true

       修改外部服务接口类, 在注解@FeignClient里添加回调类。


       实现接口类ServiceHello1,  注意ServiceHello1Impl函数参数跟接口类的区别!!!

       启动当前工程, 这是还没运行service-hello1服务。

在浏览器输入http://localhost:12000/hello?param="this is feigndemo“后, 浏览器显示:

sorry, "this is feigndemo" service-hello1 not responde



参考代码: http://download.csdn.net/download/brycegao321/10138936







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值