javascript
Spring Cloud Feign 使用Apache的HTTP Client替换Feign原生httpclient
http 連接池能提升性能
http 的背景原理
a. 兩臺服務(wù)器建立 http 連接的過程是很復(fù)雜的一個過程,涉及到多個數(shù)據(jù)包的交換,并且也很耗時間。
b. Http 連接需要的 3 次握手 4 次分手開銷很大,這一開銷對于大量的比較小的 http 消息來說更大。
優(yōu)化解決方案
a. 如果我們直接采用 http 連接池,節(jié)約了大量的 3 次握手 4 次分手;這樣能大大提升吞吐率。
b. feign 的 http 客戶端支持 3 種框架;HttpURLConnection、httpclient、okhttp;默認(rèn)是HttpURLConnection。
c. 傳統(tǒng)的 HttpURLConnection 是 JDK 自帶的,并不支持連接池,如果要實現(xiàn)連接池的機制,還需要自己來管理連接對象。對于網(wǎng)絡(luò)請求這種底層相對復(fù)雜的操作,如果有可用的其他方案,也沒有必要自己去管理連接對象。
d. HttpClient 相比傳統(tǒng) JDK 自帶的 HttpURLConnection,它封裝了訪問 http 的請求頭,參數(shù),內(nèi)容體,響應(yīng)等等;它不僅使客戶端發(fā)送 HTTP 請求變得容易,而且也方便了開發(fā)人員測試接口(基于 Http 協(xié)議的),即提高了開發(fā)的效率,也方便提高代碼的健壯性;另外高并發(fā)大量的請求網(wǎng)絡(luò)的時候,還是用“連接池”提升吞吐量。
案例實現(xiàn)
1.添加相關(guān)的依賴
添加httpClient的依賴,同時添加Feign對HttpClient的支持
?
1.修改配置文件
在配置文件中開啟feign對httpClient的設(shè)置。
注意:如果使用 HttpClient 作為 Feign 的客戶端工具。那么在定義接口上的注解是需要注意,如果傳遞的是一個自定義的對象(對象會使用 json 格式來專遞)。需要制定類型。
consumes=MediaType.APPLICATION_JSON_VALUE)
?
例子:
總結(jié)
以上是生活随笔為你收集整理的Spring Cloud Feign 使用Apache的HTTP Client替换Feign原生httpclient的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 寒假作业5
- 下一篇: IDEA 创建 SpringCloud项