2021升級版微服務教程7-OpenFeign實戰開發和參數調優

2021升級版SpringCloud教程從入門到實戰精通「H版&alibaba&鏈路追蹤&日誌&事務&鎖」java

教程全目錄「含視頻」https://gitee.com/bingqilinpe...git

OpenFeign實戰開發和參數調優

OpenFeign基本使用

OpenFeign簡介

OpenFeign是一個聲明式的http客戶端,讓編寫web服務客戶端變的很是容易,只須要建立一個接口並在接口上添加註解便可,OpenFeign的前身是Feign,後者目前已經停更了,OpenFeign是SpringCloud在Feign的基礎上支持了Spring MVC的註解,並經過動態代理的方式產生實現類來作負載均衡並進行調用其餘服務。web

Ribbon+RestTemplate過於繁瑣,經過OpenFeign能夠簡化開發spring

基本使用

以用戶服務調用商品爲例

用戶服務配置 OpenFeign編程

  1. 導入依賴json

    <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-openfeign</artifactId>
            </dependency>
  2. 啓動類上加註解

    1594003407081

在商品服務中寫被調用接口(無參接口測試)網絡

image-20210106170542955

在用戶服務中 直接使用Feign寫服務調用app

  1. 建立一個普通的Java接口

    image-20210106164841421

  2. 經過註解聲明當前接口爲 Feign的客戶端

    image-20210106164857772

  3. 在Feign接口中 寫服務調用的方法

    image-20210106170626537

  4. 在用戶服務的Controller中使用Feign接口

    image-20210106170650566

  5. 啓動全部服務 兩個商品服務 一個用戶服務 註冊中心 訪問用戶服務觀察服務調用

    訪問用戶服務的Controller 能夠看到負載均衡的效果負載均衡

    image-20210106170751469

    image-20210106170805767

  6. 流程

    1594004633229

關於傳遞參數的處理
參數傳遞都是json 其實是RestFul的請求
  1. /{} 拼接參數性能

    1. 被調用接口示例【商品服務】

      image-20210106171156012

    2. Feign接口示例【用戶服務】

      image-20210106171220466

  2. ?拼接參數 對應常見請求類型Get請求

    1. 被調用接口示例【商品服務】

      image-20210106171304020

    2. Feign接口示例【用戶服務】

      image-20210106171415861

  3. 請求體傳遞參數 對應常見請求Post請求

    1. 被調用接口示例【商品服務】

      image-20210106171535072

    2. Feign接口示例【用戶服務】

      image-20210106171644918

開啓日誌

Feign 和 RestTemplate 不同 ,對請求細節封裝的更加完全,無論是請求仍是請求的參數,仍是響應的狀態都看不到,想要看到請求的細節須要經過Feign的日誌

Feign日誌的配置

1.配置類 @Bean

image-20200319112307671

@Bean
public Logger.Level feignConfig(){
    return Logger.Level.FULL;
}

2.在配置文件中開啓Feign接口所在包的日誌

image-20210106172033726

經過以上配置 重啓項目 再次使用Feign服務調用 就會看到以下日誌:

image-20200421164205211

image-20200421164257236

Feign參數調優

1. 替換OKHttp

在默認狀況下 spring cloud feign在進行各個子服務之間的調用時,http組件使用的是jdk的HttpURLConnection,沒有使用線程池。

有2種可選的線程池:HttpClient和OKHttp,比較推薦OKHttp,請求封裝的很是簡單易用,性能也很ok。

添加依賴

<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
</dependency>

修改配置文件

feign:
  okhttp:
    enabled: true
  httpclient:
    enabled: false
    max-connections: 1000
    max-connections-per-route: 100
max-connections:最大鏈接數

max-connections-per-route:每一個url的鏈接數

2. 開啓Feign請求響應壓縮

開啓壓縮能夠有效節約網絡資源,可是會增長CPU壓力,建議把最小壓縮的文檔大小適度調大一點

## 開啓Feign請求響應壓縮
feign.compression.request.enabled=true

feign.compression.response.enabled=true
## 配置壓縮文檔類型及最小壓縮的文檔大小
feign.compression.request.mime-types=text/xml,application/xml,application/json

feign.compression.request.min-request-size=2048

若是你以爲這篇內容對你挺有有幫助的話:

  1. 點贊支持下吧,讓更多的人也能看到這篇內容(收藏不點贊,都是耍流氓 -_-)
  2. 歡迎在留言區與我分享你的想法,也歡迎你在留言區記錄你的思考過程。
  3. 以爲不錯的話,也能夠關注 編程鹿 的我的公衆號看更多文章和講解視頻(感謝你們的鼓勵與支持🌹🌹🌹)

相關文章
相關標籤/搜索