前言
記錄下Feign的性能調優方式,在微服務內部調用接口主要有RestTemplate和Feign方式來實現,其都是Http的
-  
RestTemplate在微服務當中與注解@LoadBanlance注解結合使用, 可以通過服務名進行模塊之間的接口調用 -  
Feign默認集成了ribbon,用它也可以通過服務名進行模塊之間的接口調用 
RestTemplate 和 Feign
RestTemplate和Feign的比較
| 角度 | RestTemplate | Feign | 
|---|---|---|
| 可讀性、可維護性 | 一般 | 極佳 | 
| 開發體驗 | 欠佳 | 極佳 | 
| 性能 | 很好 | 中等(RestTemplate的50%左右) | 
| 靈活性 | 極佳 | 中等(內置功能可滿足大多數需求) | 
Feign 的性能調優方式
配置連接池
默認情況下,feign使用urlconnection去請求,而urlconnection是沒有連接池的,feign除了可以使用urlconnection去發送請求還支持使用apache的httpclient以及okhttp去發送請求
httpclient 連接池配置
pom.xml
<!-- httpclient -->
<dependency>
	<groupId>io.github.openfeign</groupId>
    <artifactId>feign-httpclient</artifactId>
</dependency>
 
        application.yml
# 自定義配置 feign 日志級別
feign:
  httpclient:
    # 使用 apache httpclient做請求,而不是默認的 urlconnection
    enabled: true
    # feign的最大連接數
    max-connections: 200
    # feign單個路徑的最大連接數
    max-connections-per-route: 50
 
        okhttp 連接池配置
pom.xml
<!-- okhttp -->
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-okhttp</artifactId>
    <version>10.1.0</version>
</dependency>
 
         
         
        application.yml
feign:
  httpclient:
    # feign的最大連接數
    max-connections: 200
    # feign單個路徑的最大連接數
    max-connections-per-route: 50
  okhttp:
    # 使用 okhttp 做請求,
    enabled: true
 
        - 連接池的配置對性能的提升大概在
15%左右 
設置合適日志級別
feign的日志級別
| 級別 | 打印內容 | 
|---|---|
| NONE(默認值) | 不記錄任何日志 | 
| BASIC | 僅記錄請求方法、URL、響應狀態代碼以及執行時間 | 
| HEADERS | BASIC級別的基礎上,記錄請求和響應的header | 
| FULL | 記錄請求和響應的header、body和元數據 | 
feign默認不打印任何日志,生產環境建議設置日志級別為BASIC,僅記錄請求方法、URL、響應狀態代碼及執行時間
 
        