2012-03-24 11 views
0

私は現在、World Wide Webのコンテンツ抽出プログラムを構築中の大学のプロジェクトに取り組んでいます。このために、今まで2つのモジュールがあります。Webクローラーと、2つの別々のマシンで実行されるインデクサーです。私たちは作業が進むにつれてモジュールを追加する予定ですが、今のところ、メッセージのやり取りの何らかの形で2つの通信手段が必要です。私たちはよくわからない何Java分散アプリケーション - メッセージ受け渡し

は、以下の通りです:

(ⅰ)当社は、当社のアプリケーションは、同期メッセージパッシングを必要としないことを感じます。基本的に、クローラモジュールはWebページをクロールし、特定のページを訪れたときにIndexerモジュールを呼び出します。ですから、(JMSのような)いくつかの非同期プロトコルを選択するか、代わりに同期プロトコルを使用する利点がありますか?

(ii)現在、2台のマシン間で必要なデータ(URL)を渡すためのGoogleプロトコルバッファを使用してJMSを使用することを検討しています。これは適切でしょうか、それとももっと良い選択肢がありますか?

適切なプロトコルの主な基準はスケーラビリティとスピードです。

私たちがどんな種類の分散アプリケーションで作業しているのは初めてです。だから、任意の助けが最も高く評価されるだろう:)

ありがとう:)

答えて

1

をWebクローラーが黒上場のリストに追加するマルウェアのサイトを探していたところ、私は本当の数年前から同様のシステム上で働いていましたサイト(それはセキュリティ会社でした)。

私たちのクローラは、労働者から独立して働いていました。これにより、スケーラビリティとパフォーマンスが向上しました。

クローラは、データをDBに格納します。その後、ジョブは定期的に開始され、未処理のレコードが取得されます(私たちはステータスカラムを持っていたと思います)。そして、並行して処理するためにワーカースレッドに渡します。

これをやっていたら、mongodbのようなnosql DBとmap reduceアルゴリズムを使用します。

希望があります。

Rakesh

+0

ありがとう:Indexerモジュールは現在mongodbを使用しています。単純なメッセージの受け渡しよりもMap-Reduceの利点は何ですか?現在、私たちはマシンのクラスタ、モジュールごとの個々のコンピュータだけを扱っていません。単一のモジュールの作業を複数のマシンに分散するとmap-reduceが後で必要になると私は考えましたか? – arya

関連する問題