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
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

Hystrix浅谈的更多相关文章

  1. 浅谈java类集框架和数据结构(2)

    继续上一篇浅谈java类集框架和数据结构(1)的内容 上一篇博文简介了java类集框架几大常见集合框架,这一篇博文主要分析一些接口特性以及性能优化. 一:List接口 List是最常见的数据结构了,主 ...

  2. AI云原生浅谈:好未来AI中台实践

    AI时代的到来,给企业的底层IT资源的丰富与敏捷提出了更大的挑战,利用阿里云稳定.弹性的GPU云服务器,领先的GPU容器化共享和隔离技术,以及K8S集群管理平台,好未来通过云原生架构实现了对资源的灵活 ...

  3. 浅谈 Fragment 生命周期

    版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...

  4. 浅谈 LayoutInflater

    浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...

  5. 浅谈Java的throw与throws

    转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...

  6. 浅谈SQL注入风险 - 一个Login拿下Server

    前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...

  7. 浅谈WebService的版本兼容性设计

    在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...

  8. 浅谈angular2+ionic2

    浅谈angular2+ionic2   前言: 不要用angular的语法去写angular2,有人说二者就像Java和JavaScript的区别.   1. 项目所用:angular2+ionic2 ...

  9. iOS开发之浅谈MVVM的架构设计与团队协作

    今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...

随机推荐

  1. C#一例绘制字体不清晰的解决办法

    public static Bitmap GetPieWithText(String text, Color color, Color fontColor,Font font) { ; Bitmap ...

  2. C# 异步委托(AP、APM)

    Ø  前言 C# 异步委托也是属于异步编程中的一种,可以称为 Asynchronous Programming(异步编程)或者 Asynchronous Programming Model(异步编程模 ...

  3. [译]Domain Events Pattern Example

    原文 完整源码 本文展示的是一个关于网上调查的项目.想象下,当用户完成了一个调查,我们想通知所有人调查已经结束,分配一个人去检查调用问卷. 领域对象 public class Survey { pub ...

  4. intptr_t 指针

    对于64为系统: typedef  signed char  int8_t; typedef short int int16_t; typedef int int32_t; # if __WORDSI ...

  5. 关于AJAX的基础操作

    AJAX开发 AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX = 异步 Java ...

  6. Docker(四)Dockerfile入门

    摘自: https://mp.weixin.qq.com/s/Im4axroExgrJoj05g_TQ-w 一.Docker的工作流程 Docker组件协作运行容器可以分为以下几个过程: Docker ...

  7. webstorm破解版

    链接:https://www.cnblogs.com/LUA123/p/8452501.html#undefined

  8. VUE项目安装

    连接转载:https://www.cnblogs.com/Colwill-Blog/p/6682091.html 刚刚开始学习Vue.js.今天分享一下我的Vue项目安装过程. 我是windows系统 ...

  9. Element Tabs 组件中使用 ve-histogram组件渲染不出来(已解决)

    Element Tabs 组件中使用 ve-histogram组件渲染不出来 发现问题提了issue,饿了么前端“西瓜”同学很快做了回复,饿了么大前端团队有沉淀很专业,赞. tip: GitHub 的 ...

  10. 闭包可以存储变量(下标) 小demo

    点击每一行弹出其下标