摘要:對連接數(shù)的管理則有兩個維度,分別是全局最大數(shù)和單最大數(shù)。當請求一個連接時,會返回。而會維護與及存活時間等。最終用戶得到的是里封裝而成的連接對象。連接數(shù)達到閾值時對請求進行堵塞,并且將放入。
上圖時連接池類圖關(guān)系。
PoolingHttpConnectionManager:就是我們通常所說的連接池
CPool:實際池化連接保持者
RouteSpecificPool:與Route關(guān)聯(lián)的連接池
說明:
CPool與RouteSpecificPool里的連接均分為三種–available, leased和pending,分別對應空閑,占用和堵塞三種狀態(tài),連接池為這三種狀態(tài)建立三個列表(List/Set)。CPool對連接數(shù)的管理則有兩個維度,分別是全局最大數(shù)和單route最大數(shù)。CPool維護著route與RouteSpecificPool的關(guān)系。操作連接時,會先通過RouteSpecificPool進行操作,然后對CPool上進行操作。當PoolingHttpConnectionManager請求一個連接時,CPool會返回Future
連接獲取請求在沒有空閑連接但連接數(shù)沒達到閾值時通過連接池創(chuàng)建連接并池化放入available或者leased。leased連接數(shù)達到閾值時對請求進行堵塞,并且將Future
HttpResponse用HttpResponseProxy封裝,HttpResponseProxy同時包含了ConnectionHolder
HttpResponseProxy內(nèi)部會使用ResponseEntityProxy對HttpResponse及其entity作進一步封裝,封裝中包含ConnectionHolder,以便在調(diào)用releaseConnection,或者關(guān)閉entity關(guān)閉流時可以釋放連接到池中或不可復用時直接關(guān)閉。實際上當我們調(diào)用entity.getContent時,返回的是EofSensorInputStream裝飾過的InputStream,在stream close時里面會回調(diào)ResponseEntityProxy(實現(xiàn)了EofSensorWatcher)的streamClosed方法,從而調(diào)用connHolder.releaseConnection();實現(xiàn)連接的釋放。
參考:
http://hc.apache.org/ 文檔及源碼
http://blog.csdn.net/szwandcj...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/70742.html
摘要:若使用連接池的方式,來管理連接對象,能極大地提高服務的吞吐量。另外每個對應一個連接池,實現(xiàn)了在級別的隔離,若下游的某臺提供服務的主機掛了,無效的連接最多只占用該對應的連接池,不會占用整個連接池,從而拖垮整個服務。 背景 在做服務化拆分的時候,若不是性能要求特別高的場景,我們一般對外暴露Http服務。Spring里提供了一個模板類RestTemplate,通過配置RestTemplate...
摘要:壓縮和緩存機制可以有效地減少網(wǎng)絡訪問的流量,在提升速度和省電方面也起到了較大的作用。打開來分析一下,不了解和協(xié)議原理的請查看網(wǎng)絡編程一協(xié)議原理這篇文章。當然這次錯誤是正常的,百度沒理由處理我們的這次請求。 前言 上一篇我們了解了HTTP協(xié)議原理,這一篇我們來講講Apache的HttpClient和Java的HttpURLConnection,這兩種都是我們平常請求網(wǎng)絡會用到的。無論我們...
摘要:前言基于表單的遠程調(diào)用協(xié)議,采用的實現(xiàn),關(guān)于協(xié)議就不用多說了吧。后記該部分相關(guān)的源碼解析地址該文章講解了遠程調(diào)用中關(guān)于協(xié)議的部分,內(nèi)容比較簡單,可以參考著官方文檔了解一下。 遠程調(diào)用——http協(xié)議 目標:介紹遠程調(diào)用中跟http協(xié)議相關(guān)的設計和實現(xiàn),介紹dubbo-rpc-http的源碼。 前言 基于HTTP表單的遠程調(diào)用協(xié)議,采用 Spring 的HttpInvoker實現(xiàn),關(guān)于h...
摘要:在中也可以直接使用返回的是,然后通過來獲取結(jié)果阻塞線程,從中獲取結(jié)果四一點嘮叨非常的年輕,網(wǎng)絡資料不多,且代碼非常精細和復雜,目前來看底層應該是使用了線程池搭配進行異步通訊。 零 前期準備 0 版本 JDK 版本 : OpenJDK 11.0.1 IDE : idea 2018.3 1 HttpClient 簡介 java.net.http.HttpClient 是 jdk11 中正式...
閱讀 2401·2021-09-28 09:45
閱讀 3649·2021-09-24 09:48
閱讀 2323·2021-09-22 15:49
閱讀 3176·2021-09-08 16:10
閱讀 1656·2019-08-30 15:54
閱讀 2394·2019-08-30 15:53
閱讀 3076·2019-08-29 18:42
閱讀 2921·2019-08-29 16:19