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
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Hystrix浅谈的更多相关文章
- 浅谈java类集框架和数据结构(2)
继续上一篇浅谈java类集框架和数据结构(1)的内容 上一篇博文简介了java类集框架几大常见集合框架,这一篇博文主要分析一些接口特性以及性能优化. 一:List接口 List是最常见的数据结构了,主 ...
- AI云原生浅谈:好未来AI中台实践
AI时代的到来,给企业的底层IT资源的丰富与敏捷提出了更大的挑战,利用阿里云稳定.弹性的GPU云服务器,领先的GPU容器化共享和隔离技术,以及K8S集群管理平台,好未来通过云原生架构实现了对资源的灵活 ...
- 浅谈 Fragment 生命周期
版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...
- 浅谈 LayoutInflater
浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...
- 浅谈Java的throw与throws
转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...
- 浅谈SQL注入风险 - 一个Login拿下Server
前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...
- 浅谈WebService的版本兼容性设计
在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...
- 浅谈angular2+ionic2
浅谈angular2+ionic2 前言: 不要用angular的语法去写angular2,有人说二者就像Java和JavaScript的区别. 1. 项目所用:angular2+ionic2 ...
- iOS开发之浅谈MVVM的架构设计与团队协作
今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
随机推荐
- Newtonsoft.Json添加项
JObject jo = (JObject)JsonConvert.DeserializeObject(result); ") { string domain=(jo["data& ...
- sql server中的merge
http://www.cnblogs.com/CareySon/archive/2012/03/07/2383690.html 简介 Merge关键字是一个神奇的DML关键字.它在SQL Server ...
- 【SRM-09 B】撕书II
Description 琉璃手头有一黑一白两本魔法书,一本是<缟玛瑙的不在证明>,另一本是<白色相簿1.5>.传说同时打开这两本书会有奇怪的事情发生.琉璃打开一看,果然非常奇怪 ...
- Andrew NG 机器学习编程作业5 Octave
问题描述:根据水库中蓄水标线(water level) 使用正则化的线性回归模型预 水流量(water flowing out of dam),然后 debug 学习算法 以及 讨论偏差和方差对 该线 ...
- linux 添加并格式化新硬盘
linux挂载磁盘1. 格式化磁盘mkfs -t ext4 /dev/sdb2. 挂载mount /dev/xvdb /home3. 查看磁盘对应的uuidblkid4. 加入开机自动挂载,在/etc ...
- 导弹拦截 dp
n∗lognn*lognn∗logn写法,lis[i]的意义为:所有最长上升子序列长度为i的位置上的最小a数组元素值lis[i]的意义为:所有最长上升子序列长度为i的位置上的最小a数组元素值lis[i ...
- icon图标制作网站推荐
推荐链接 easyicon
- 开源RPC Jupiter
ref https://github.com/fengjiachun/doc/tree/master/netty https://budairenqin.iteye.com/ https://blog ...
- ReentrantLock(重入锁)的使用
//效果和synchronized一样,都可以同步执行,lock方法获得锁,unlock方法释放锁public class MyService { private Lock lock = new Re ...
- Redis随笔
dump.rdb:快照文件 删除这个文件 rm -f dump.rdb 第一步:创建6个redis实例,端口号从7001~7006 第二步:修改redis的配置文件 1.修改端口号 修改redis.c ...