Hystrix服务降级,熔断,隔离

服务降级:

高并发情况下,为了不让客户端一直等待,直接返回给客户端一个友好提示(不回去处理请求,调用fallBack本地方法);

比如12306抢票(显示正在排队,前面还有xx人),某宝秒杀(返回已售罄等)。

服务熔断:

高并发情况下,如果请求达到了服务请求数达到了一定的极限(阈值),为了保护服务,自动开启服务保护功能,使用服务降级的方式直接返回一个友好的请求,和服务降级一起使用。

服务隔断:

高并发情况下,将各个服务接口隔离开。

我们用Jmeter测试带有注解@HystrixCommand的接口,并发数20000,同时访问其他接口是没有任何问题的,这就是Hystrix将接口隔离开了,高并发情况下不影响其他接口的调用。

 

Hysyrix的使用:

加入依赖:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
    <version>2.2.1.RELEASE</version> 
</dependency>

启动类添加@EnableHystrix注解

需要隔断的高并发接口添加@HystrixCommand("orderBack")

回执消息接口:

public BaseResponse orderBack(@RequestParam(value = "name") String name, @RequestParam(value = "age") String age){
    return  BaseResponse.success("服务器繁忙,请稍后重试!");
}

我们使用Jmeter进行orderToMember进行2000的并发测试,同事手动输入地址访问此接口,可以看到一下结果表示成功了。熔断机制的目的是为了在高并发的情况下保护服务,否则就会造成服务的雪崩效应。

 

这里我在测试的时候,增加并发数量到100000的话,后台发生报错:

com.netflix.hystrix.exception.HystrixRuntimeException: orderToMember fallback execution rejected.

这个错误应该是由于回执接口的并发数量也达到了阈值。我上面增加了阈值到5000,但不管用。从网上也没找到什好的解决办法。

https://github.com/Netflix/Hystrix/issues/796

Git上讨论的也是含糊其辞,若是有解决办法,请下方评论区指教。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值