2012-03-24 23 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

相关问题