在Fegin中使用熔断保护

原理

在微服务架构中,不同的业务被划分成不同的 微服务,这些微服务通过相互调用进行通信,每个微服务运行在不同的进程中,这样就可能出现一种情况,消费者调用提供者,提供者服务出现网络延迟或者错误,消费者服务也会因提供服务无法相应出现延迟;当消费服务被更多的被调用,而服务消费者因为延迟的问题,tomcat中占用的线程资源不会释放,这样会导致更多的线程被消耗,直至tomcat资源耗尽,这会导致严重的问题——其他的服务不能正常提供服务(雪崩效应)

为了解决这类问题,Hystrix横空出世,他封装了每个依赖,使依赖相互隔离,当延迟情况发生时,他便会被限制在资源中,并包含回退逻辑,该逻辑决定在依赖发生任何类型故障时做出相应响应。

简单实践

拓扑图:

 

实验目的:当服务提供者不可用时,配置了Hystrix的客户端将会进行熔断保护,回调失败处理类 

步骤:

前提:有fegin实现restful的声明式服务调用的项目基础

可参考:声明式服务调用客户端fegin_杜小白也想的美的博客-CSDN博客

以下都是对服务消费者的配置

1、在服务消费者中添加hystrix-client依赖

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

2、将服务消费者中yml文件添加熔断配置——开启熔断配置

server:
  port: 8764    #配置端口号
spring:
  application:
    name: hystrix-client   #指定用户名
feign:          #开启熔断配置
  circuitbreaker:
    enabled: true
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7000/eureka

3、在启动类中中添加@EnableHystrix

 4、在service包中新建失败处理逻辑类TestSerivceImpl,并实现@FeginClient注解接口

@Component
public class TestServiceImpl implements TestService{
    @Override
    @RequestMapping("/hi")
    public String hi() {
        return "bad request";
    }

    @Override
    public String hi(String id) {
        return String.format("bad request is :%s",id);
    }
}

5、将service包的TestService类中@FeginClient注解中增加fallback属性配置

参数说明:

value:调用的微服务名称——与此微服务中的spring-application-name一致

fallback:失败处理类

@Service
@FeignClient(value = "hystrix-provider",fallback = TestServiceImpl.class)
public interface TestService {
     @RequestMapping("/hi")
     public String hi();
     @RequestMapping(value = "/hiTest",method = RequestMethod.GET)
     public String hi(@RequestParam(value = "id" ,required = false) String id);

}

实验效果:

关闭服务提供者如下,熔断保护启动成功

 注意事项:

配置熔断保护时,注意hystrix依赖的版本,低版本可能出现fallback调用不成功,将hystrix换成更高的版本即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杜小白也想的美

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值