当前位置:网站首页>【云原生】微服务之Feign自定义配置的记录
【云原生】微服务之Feign自定义配置的记录
2022-07-05 05:36:00 【小威要向诸佬学习呀】
前言:
最近在学习微服务相关的知识,看了黑马的相关课程,将关于Feign的知识又总结了一些,希望能帮到各位小伙儿们以及加深下自己的印象
如果文章有什么需要改进的地方还请大佬多多指教
小威先感谢大家的支持了
🥤Feign的自定义配置
Feign自定义配置的方式有两种:java代码配置 和 属性配置,以下将介绍这两种配置。
这里我们先以Feign日志配置为例,Feign默认不打印任何日志,在远程调用发生异常时,后续调试会想要查看整个请求的细节,这时候可以配置Feign日志来记录请求。
Feign的日志级别
1.NONE(默认值):不记录任何日志
2.BASIC:仅记录请求方法、URL、响应状态码以及执行时间
3.HEADERS:记录BASIC级别的基础上,记录请求和响应的header
4.FULL:记录请求和响应的header、body和元数据
当然除了日志以外也有其他的,以下以表格的形式呈现:
| 类型 | 作用 | 说明 |
|---|---|---|
| feign.Logger.Level | 修改日志级别 | 包含四种不同的级别:NONE、BASIC、HEADERS、FULL |
| feign.codec.Decoder | 响应结果的解析器 | http远程调用的结果做解析,例如解析json字符串为java对象 |
| feign.codec.Encoder | 请求参数编码 | 将请求参数编码,便于通过http请求发送 |
| feign. Contract | 支持的注解格式 | 默认是SpringMVC的注解 |
| feign. Retryer | 失败重试机制 | 请求失败的重试机制,默认是没有,不过会使用Ribbon的重试 |
一般情况下,默认值就能满足我们使用,如果要自定义时,只需要创建自定义的@Bean覆盖默认Bean即可。
配置文件
基于配置文件修改feign的日志级别可以针对单个服务:
feign:
client:
config:
userservice: # 针对某个微服务的配置
loggerLevel: FULL # 日志级别
也可以针对所有服务:
feign:
client:
config:
default: # 这里用default就是全局配置,如果是写服务名称,则是针对某个微服务的配置
loggerLevel: FULL # 日志级别
而日志的级别分为四种:
- NONE:不记录任何日志信息,这是默认值。
- BASIC:仅记录请求的方法,URL以及响应状态码和执行时间
- HEADERS:在BASIC的基础上,额外记录了请求和响应的头信息
- FULL:记录所有请求和响应的明细,包括头信息、请求体、元数据。

🧁Java代码配置方式
也可以基于Java代码来修改日志级别,先声明一个类,然后声明一个Logger.Level的对象:
public class DefaultFeignConfiguration {
@Bean
public Logger.Level feignLogLevel(){
return Logger.Level.BASIC; // 日志级别为BASIC
}
}
如果要全局生效,将其放到启动类的@EnableFeignClients这个注解中:
@EnableFeignClients(defaultConfiguration = DefaultFeignConfiguration .class)
如果是局部生效,则把它放到对应的@FeignClient这个注解中:
@FeignClient(value = "userservice", configuration = DefaultFeignConfiguration .class)
Feign的调优
Feign性能调优本⾝的性能就很⾼,但还是可以优化。
feign底层的客户端实现:
URLConnection:默认实现,不支持连接池
Apche HttpClient:支持连接池
OKHttp:支持连接池
因此优化feign的性能的点有
使用连接池代替默认的URLConnection
日志级别:同时⽇志的级别不同,消耗的性能也不同,尽量使用Basic级别或none
可以使⽤Apche HttpClient 或 OKHttp进⾏优化
Feign底层发起http请求,依赖于其它的框架。其底层客户端实现包括:
•URLConnection:默认实现,不支持连接池
•Apache HttpClient :支持连接池
•OKHttp:支持连接池
因此提高Feign的性能主要手段就是使用连接池代替默认的URLConnection。
这里我们用Apache的HttpClient来演示。
第一步 引入依赖
在order-service的pom文件中引入Apache的HttpClient依赖:
<!--httpClient的依赖 -->
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
</dependency>
2)配置连接池
在order-service的application.yml中添加配置:
feign:
client:
config:
default: # default全局的配置
loggerLevel: BASIC # 日志级别,BASIC就是基本的请求和响应信息
httpclient:
enabled: true # 开启feign对HttpClient的支持
max-connections: 200 # 最大的连接数
max-connections-per-route: 50 # 每个路径的最大连接数
在FeignClientFactoryBean中的loadBalance方法中打断点,并Debug方式启动order-service服务,底层就是Apache HttpClient。
1.日志级别尽量用basic
2.使用HttpClient或OKHttp代替URLConnection
① 引入feign-httpClient依赖
② 配置文件开启httpClient功能,设置连接池参数

文章到这里就结束了,如果有什么疑问的地方请指出
再次感谢各位小伙伴儿们的支持
边栏推荐
- Web APIs DOM node
- lxml. etree. XMLSyntaxError: Opening and ending tag mismatch: meta line 6 and head, line 8, column 8
- Yolov5 adds attention mechanism
- Palindrome (csp-s-2021-palin) solution
- Configuration and startup of kubedm series-02-kubelet
- Zheng Qing 21 ACM is fun. (3) part of the problem solution and summary
- Sword finger offer 05 Replace spaces
- 全排列的代码 (递归写法)
- Developing desktop applications with electron
- Educational Codeforces Round 116 (Rated for Div. 2) E. Arena
猜你喜欢

Little known skills of Task Manager
![[jailhouse article] jailhouse hypervisor](/img/f4/4809b236067d3007fa5835bbfe5f48.png)
[jailhouse article] jailhouse hypervisor

Gbase database helps the development of digital finance in the Bay Area

网络工程师考核的一些常见的问题:WLAN、BGP、交换机

Improvement of pointnet++

Sword finger offer 05 Replace spaces

Sword finger offer 58 - ii Rotate string left

Time of process

Web APIs DOM node
![[jailhouse article] look mum, no VM exits](/img/fe/87e0851d243f14dff96ef1bc350e50.png)
[jailhouse article] look mum, no VM exits
随机推荐
Improvement of pointnet++
Alu logic operation unit
Gbase database helps the development of digital finance in the Bay Area
Cluster script of data warehouse project
YOLOv5-Shufflenetv2
【Jailhouse 文章】Jailhouse Hypervisor
Acwing 4301. Truncated sequence
Control Unit 控制部件
Kubedm series-00-overview
Haut OJ 1241: League activities of class XXX
Haut OJ 1321: mode problem of choice sister
CF1637E Best Pair
2022 极术通讯-Arm 虚拟硬件加速物联网软件开发
Maximum number of "balloons"
SAP-修改系统表数据的方法
Add level control and logger level control of Solon logging plug-in
剑指 Offer 53 - I. 在排序数组中查找数字 I
游戏商城毕业设计
Demonstration of using Solon auth authentication framework (simpler authentication framework)
[to be continued] I believe that everyone has the right to choose their own way of life - written in front of the art column