簡體   English   中英

Java中的異步Web請求?

[英]Asynchronous Web Requests in Java?

我正在用Java編寫一個簡單的Web爬蟲。 我希望它能夠每秒下載盡可能多的頁面。 是否有一個包使得Java中的異步HTTP Web請求變得容易? 我使用了HttpURLConnection但是阻塞了。 我也知道Apache的HTTPCore NIO中有一些東西,但我正在尋找更輕量級的東西。 我嘗試使用這個包,我在多個線程上使用HttpURLConnection獲得了更好的吞吐量。

一般來說,只要線程數低於1000,數據密集型協議在原始吞吐量方面往往比NIO的經典阻塞I / O要好一些。至少在客戶端基於HTTP的情況下就是如此(可能不完美且可能有偏見的Apache HttpClient使用的HTTP基准[1]

一個可以是好得多使用阻斷HTTP客戶端有螺紋,只要線程的數量是中度(<250)

如果您完全確定需要基於NIO的HTTP客戶端,我可以推薦Jetty HTTP客戶端,我個人認為這是目前最好的異步HTTP客戶端。

[1] http://wiki.apache.org/HttpComponents/HttpClient3vsHttpClient4vsHttpCore

雖然這個用戶沒有問同樣的問題,但您可能會發現他的問題的答案很有用: Java的異步HTTP客戶端

作為旁注,如果您要下載“盡可能多的每秒頁數”,您應該記住,爬蟲可能會無意中將弱服務器停止運行。 您可能應該閱讀“robots.txt”以及解釋此文件的相應方法,然后再在您自己的個人測試設置之外的任何內容上釋放您的創建。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM