企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
#### 服务容错 Hystrix - 场景举例 > 在微服务架构里,一个系统会有很多的服务,比如:订单服务在一个业务流程里需要调用三个服务。现在假设订单服务自己最多只有100个线程可以处理请求,然后呢,积分服务不幸的挂了,每次订单服务调用积分服务的时候,都会卡住几秒钟,然后抛出—个超时异常。 - 如下图所示,会造成服务雪崩 ![](https://box.kancloud.cn/0f2f3b287d864edd4d088f808a1d239f_778x386.png) > 这么多服务互相调用,要是不做任何保护的话,某一个服务挂了,就会引起连锁反应,导致别的服务也挂。比如积分服务挂了,会导致订单服务的线程全部卡在请求积分服务这里,没有一个线程可以工作,瞬间导致订单服务也挂了,其他服务请求订单服务全部会卡住,无法响应。 - 这时候可以用到Hystrix进行熔断降级处理,并且返回特定的数据给调用方 ![](https://box.kancloud.cn/657395ef9fbfb371bf15aff5bed48bc8_751x134.png) - ProductFeignClientHystrix.java 处理熔断的类 ``` //降级服务 @Service public class ProductFeignClientHystrix implements ProductFeignClient { @Override public List<Product> listProducts() { List<Product> result = new ArrayList<>(); result.add(new Product(0, "产品服务不可用", 0)); return result; } } ``` - Hystrix默认超时时间是1000毫秒也就是1秒 > 源码 com.netflix.hystrix.HystrixCommandProperties ![](https://box.kancloud.cn/9eb5ee11c7cc521cac5ab0be86aeb9cf_740x120.png) - 既然是1秒,那测试的时候,可以让其sleep(2000),看Hystrix是否有效 ![](https://box.kancloud.cn/5f547b86443121a005854fe1d8d54359_468x179.png) - 浏览器测试结果,熔断降级处理成功,返回友好界面以及响应处理 ![](https://box.kancloud.cn/59eda7dd23a320fc6e9e8bf2ca41b132_961x185.png) - 也可以自己手动设置超时时间 ``` hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds = 3000 ```