閱讀17 返回首頁    go 技術社區[雲棲]


《HttpClient官方文檔》2.1 連接持久性-2.2 HTTP連接路由

2.1. 連接持久性

一個主機與另一個主機建立連接的過程是相當複雜的,並且涉及兩個端點之間的多個分組交換,這可能相當耗時。尤其是對於較小的HTTP消息來說,連接握手的開銷是很大的。如果打開的連接能夠重用於執行多次請求,就可以實現更高的數據吞吐量。

HTTP/1.1協議規定每個缺省的HTTP連接都可以重用於多次請求。 符合HTTP/1.0協議的端點同樣可以通過一種機製明示它們的優先權來維持連接的可用性並將其用於多次請求。
HTTP代理還可以維持空閑連接存活一段時間,以防後續請求需要用到同一目標主機的連接。 通常稱維持連接存活的能力為連接持久性,HttpClient完全支持這種能力。

2.2. HTTP連接路由

HttpClient能夠直接或通過可能包含多個中間連接的路由-也稱為跳轉來建立到目標主機的連接。HttpClient 將連接路由區分為平麵路由,隧道路由和分層路由。使用多個中間代理來隧接到目標主機被稱為代理鏈。

平麵路由通過連接到目標主機或僅一次的代理來建立。隧道路由通過代理鏈連接到首個隧道從而到達目標主機來建立。不通過代理的路由不能成為隧道路由。分層路由通過已有連接上麵的分層協議來建立。 隻有在到達目標主機的隧道,或者不通過代理的直連之上,協議才能被分層。

2.2.1. 路由計算

RouteInfo接口表示通過一個或多個中間步驟或跳轉最終到達目標主機的的路由信息。HttpRoute是RouteInfo接口的具體實現類, 這個類是不能被修改的(不可變的)。HttpTracker是RouteInfo接口的可變實現類,由HttpClient在內部使用於追蹤到最終路由目標主機的剩餘跳轉數。HttpTracker類可以在成功執行跳轉到下一個路由目標之後被更新。HttpRouteDirector類是一個幫助類,可用於計算路由中的下一步, 這個類在HttpClient內部使用。

HttpRoutePlanner是一個接口,表示基於執行上下文來計算到給定目標的完整路由的策略。HttpClient使用了兩個默認的HttpRoutePlanner接口實現類。 其中SystemDefaultRoutePlanner類是基於 java.net.ProxySelector類,默認情況下,它從係統屬性或運行應用程序的瀏覽器中獲取JVM的代理設置。而DefaultProxyRoutePlanner實現類不會使用任何的JAVA係統屬性,也不會使用係統或瀏覽器的代理設置。它總是通過同樣的默認代理來計算路由。

2.2.2. 安全的HTTP連接

如果在兩個連接端點之間傳輸的信息不能被未經授權的第三方讀取或篡改,那麼HTTP連接可被認為是安全的。最普遍使用SSL / TLS協議這種技術確保HTTP傳輸安全性,不過也可以采用其他加密技術。一般HTTP傳輸通過SSL/TLS加密過的連接來分層。

轉載自 並發編程網 - ifeve.com

最後更新:2017-05-19 11:31:49

  上一篇:go  《Spring Data 官方文檔》7. 映射
  下一篇:go  《Spring Data 官方文檔》4.6 定製Spring Data倉庫實現