2021升級版SpringCloud教程從入門到實戰精通「H版&alibaba&鏈路追蹤&日誌&事務&鎖」java
教程全目錄「含視頻」:https://gitee.com/bingqilinpeishenme/Java-Wikigit
OpenFeign實戰開發和參數調優
OpenFeign基本使用
OpenFeign簡介
OpenFeign
是一個聲明式的http客戶端,讓編寫web服務客戶端變的很是容易,只須要建立一個接口並在接口上添加註解便可,OpenFeign的前身是Feign,後者目前已經停更了,OpenFeign是SpringCloud在Feign的基礎上支持了Spring MVC的註解,並經過動態代理的方式產生實現類來作負載均衡並進行調用其餘服務。web
Ribbon+RestTemplate過於繁瑣,經過OpenFeign能夠簡化開發spring
基本使用
以用戶服務調用商品爲例編程
用戶服務配置 OpenFeignjson
-
導入依賴網絡
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
-
啓動類上加註解app
在商品服務中寫被調用接口(無參接口測試)負載均衡
在用戶服務中 直接使用Feign寫服務調用性能
-
建立一個普通的Java接口
-
經過註解聲明當前接口爲 Feign的客戶端
-
在Feign接口中 寫服務調用的方法
-
在用戶服務的Controller中使用Feign接口
-
啓動全部服務 兩個商品服務 一個用戶服務 註冊中心 訪問用戶服務觀察服務調用
訪問用戶服務的Controller 能夠看到負載均衡的效果
-
流程
關於傳遞參數的處理
參數傳遞都是json 其實是RestFul的請求
-
/{} 拼接參數
-
被調用接口示例【商品服務】
-
Feign接口示例【用戶服務】
-
-
?拼接參數 對應常見請求類型Get請求
-
被調用接口示例【商品服務】
-
Feign接口示例【用戶服務】
-
-
請求體傳遞參數 對應常見請求Post請求
-
被調用接口示例【商品服務】
-
Feign接口示例【用戶服務】
-
開啓日誌
Feign 和 RestTemplate 不同 ,對請求細節封裝的更加完全,無論是請求仍是請求的參數,仍是響應的狀態都看不到,想要看到請求的細節須要經過Feign的日誌
Feign日誌的配置
1.配置類 @Bean
[@Bean](https://my.oschina.net/bean) public Logger.Level feignConfig(){ return Logger.Level.FULL; }
2.在配置文件中開啓Feign接口所在包的日誌
經過以上配置 重啓項目 再次使用Feign服務調用 就會看到以下日誌:
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
若是你以爲這篇內容對你挺有有幫助的話:
-
點贊支持下吧,讓更多的人也能看到這篇內容(收藏不點贊,都是耍流氓 -_-)
-
歡迎在留言區與我分享你的想法,也歡迎你在留言區記錄你的思考過程。
-
以爲不錯的話,也能夠關注 編程鹿 的我的公衆號看更多文章和講解視頻(感謝你們的鼓勵與支持🌹🌹🌹)