我目前正在开展一个大学项目,我们正在为万维网构建内容提取器。为此,到目前为止,我们有两个模块:一个Web爬虫和一个将在两台独立机器上运行的Indexer。我们计划在我们的工作进展中添加更多模块,但是现在,我们需要在2之间进行某种形式的消息传递。
我们不确定的是:
(i)我们认为我们的应用程序不需要同步消息传递。基本上,爬网程序模块会在访问特定页面时对网页进行爬网并调用Indexer模块。那么我们应该继续选择一些异步协议(如JMS),还是使用同步协议有一些优势呢?
(ii)我们目前正在考虑使用JMS,可能使用谷歌协议缓冲区来传递2台机器之间的必要数据(URL)。这是否合适,还是有更好的选择?
我们对合适协议的主要标准是scalabilty,其次是速度。
这是我们第一次使用任何类型的分布式应用程序。所以任何帮助都会非常感激:)
谢谢:)
答案 0 :(得分:1)
我们的爬虫独立于工人。这样可以获得更好的可扩展性和性能。
抓取工具将数据放入数据库。然后,作业将定期启动并获取未处理的记录(我认为我们有一个状态列),然后传递给工作线程以便并行处理。
如果我今天要这样做,我会使用像mongodb这样的nosql数据库和一些map reduce算法。
希望这很有用。
勒凯什