zoukankan      html  css  js  c++  java
  • Hystrix浅谈

    Hystrix如何使用很多说明,看了很多博客,却发现能说明一些简单概念的文章就没有.

    所以本文不太回去说如何使用 Hystrix ,但是会简明的说一下 一些概念

    super(Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("ProductInfoService"))

    .andCommandKey(HystrixCommandKey.Factory.asKey("GetProductInfoCommand"))

    .andThreadPoolKey(HystrixThreadPoolKey.Factory.asKey("GetProductInfoPool"))

    .andThreadPoolPropertiesDefaults(HystrixThreadPoolProperties.Setter()

    .withCoreSize(3)

    .withMaximumSize(30)

    .withAllowMaximumSizeToDivergeFromCoreSize(true)

    .withKeepAliveTimeMinutes(1)

    .withMaxQueueSize(12)

    .withQueueSizeRejectionThreshold(15))

    .andCommandPropertiesDefaults(HystrixCommandProperties.Setter()

    .withCircuitBreakerRequestVolumeThreshold(30)

    .withCircuitBreakerErrorThresholdPercentage(40)

    .withCircuitBreakerSleepWindowInMilliseconds(3000)

    .withExecutionTimeoutInMilliseconds(500)

    .withFallbackIsolationSemaphoreMaxConcurrentRequests(30))

    );

    以上代码是 Hystrix的一些设置.

    HystrixCommandGroupKey.Factory.asKey("ProductInfoService")

    HystrixCommandGroupKey 是用来 声明一个服务接口的,,默认 HystrixCommandGroupKey 就是线程池名称

    HystrixCommandKey 默认是 类名,一般设置为类名+Comand就 ok

    HystrixThreadPoolKey 用来设置线程池 的,如果不设置 ,默认 HystrixCommandGroupKey 就是线程池名称

    withCoreSize 设置线程池的线程数量

    withMaximumSize 设置线程池的最大数量

    withAllowMaximumSizeToDivergeFromCoreSize 允许动态调整线程池的数量

    withKeepAliveTimeMinutes 线程池中的线程多久不使用就回收

    withMaxQueueSize 设置缓存队列的最大大小

    withQueueSizeRejectionThreshold 设置缓存队列的大小

    withMaxQueueSize withQueueSizeRejectionThreshold 哪个值小,哪个就是 缓存队列的大小

    withCircuitBreakerRequestVolumeThreshold 设置断路器10秒内的 流量阀值

    举个例子,可能看起来是这样子的,要求在10s内,经过短路器的流量必须达到30个;在10s内,经过短路器的流量才10个,那么根本不会去判断要不要短路

    withCircuitBreakerErrorThresholdPercentage  断路器统计到的异常调用的占比超过了一定的阈值

    比如说在10s内,经过短路器的流量(你,只要执行一个command,这个请求就一定会经过短路器),达到了30个;同时其中异常的访问数量,占到了一定的比例,比如说40%的请求都是异常(报错,timeout,reject),会开启短路

    withCircuitBreakerSleepWindowInMilliseconds: 断路器打开,尝试 会half-open 请求的等待时间

    断路器打开的时候,所有经过该断路器的请求全部被短路,不调用后端服务,直接走fallback降级 

    经过了一段时间之后,HystrixCommandProperties.circuitBreakerSleepWindowInMilliseconds(),会half-open,让一条请求经过短路器,看能不能正常调用。如果调用成功了,那么就自动恢复,转到close状态

    短路器,会自动恢复的,half-open,半开状态

    使用 github地址:

    本人觉得 github 已经说明的非常详细了

    https://github.com/Netflix/Hystrix/wiki/How-To-Use#Hello-World



    作者:wuy
    链接:https://www.jianshu.com/p/cc22d5a70d79
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
     
  • 相关阅读:
    js判断各个浏览器
    js中的全局函数
    js正则表达式大全(转)
    js url编码函数
    原生的ajax(json)
    原生js拖拽
    js浏览器兼容
    何为反向代理、正向代理
    dom元素循环绑定事件的技巧
    media 适屏
  • 原文地址:https://www.cnblogs.com/xingzc/p/9152311.html
Copyright © 2011-2022 走看看