2012-03-24 26 views
0

我目前正在研究一個大學項目,其中我們正在爲萬維網構建一個內容提取器。爲此,到目前爲止,我們有兩個模塊:一個Web爬行器和一個將在2個獨立機器上運行的索引器。我們計劃在我們的工作進展中添加更多模塊,但現在,我們需要在某種形式的消息傳遞之間進行通信。Java分佈式應用程序 - 消息傳遞

我們不確定什麼,如下:

(一)我們覺得我們的應用程序並不需要同步的消息傳遞。基本上,抓取程序模塊會抓取網頁並在訪問特定頁面時調用Indexer模塊。那麼我們應該繼續並選擇一些異步協議(如JMS),還是使用同步協議有一些優勢? (ii)我們目前正在考慮使用JMS,可能有google協議緩衝區,用於在兩臺機器之間傳遞必要的數據(URL)。這是否合適,還是有更好的選擇?

我們的合適協議的主要標準是可伸縮性,其次是速度。

這是我們第一次在任何類型的分佈式應用程序上工作。因此,任何幫助將是非常讚賞:)

謝謝:)

回答

1

我在幾年前工作了類似的系統真正在網絡爬蟲在尋找惡意軟件的網站添加到上市黑色名單網站(這是一家安全公司)。

我們的爬行器獨立於工作人員工作。這允許更好的可伸縮性和性能。

爬蟲將數據放入數據庫。然後一個工作會定期啓動並獲取未處理的記錄(我認爲我們有一個狀態列),然後傳遞給工作線程並行處理。

如果我今天要做到這一點,我會使用像mongodb這樣的nosql DB和一些map reduce算法。

希望這很有用。

Rakesh

+0

謝謝你:)索引器模塊目前使用的是mongodb。 Map-Reduce比簡單消息傳遞有什麼優點?目前,我們沒有處理機器羣集,而是每個模塊單個計算機。我認爲如果我們將單個模塊的工作分佈在多臺機器上,稍後需要map-reduce,對嗎? – arya 2012-03-24 07:03:08

相關問題