亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Apache HttpClient源碼分析之連接池

YFan / 3062人閱讀

摘要:對連接數(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。而CPoolEntry會維護ManagedHttpClientConnection與HttpRoute及存活時間等。最終用戶得到的是PoolingHttpConnectionManager里封裝而成的連接對象CPoolProxy。
連接獲取請求在沒有空閑連接但連接數(shù)沒達到閾值時通過連接池創(chuàng)建連接并池化放入available或者leased。leased連接數(shù)達到閾值時對請求進行堵塞,并且將Future放入pending。其他請求釋放連接時會喚醒堵塞請求,被喚醒的請求獲取到連接后會被從pending列表中移除。

獲取連接

釋放連接

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

相關(guān)文章

  • Http請求連接-HttpClient的AbstractConnPool源碼分析

    摘要:若使用連接池的方式,來管理連接對象,能極大地提高服務的吞吐量。另外每個對應一個連接池,實現(xiàn)了在級別的隔離,若下游的某臺提供服務的主機掛了,無效的連接最多只占用該對應的連接池,不會占用整個連接池,從而拖垮整個服務。 背景 在做服務化拆分的時候,若不是性能要求特別高的場景,我們一般對外暴露Http服務。Spring里提供了一個模板類RestTemplate,通過配置RestTemplate...

    gself 評論0 收藏0
  • Android網(wǎng)絡編程2HttpUrlConnection和HttpClient

    摘要:壓縮和緩存機制可以有效地減少網(wǎng)絡訪問的流量,在提升速度和省電方面也起到了較大的作用。打開來分析一下,不了解和協(xié)議原理的請查看網(wǎng)絡編程一協(xié)議原理這篇文章。當然這次錯誤是正常的,百度沒理由處理我們的這次請求。 前言 上一篇我們了解了HTTP協(xié)議原理,這一篇我們來講講Apache的HttpClient和Java的HttpURLConnection,這兩種都是我們平常請求網(wǎng)絡會用到的。無論我們...

    cfanr 評論0 收藏0
  • dubbo源碼解析(二十六)遠程調(diào)用——http協(xié)議

    摘要:前言基于表單的遠程調(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...

    xiyang 評論0 收藏0
  • 淺析 jdk11 中 HttpClient 的使用

    摘要:在中也可以直接使用返回的是,然后通過來獲取結(jié)果阻塞線程,從中獲取結(jié)果四一點嘮叨非常的年輕,網(wǎng)絡資料不多,且代碼非常精細和復雜,目前來看底層應該是使用了線程池搭配進行異步通訊。 零 前期準備 0 版本 JDK 版本 : OpenJDK 11.0.1 IDE : idea 2018.3 1 HttpClient 簡介 java.net.http.HttpClient 是 jdk11 中正式...

    Eminjannn 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<