Ribbon 部分
Feign底层默认使用了Ribbon.
Ribbon,使用的是LoadBalanceIntercceptor,对请求的路径进行了拦截,拦截到请求后根据该地址从Nacos列表获取真实的地址替换成真实的Ip地址加端口,因为Client本地会维护一份缓存列表,可以通过该列表取注册中心获取地址。
-
关于拦截器的使用.
Screen Shot 2022-01-17 at 12.11.46 PM.png
-
模拟原理

- Feign参数如何微调?
OpenFeign相对于Feign主要是增加了对于SpringMVC支持.
具体参数如下
private Logger.Level loggerLevel;
private Integer connectTimeout;
private Integer readTimeout;
private Class<Retryer> retryer;
private Class<ErrorDecoder> errorDecoder;
private List<Class<RequestInterceptor>> requestInterceptors;
private Map<String, Collection<String>> defaultRequestHeaders;
private Map<String, Collection<String>> defaultQueryParameters;
private Boolean decode404;
private Class<Decoder> decoder;
private Class<Encoder> encoder;
private Class<Contract> contract;
private ExceptionPropagationPolicy exceptionPropagationPolicy;
feign:
client:
config:
default:
connectioinTimout: 5000
readTimout: 5000
serviceC:
connectioinTimout: 5000
readTimout: 5000
httpclient: # 替换成ApacheClient或者Okhttp
enable: true
compression: # 开启gzip压缩
request:
enabled: true
min-request-size: 10 #默认开启的压缩阀值是10字节
mime-types: text/html,application/xml,application/json
response:
enabled: true
关于参数额微调:
- 采用okhttp替换原生的httpclient,默认使用了gzip压缩.
- 对于个别的服务,设置微调的超时时间和读取时间.
- 接下来就是对于Okhttp的连接池,参数配置了.
网友评论