Hystrix 容错保护:RestTemplate、Feign集成Hystrix

一、Hystrix 基本工作组件

1、断路器
Hystrix 检查当前服务的熔断器开关是否开启,若开启,则执行降级服务 getFallback 方法;
2、依赖隔离
若熔断器开关关闭, 则 Hystrix 检查当前服务的线程池是否能接收新的请求,若超过线程池已满, 则执行降级服务 getFallback 方法
3、服务降级
若线程池接受请求,则 Hystrix 开始执行服务调用具体逻辑 run 方法。若服务执行失败, 则执行降级服务 getFallback 方法,并将执行结果上报 Metrics 更新服务健康状况。

二、RestTemplate 集成 Hystrix

1、RestTemplate 服务降级实现步骤
a) 在 pom.xml 文件中添加 Hystrix 依赖 spring-cloud-starter-hystrix;

		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
            <version>2.2.5.RELEASE</version>
        </dependency>

b) 添加降级服务
使用@HystrixCommand(fallbackMethod = “getFallback”),fallbackMethod 是降级服务时使用的方法
这个方法需要返回值一样,参数一样
在这里插入图片描述
c) 在项目入口函数上添加@EnableHystrix;
在这里插入图片描述
d) 启动项目,访问注册中心 http://localhost:7400/getProviderFuture 可以观察到服务 provider 不可用时,实现了服务降级。在这里插入图片描述
2、简化注解
@EnableEurekaClient === @EnableDiscoveryClient
@EnableHystrix === @EnableCircuitBreaker
@SpringCloudApplication===@SpringBootApplication+@EnableDiscoveryClient+@EnableCircuitBreaker

三、Feign 集成 Hystrix

1、Feign 服务降级实现步骤
a) 在 pom.xml 文件中添加 Hystrix 依赖 spring-cloud-starter-hystrix;

		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
            <version>2.2.5.RELEASE</version>
        </dependency>

b) 编写一个@FeignClient 注解的 接口实现类,修改注解@FeignClientfallback 属性指向实现类;
在这里插入图片描述
c) 修改配置文件启用 Feign 中 hystrix 服务降级:

feign:
 hystrix:
 enabled: true

d) 修改入口函数类上的注解。
启动项目,访问注册中心 http://localhost:7500/getProviderFuture,可以观察到服务 provider 不可用时,
实现了服务降级
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值