SpringCloud Hystrix断路器

SpringCloud提供了熔断机制,当多个服务互相关联,某个服务坏掉,会影响关联的服务导致大面积失败,称为雪崩效应。
在这里插入图片描述

Hystrix断路器提供了服务降级、服务隔离等机制保护系统。

  • 服务降级

默认情况下,Cloud Hystrix要求1秒钟响应,超过1秒被认为失败,会自动调用“备胎”方法。

  • 服务隔离机制

当服务在某个段时间内(默认5S),如果处理失败的频率达到指定比率(默认50%),这是Hystrix就要将断路器阀Open(断开服务),又过5S会将阀半开状态,如果处理成功率达到指定标准,会将断路器阀Close,未达到标准再Open。

服务降级使用方法

  • 1普通服务降级使用
  • 在pom.xml导入spring-cloud-starter-netflix-hystrix
  • 在启动类前使用@EnableCircuitBreaker或@EnableHystrix
  • 在服务处理方法前使用@HystrixCommand(fallbackMethod=“loadDirectionFallBack”)
@GetMapping("/direction/{id}")
@HystrixCommand(fallbackMethod="loadDirectionFallBack")
public YdmaResult loadDirection(@PathVariable("id")int id) {
    return directionService.loadDirection(id);
}

//fallback方法参数和原服务方法保持一致
public YdmaResult loadDirectionFallBack(int id) {
    YdmaResult result = new YdmaResult();
    result.setCode(YdmaConstant.ERROR1);
    result.setMsg(YdmaConstant.ERROR_MSG);
    return result;
}
  • 默认处理时间1S,可以通过下面配置改变
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=2000

2 Feign服务降级使用

通过feign接口模式调用服务,发生延迟或异常,默认是不会触发Hystrix服务降级的,需要进行设置和开启。

  1. 编写Feign接口实现类,在实现类方法中写默认FallBack返回逻辑.

提示:实现组件要追加@Component扫描标记

  1. 将Feign接口实现类给@FeignClient的fallback属性指定
@FeignClient(name="YDMA-DIRECTION",fallback=DirectionFeignRemoteFallBack.class)
public interface DirectionFeignRemote {

    @GetMapping("/direction/get")
    public YdmaResult loadDirection(int id);

    @GetMapping("/direction/{id}")
    public YdmaResult loadDirection1(@PathVariable("id")int id);

    @GetMapping("/direction/all")
    public YdmaResult loadAllDirections();
}
  1. 在application.properties配置中打开Feign启用Hystrix设置

在A、B、C默认结合启用,但是从D以后默认关闭,需要打开设置

feign.hystrix.enabled=true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值