Feign = RestTemplate + Ribbon + Hystrix
Feign对负载均衡的支持
Feign默认的请求处理时长1s,有时候我们的业务确实执行需要一定时间,这个时候,就需要调整请求处理时长,Feign有自己的配置,但如果配置了Ribbon的超时,则会以Ribbon的为准
#针对的被调用方微服务名称,不加就是全局生效
lagou-service-product:
ribbon:
#请求连接超时时间
#ConnectTimeout: 2000
#请求处理超时时间
#ReadTimeout: 5000
#对所有操作都进行重试
OkToRetryOnAllOperations: true
####根据如上配置,当访问到故障请求的时候,它会再尝试访问一次当前实例(次数由 MaxAutoRetries配置)
####如果不行,就换一个实例进行访问,如果还不行,再换一次实例访问(更换次数由 MaxAutoRetriesNextServer配置)
####如果依然不行,返回失败信息。
MaxAutoRetries: 0 #对当前选中实例重试次数,不包括第一次调用
MaxAutoRetriesNextServer: 0 #切换实例的重试次数
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #负载策略 调整
Feign对熔断器的支持
#开启熔断器功能
feign:
hystrix:
enabled: true
Feign的超时时长设置其实就是Ribbon的超时时长的设置
Hystrix超时时长也是Hystrix的设置
注意:
1.开启Hystrix之后,Feign中的方法都会被进行一个管理,一旦出现问题就进入对应的回退逻辑
2.针对超时这一点,当前有两个超时时间设置(Feign/hystrix),熔断的时候是根据这两个时间的最小值来进行的,即处理时长超过最短的那个超时时间了就熔断进入回退降级逻辑
Feign对请求压缩和响应压缩的支持
feign:
hystrix:
enabled: true
#开启请求响应和压缩
compression:
request:
enabled: true #默认不开启
mime-types: text/html,application/xml,application/json #设置压缩的数据类型,也是默认值
min-request-size: 2048 #设置触发压缩的大小下限,此处也是默认值
response:
enabled: true