【问题标题】:Java Distributed Application - Message PassingJava 分布式应用程序 - 消息传递
【发布时间】:2012-03-24 15:17:03
【问题描述】:

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

我们不确定的是:

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

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

我们对合适协议的主要标准是可扩展性,其次是速度。

这是我们中的任何人第一次致力于任何类型的分布式应用程序。所以任何帮助将不胜感激:)

谢谢你:)

【问题讨论】:

    标签: java protocols message distributed


    【解决方案1】:

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

    我们的爬虫独立于工作人员工作。这样可以实现更好的可扩展性和性能。

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

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

    希望有用。

    拉克什

    【讨论】:

    • 谢谢 :) Indexer 模块目前正在使用 mongodb。 Map-Reduce 与简单的消息传递相比有哪些优势?目前,我们处理的不是机器集群,而是每个模块的单个计算机。我认为如果我们将单个模块的工作分配到多台机器上,以后会需要 map-reduce,对吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 2010-11-05
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多