SpringCloudAlibaba - Feign 的性能調優


前言

記錄下Feign的性能調優方式,在微服務內部調用接口主要有RestTemplateFeign方式來實現,其都是Http

  • RestTemplate在微服務當中與注解@LoadBanlance注解結合使用, 可以通過服務名進行模塊之間的接口調用

  • Feign默認集成了ribbon,用它也可以通過服務名進行模塊之間的接口調用


RestTemplate 和 Feign

  • RestTemplateFeign的比較
角度 RestTemplate Feign
可讀性、可維護性 一般 極佳
開發體驗 欠佳 極佳
性能 很好 中等(RestTemplate的50%左右)
靈活性 極佳 中等(內置功能可滿足大多數需求)

Feign 的性能調優方式

配置連接池

默認情況下,feign使用urlconnection去請求,而urlconnection是沒有連接池的,feign除了可以使用urlconnection去發送請求還支持使用apachehttpclient以及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、響應狀態代碼及執行時間

- End -
白嫖有風險
點贊加收藏


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM