Java分布式应用程序-消息传递



我目前正在进行一个大学项目,我们正在为万维网构建一个内容提取器。为此,到目前为止,我们有两个模块:一个是Web爬网程序,另一个是Indexer,它将在两台独立的机器上运行。随着工作的进展,我们计划添加更多的模块,但现在,我们需要两个模块之间的某种通信方式,某种形式的消息传递。

我们不确定的是:

(i) 我们觉得我们的应用程序不需要同步消息传递。基本上,爬网程序模块对网页进行爬网,并在访问特定页面时调用Indexer模块。那么,我们应该继续选择一些异步协议(如JMS),还是使用同步协议有一些优势?

(ii)我们目前正在考虑使用JMS,可能使用谷歌协议缓冲区在两台机器之间传递必要的数据(URL)。这是否合适,或者有更好的选择吗?

我们制定合适协议的主要标准是规模,其次是速度。

这是我们第一次开发任何类型的分布式应用程序。因此,任何帮助都将不胜感激:)

谢谢:)

几年前,我在一个类似的系统上工作过,当时网络爬虫正在寻找恶意软件网站,将其添加到黑名单网站列表中(这是一家安全公司)。

我们的爬行器独立于工人工作。这允许更好的可扩展性和性能。

爬网程序将数据放入数据库。然后,一个作业会定期启动,获得未处理的记录(我认为我们有一个状态列),然后传递给工作线程进行并行处理。

如果我今天要这样做,我会使用像mongodb这样的nosqlDB和一些map reduce算法。

希望这是有用的。

Rakesh

相关内容

最新更新