文档章节

谈 Hystrix 与 Hystrix写入类

Marvel哈
 Marvel哈
发布于 06/11 20:37
字数 711
阅读 2
收藏 0

Hystrix服务保护框架有 服务降级,服务熔断,服务隔离

降级就是比如一个方法突然访问了几十万次的时候,线程处理不过来,然后返回给用户一个友好的提示。

熔断一般跟降级一起用,就是给某一个方法设置一个阈值,比如1000,当它达到这个极限的时候,用服务降级给它返回一个友好的提示。

先说一下:当前类某一个方法发生雪崩效应的时候,剩下的方法也会进不去。
雪崩效应 默认情况下只有一个线程池处理所有请求,如果在高并发情况下,所有的客户端请求堆积到一个服务接口上,
就会产生所有的线程去处理该服务接口,可能会导致部分服务无法运行

隔离就是重启一个线程池,让方法隔离,重启一个线程池,与别的方法互不影响。

实现Hystrix 在需要的方法上加 

@HystrixCommand(fallbackMethod = "OrderGetUserFallBack")  fallbackMethod 指的是发生雪崩后返回的友好提示方法

pom     启动类前加   @EnableHystrix

<!-- hystrix断路器 -->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

上面讲的方法实现坏处就是让代码太过冗余,下面是给它写成类

@Component
public class OrderFallback extends BaseApiService implements Orderfegin {
    @Override
    public User getMember(String name) {
        return null;
    }

    @Override
    public ResponseBase getUserInfo() {
        return setResultError("现在访问人数过多,服务降级,请稍后重试");
    }
}

@FeignClient注解不加的话会报错找不到会员member别名服务

然后加上fallback

   public ResponseBase OrderGetUserInfoHyst() {
        System.out.println("OrderGetUserInfoHyst"+"当前线程池名称"+Thread.currentThread().getName());
        return orderfegin.getUserInfo();
    }

隔离应该是将 return隔离出来 而上面那种方法连输出语句一起隔离了

Hystrix禁止服务超时时间最好不要禁掉,可以把时间设置长一点 默认的超时时间是1s,ribbon也是,测试feign超时和雪崩不要加

ribbon:
  ###指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间。
  ReadTimeout: 5000
  ###指的是建立连接后从服务器读取到可用资源所用的时间。
  ConnectTimeout: 5000

hystrix:
  command:
    default:  #default全局有效,service id指定应用有效
      execution:
        timeout:
          #如果enabled设置为false,则请求超时交给ribbon控制,为true,则超时作为熔断根据
        isolation:
          thread:
            timeoutInMilliseconds: 5000 #断路器超时时间,默认1000ms

 

© 著作权归作者所有

Marvel哈
粉丝 1
博文 20
码字总数 5396
作品 0
运城
私信 提问
自定义处理 hystrix 历史监控数据

在 spring cloud 中引入 hystrix 使我们得以在内部依赖的某个服务异常时能够快速失败和做降级处理,而不至于级联影响到本身对其他接口的服务。 但是 hystrix 的配置还是蛮的,比如线程池隔离...

holysu
2018/05/17
0
0
聊聊HystrixEventStream

序 本文主要研究一下HystrixEventStream HystrixEventStream hystrix-core-1.5.12-sources.jar!/com/netflix/hystrix/metric/HystrixEventStream.java 这个接口定义了一个observe方法,返回的......

go4it
2018/07/05
26
0
聊聊HystrixPropertiesStrategy HystrixPropertiesChainedProperty

本文主要研究一下HystrixPropertiesStrategy HystrixPropertiesStrategy hystrix-core-1.5.12-sources.jar!/com/netflix/hystrix/strategy/properties/HystrixPropertiesStrategy.java 提供获......

xiaomin0322
06/03
49
0
Feign对hystrix的支持

Feign Hystrix Fallbacks 官网解释 Hystrix supports the notion of a fallback: a default code path that is executed when they circuit is open or there is an error. To enable fallba......

FantJ
2017/12/03
0
0
Spring Cloud 断路器排查

问题 Task java.util.concurrent.FutureTask@27d69e27 rejected from java.util.concurrent.ThreadPoolExecutor@61d1c14e[Running, pool size = 10, active threads = 10, queued tasks = 0,......

哭哭吓唬你
06/08
14
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
5
0
CSS盒子模型

CSS盒子模型 组成: content --> padding --> border --> margin 像现实生活中的快递: 物品 --> 填充物 --> 包装盒 --> 盒子与盒子之间的间距 content :width、height组成的 内容区域 padd......

studywin
今天
7
0
修复Win10下开始菜单、设置等系统软件无法打开的问题

因为各种各样的原因导致系统文件丢失、损坏、被修改,而造成win10的开始菜单、设置等系统软件无法打开的情况,可以尝试如下方法解决 此方法只在部分情况下有效,但值得一试 用Windows键+R打开...

locbytes
昨天
8
0
jquery 添加和删除节点

本文转载于:专业的前端网站➺jquery 添加和删除节点 // 增加一个三和一节点function addPanel() { // var newPanel = $('.my-panel').clone(true) var newPanel = $(".triple-panel-con......

前端老手
昨天
8
0
一、Django基础

一、web框架分类和wsgiref模块使用介绍 web框架的本质 socket服务端 与 浏览器的通信 socket服务端功能划分: 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn... 根据用户访问...

ZeroBit
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部