七.Hystrix Timeout机制
因为在一个复杂的系统里,可能你的依赖接口的性能很不稳定,有时候2ms,200ms,2s,如果你不对各种依赖接口的调用做超时的控制来给你的服务提供安全保护措施,那么很可能你的服务就被依赖服务的性能给拖死了,大量的接口调用很慢,大量线程就卡死了。
(1)execution.isolation.thread.timeoutInMilliseconds
手动设置timeout时长,一个command运行超出这个时间,就被认为是timeout,然后将hystrix command标识为timeout,同时执行fallback降级逻辑,默认是1000,也就是1000毫秒。
HystrixCommandProperties.Setter().withExecutionTimeoutInMilliseconds(int value)
(2)execution.timeout.enabled
控制是否要打开timeout机制,默认是true
HystrixCommandProperties.Setter().withExecutionTimeoutEnabled(boolean value)
/*** 获取商品信息* @author 张三丰**/ public class GetProductInfoCommand extends HystrixCommand<ProductInfo> {private Long productId;public GetProductInfoCommand(Long productId) {super(Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("ProductInfoService")).andCommandKey(HystrixCommandKey.Factory.asKey("GetProductInfoCommand")).andThreadPoolKey(HystrixThreadPoolKey.Factory.asKey("GetProductInfoPool")).andThreadPoolPropertiesDefaults(HystrixThreadPoolProperties.Setter().withCoreSize(10).withMaxQueueSize(12).withQueueSizeRejectionThreshold(15)) .andCommandPropertiesDefaults(HystrixCommandProperties.Setter().withCircuitBreakerRequestVolumeThreshold(30).withCircuitBreakerErrorThresholdPercentage(40).withCircuitBreakerSleepWindowInMilliseconds(3000).withExecutionTimeoutInMilliseconds(500)//超时时间500毫秒.withFallbackIsolationSemaphoreMaxConcurrentRequests(30)) ); this.productId = productId;}@Overrideprotected ProductInfo run() throws Exception {System.out.println("调用接口,查询商品数据,productId=" + productId); if(productId.equals(-2L)) {Thread.sleep(3000); }return JSONObject.parseObject("数据", ProductInfo.class); }@Overrideprotected ProductInfo getFallback() {ProductInfo productInfo = new ProductInfo();productInfo.setName("降级商品"); return productInfo;}}
转载于:https://www.cnblogs.com/z-3FENG/p/9696477.html
七.Hystrix Timeout机制相关推荐
- Hystrix面试 - 基于 timeout 机制为服务接口调用超时提供安全保护
Hystrix面试 - 基于 timeout 机制为服务接口调用超时提供安全保护 一般来说,在调用依赖服务的接口的时候,比较常见的一个问题就是超时.超时是在一个复杂的分布式系统中,导致系统不稳定,或者 ...
- SpringCloud系列七:Hystrix 熔断机制(Hystrix基本配置、服务降级、HystrixDashboard服务监控、Turbine聚合监控)...
声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:Hystrix 熔断机制 2.具体内容 所谓的熔断机制和日常生活中见到电路保险丝是非常相似的,当出现了问题之后,保险丝 ...
- 从源码分析Hystrix工作机制
作者:vivo互联网服务器团队-Pu Shuai 一.Hystrix解决了什么问题? 在复杂的分布式应用中有着许多的依赖,各个依赖都难免会在某个时刻失败,如果应用不隔离各个依赖,降低外部的风险,那容易 ...
- Hystrix面试 - 基于 Hystrix 信号量机制实现资源隔离
Hystrix面试 - 基于 Hystrix 信号量机制实现资源隔离 Hystrix 里面核心的一项功能,其实就是所谓的资源隔离,要解决的最最核心的问题,就是将多个依赖服务的调用分别隔离到各自的资源池 ...
- The Hystrix timeout of XXms for the command XX-XX is set lower than the combination of the
2019独角兽企业重金招聘Python工程师标准>>> The Hystrix timeout of XXms for the command XX-XX is set lower ...
- SpringCloud工作笔记069---The Hystrix timeout of 60000ms for the command sc-auth is set lower than the
JAVA技术交流QQ群:170933152 这个看源码就能看的很明白,这个警告是这个意思,当断路器(Hystrix)设置的超时时间,要比Ribbon设置的超时时间长的时候 就会报这个错误. 大家的实际 ...
- elasticsearch search timeout机制
一.timeout timeout:默认无timeout,latency平衡completeness, 手动指定timeout: timeout=10ms,timeout=1s,timeout=1m ...
- 关于Hystrix超时机制和线程状态的测试观察和个人理解
作者:未完成交响曲,资深Java工程师!目前在某一线互联网公司任职,架构师社区合伙人! 我们在使用Hystrix时,大部分情况下都是直接基于SpringCloud的相关注解来完成请求调用的.我们有个项 ...
- ES中搜索结果各属性说明介绍,以及搜索中的timeout机制讲解(来自学习资料,34节)
1.属性说明和介绍 执行命令: GET /test_index/test_type/_search?timeout=1s 运行后的结果如下: {"took": 4,"ti ...
最新文章
- Hive中文注释乱码解决方案
- openstack管理员手册下载_城市绿心森林公园app下载-城市绿心森林公园客户端下载v1.1 安卓版...
- java集合类根接口:Collection和Map
- JS中的this的应用总结
- core data firing fault
- 语言舒尔特方格程序_有效提升孩子注意力的方法,舒尔特方格训练法,简单有效...
- 关于游戏排行榜设计开发的一些总结
- c语言 乘除法优先级,运算符运算符优先级 - C语言教程
- 信息学奥赛一本通(1281:最长上升子序列)
- Python实战——2048
- 虚拟服务器的安全日志,虚拟主机日志分析方法
- 编程书籍阅读随谈(第一篇)
- ssm校园帮代服务系统的设计与实现答辩PPT模板
- Java新职篇:什么是键入程序
- js判断手机横竖屏【转】
- 输入年份和月份输出该月有多少天python_输入一个年份和月份,打印出该月份有多少天(考虑闰年),用switch语句编程...
- opencv 数据库裁剪图片
- 香港服务器需要如何来维护呢?
- android读写access数据库,Android中利用远程Microsoft Access数据库应用程序
- cup过高是什么意思_CPU占用过高怎么办? 每日一答