内容简介:在分布式系统中,每个服务都可能会调用很多其他服务,被调用的那些服务就是依赖服务,有的时候某些依赖服务出现故障也是很正常的。Hystrix 可以让我们在分布式系统中对服务间的调用进行控制,加入一些调用延迟或者依赖故障的容错机制。Hystrix 通过将依赖服务进行资源隔离,进而阻止某个依赖服务出现故障时在整个系统所有的依赖服务调用中进行蔓延;同时Hystrix 还提供故障时的 fallback 降级机制。
熔断器hystrix
在分布式系统中,每个服务都可能会调用很多其他服务,被调用的那些服务就是依赖服务,有的时候某些依赖服务出现故障也是很正常的。
Hystrix 可以让我们在分布式系统中对服务间的调用进行控制,加入一些调用延迟或者依赖故障的容错机制。
Hystrix 通过将依赖服务进行资源隔离,进而阻止某个依赖服务出现故障时在整个系统所有的依赖服务调用中进行蔓延;同时Hystrix 还提供故障时的 fallback 降级机制。
总而言之,Hystrix 通过这些方法帮助我们提升分布式系统的可用性和稳定性。
feign开启熔断功能
feign可以用okhttp代替传统的httpclient,性能更好
feign: hystrix: enabled: true httpclient: enabled: false okhttp: enabled: true
ribbon这块也可以对okhttp进行配置
ribbon.httpclient.enabled=false ribbon.okhttp.enabled=true
hystrix熔断器可以对请求进行重试,对超时时间进行配置等。
hystrix: command: default: execution: timeout: enabled: true isolation: thread: #目前有两个容器实例,单个请求超时5s,+重试>10s,超15s则熔断 timeoutInMilliseconds: 15000 ribbon: #ribbon请求连接的超时时间- 限制3秒内必须请求到服务,并不限制服务处理的返回时间 connectTimeout: 3000 #请求处理的超时时间 下级服务响应最大时间,超出时间消费方(路由也是消费方)返回timeout,超时时间不可大于断路器的超时时间 readTimeout: 5000
feign添加fallback实现默认行为
feign上使用fallback之前,当服务端出现问题时,可以快速响应,并且不会抛出异常,就象为feign加了一层try...cache一样。
使用方式
开始feign.hystrix的功能
feign: hystrix: enabled: true httpclient: enabled: false okhttp: enabled: true
当feign的服务端出现问题时,返回值为fallback的值,你可以自己定,例如:
@Component @Slf4j public class UserClientFallback implements UserClient { @Override public Map getUser(Long id) { logger.info("getUser.error"); return null; } @Override public Map getUsers() { logger.info("getUsers.error.retrun.default"); return ImmutableMap.of("name", "lind", "sex", "male"); } }
调用userclient失败之后,将返回默认的对象
@GetMapping("/api/v1/test") public ResponseEntity<?> userGet() { Map users= userClient.getUsers(); return ResponseUtils.okMessage("success"); }
结果将是默认值
{"status":200,"message":"操作成功","data":{"name":"lind","sex":"male"},"totalRecords":0}
以上所述就是小编给大家介绍的《feign使用hystrix熔断的配置》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 微服务分布式系统熔断实战-为何我们需要API级别熔断?
- 接口请求熔断处理机制
- 聊聊微服务的隔离和熔断
- [译] Istio 熔断器解析
- Spring cloud(4)-熔断(Hystrix)
- 分布式熔断降级平台aegis
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。