feign使用hystrix熔断的配置
程序员文章站
2022-03-25 20:18:11
熔断器hystrix 在分布式系统中,每个服务都可能会调用很多其他服务,被调用的那些服务就是依赖服务,有的时候某些依赖服务出现故障也是很正常的。 Hystrix 可以让我们在分布式系统中对服务间的调用进行控制,加入一些调用延迟或者依赖故障的容错机制。 Hystrix 通过将依赖服务进行资源隔离,进而 ......
熔断器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}
上一篇: 2019全套最新Java视频 免费赠送
推荐阅读
-
使用proxytable 配置解决 vue-cli 的跨域请求问题【推荐】
-
apache中使用.htaccess文件缓存图片的配置方法
-
linux下vsftpd的安装及配置使用详细步骤(推荐)
-
Nginx中的用户认证配置及阻止用户使用代理访问的方法
-
为Node.js程序配置使用Nginx服务器的简明教程
-
详解Nginx服务器中HTTP Headers相关的模块配置使用
-
centos7下NFS使用与配置的步骤
-
在电脑上安装配置使用安卓Android模拟器的方法(图文教程)
-
mysql 查看当前使用的配置文件my.cnf的方法(推荐)
-
Laravel 下配置 Redis 让缓存、Session 各自使用不同的 Redis 数据库