2

1か月前、ここでF#エージェントを使用してTwitterStreamingAPIデータを処理および記録しようとしました。ちょっとした練習として、コードをWindowsAzureに転送しようとしています。

これまでのところ、私には2つの役割があります。

  • メッセージ(ツイートのjsonであるメッセージ)をキューに入れる1つのワーカーロール(パブリッシャー)。

  • キューからメッセージを読み取り、jsonをデコードし、データをクラウドテーブルにダンプする1つのワーカーロール(プロセッサー)。

これは多くの質問につながります:

  • 労働者の役割を代理人と考えても大丈夫ですか?
  • 実際には、メッセージは8 KBを超える可能性があるため、BLOBストレージを使用し、メッセージとしてBLOBへの参照を渡す必要があります(または別の方法がありますか?)。これはパフォーマンスに影響しますか?
  • 必要に応じて、プロセッサワーカーロールのインスタンスの数を増やすことができ、キューが魔法のように高速に処理されると言うのは正しいですか?

これらすべての質問をドキドキさせて申し訳ありません、あなたが気にしないことを願っています、

どうもありがとう!

4

3 に答える 3

3

大きなメッセージを透過的に処理できるLokad.Cloudという名前のオープンソースライブラリがあります。http://code.google.com/p/lokad-cloud/で確認できます。

于 2011-02-14T06:07:14.703 に答える
1
労働者の役割をエージェントとして考えても大丈夫ですか?

はい、間違いなく。

実際には、メッセージは8 KBを超える可能性があるため、BLOBストレージを使用し、メッセージとしてBLOBへの参照を渡す必要があります(または別の方法がありますか?)。これはパフォーマンスに影響しますか?

はい、あなたが話している手法を使用する(「JSONMessage-1」という名前のBLOBストレージにJSONを保存してから、「JSONMessage-1」の内容を持つキューにメッセージを送信する)のが標準的な方法のようです。 8KBを超えるメッセージをAzureで渡す。Azureストレージに対して2回ではなく4回の呼び出し(1回はキューメッセージの取得、1回はblobコンテンツの取得、1回はキューからの削除、1回はblobの削除)を行うと、処理速度が低下します。著しく遅くなりますか?おそらくそうではありません。Base64でエンコードしたときにかなりの数のメッセージが8KB未満になる場合(これはStorageClientライブラリの落とし穴です)、送信方法を決定するためのロジックを配置できます。

必要に応じて、プロセッサワーカーロールのインスタンスの数を増やすことができ、キューが魔法のように高速に処理されると言うのは正しいですか?

自己完結型でインスタンスが相互に干渉しないようにワーカーロールを記述している限り、そうです。インスタンス数を増やすとスループットが向上します。ロールが主にストレージの読み取りと書き込みのみである場合は、インスタンス数を増やしてコストを節約する前に、最初にワーカーロールをマルチスレッド化することでメリットが得られる可能性があります。

于 2010-09-13T21:51:18.363 に答える
0

労働者の役割を代理人と考えても大丈夫ですか?

これはそれを考えるのに最適な方法です。マクドナルドの労働者を想像してみてください。各ワーカーには特定のタスクがあり、メッセージ(音声)を介して相互に通信します。

実際には、メッセージは8 KBを超える可能性があるため、BLOBストレージを使用し、メッセージとしてBLOBへの参照を渡す必要があります(または別の方法がありますか?)。これはパフォーマンスに影響しますか?

メッセージが不変である限り、これが最善の方法です。文字列は非常に大きくなる可能性があるため、ヒープに割り当てられます。それらは不変であるため、参照を渡すことは問題ではありません。

必要に応じて、プロセッサワーカーロールのインスタンスの数を増やすことができ、キューが魔法のように高速に処理されると言うのは正しいですか?

プロセスが何をしているかを調べて、それがIOバウンドかCPUバウンドかを判断する必要があります。通常、IOバウンドプロセスでは、エージェントを追加することでパフォーマンスが向上します。エージェントにを使用している場合ThreadPool、CPUにバインドされたプロセスでも作業のバランスが非常によくなりますが、制限に達します。そうは言っても、アーキテクチャをいじって、各実行の結果を測定することを恐れないでください。これは、使用するエージェントの量のバランスを取るための最良の方法です。

于 2010-09-13T18:34:31.150 に答える