應該有一個邊界對象 - 保存一組訪問並等待抓取URL。 應該有一些線程負責抓取網頁。 也會有某種控制器對象來創建爬行線程。最快的多線程網絡爬蟲體系結構
我不知道什麼架構會更快,更容易擴展。如何儘可能少的同步來分配責任,並且最小化檢查當前URL是否已經被訪問的次數。
控制器對象是否應該負責爲工作線程提供新的URL - 這意味着工作線程需要抓取所有給定的URL,然後睡眠時間不確定。控制器將解釋這個線程,所以爬行線程應該處理InterruptedException
(它在Java中的代價是多少 - 似乎異常處理不是很快)。 或者,也許控制器應該只啓動線程並讓線程自行抓取邊界?