4

Storm (IDE ではなくリアルタイム フレームワーク) を使用して webcrawler を構築することを評価しています。私のスパウトは URI のストリームを配信します。このストリームは、PHP で記述された最初の Bolt で呼び出して取得する必要があります。

node.js のバックグラウンドを持つ私は、コールバックを使用して、そのような機能を非ブロッキングの方法で構築できることを知っています。私の素朴な考えは、そのボルトに多くのタスクを構成するだけで、一部のタスクが応答を待っている間、リソースを完全に使用できるようにすることです。問題は、php が各プロセスに多くのリソースを割り当てることで悪名高いことです。Storm がそれを内部でどのように管理しているか、これが良いアイデアかどうかはわかりません。

この環境で node.js のような動作は可能ですか? それとも、この Bolt でそれを実現するために別の言語に切り替える必要がありますか (そうであれば、どうすればよいですか)?

4

1 に答える 1

1

Java ではありますが、Storm と非ブロッキング HTTP 呼び出しを使用する Web クローラーを作成しました。私たちはそれを本番環境で使用しており、かなりうまく機能しています。

スパウトから入ってくる URL のストリームがあり、それがクローラー ボルトにディスパッチされます。各ボルトはノンブロッキング HTTP リクエストを作成し、出力コレクターに結果を送信するコールバックを登録します。つまり、Storm でノンブロッキング IO を実行できます。

私は PHP の開発に詳しくないので、あまりコメントすることはできませんが、何をしようとも、プロセス間メッセージングのために、JVM ベースの言語に比べてパフォーマンスがかなり低下するでしょう。

注: 最近のバージョンの Storm では、出力コレクターはスレッド セーフではなくなりました。

于 2013-02-23T21:16:48.080 に答える