1

この質問の一部は、正確に何を尋ねる必要があるのか​​さえわからないということです。そこで、状況から始めて、そこから解決していきます。

私が取り組んでいるプロジェクトの1つは、aspCometライブラリを介したCOMETの使用です。プログラムのユースケースは、いくぶん共同のスライドショーです。1人がその大部分を実行し、1人以上の参加者が特定のアクションを実行できます。画面上でアクションが実行されるまでの待ち時間が短い

以前は、1台のサーバーで実行されていました。今、パフォーマンス上の理由よりも信頼性のために、少しスケールアウトしたいと考えています。つまり、Rackspaceのクラウドにはいくつかのボックスがあり、楽しいものがすべてあります。

同じ「ショー」の異なる人々が異なるサーバー上にいる可能性があるため、COMETのものの動作にいくつかの変更を加える必要があることを最初から知っていました。また、「ショー」が何であるかを知る方法がありません。彼らはすでにサイトに到着するまで所属しています。

私は当初、WCFメッシュプロバイダーを使用してこれに取り組みましたが、最初は十分に文書化されていませんでしたが、メッセージのディスパッチが失われたり、遅延したりする問題が発生しています(何が起こっているのか100%わかりません)そこに)、しかしそれはCOMETの長いポーリングを台無しにし、かなり奇妙な方法で物事を壊します(ボタンをクリックするとイベントがトリガーされるか、10秒間ハングします{長いポーリング期間}、実際には何もしません)。

より多くの調査により、.Netサービスバスプロバイダーの1つが私が必要とすることを行う可能性があると私は信じています。ただし、必要なものをカバーする例が見つかりません。

  1. 単一障害点なし(データベース外)
  2. ピアのハードコーディングはありません。
  3. ほぼリアルタイム(ポーリングなし、イベントベースが最適)

私の理想的な解決策は、サーバーが起動したときに、他のサーバーにその存在を知らせ(テーブルのどこかの行であっても)、各サーバーが両方である状態で、相互にブロードキャストメッセージの送信を開始できるようにすることです。パブリッシャーとサブスクライバー。これは私がWCFメッシュプロバイダーにいくらか持っていたものですが、私はそのコードに過度に自信がありません。

誰かがこれで私を正しい方向に向けることができますか?この時点では、サービスバスプロバイダーのドキュメントで探すべき適切な用語でさえも良いでしょう。それとも、サービスバスは私が欲しいものではありませんか?この時点で、各WebサーバーにJabberサーバーをセットアップすることに決め、制約内に収まる場合はそれを使用します。

4

1 に答える 1

1

私は NServiceBus について多くを語ることはできませんが、答えは似たものになると思います。

  1. 単一障害点: MSMQ はマルチキャストを使用できます。つまり、各エンドポイントはその存在をブロードキャストし、DB テーブルは必要ありません。RabbitMQ は、この Exchange-to-Queue バインディング プロセスを使用します。つまり、Rabbit インスタンスまたはクラスターが稼働している限り、メッセージは存在し続けます。RabbitMQ はクラスター化できますが、MSMQ はクラスター化できません。*注意: Rackspace でのマルチキャストに問題があるかもしれませんが、それらがどのように機能するのかわかりません。その場合、(RabbitMQ ではなく) MSMQ のランタイム サービスにフォールバックする必要があります。これにより、すべてのユーザーが制御メッセージを調整するための単一のポイントを持つため、単一障害点が作成されます。

  2. ピアのハード コーディング: 上で少し説明しました。MSMQ のマルチキャストがそれを処理します。うさぎもできます。リッスンしたい交換にキューをバインドするだけです。MassTransit がこれを処理します。

  3. ほぼリアルタイム: どちらもほぼリアルタイムのメッセージングを使用します。メッセージ コンシューマ コードにポーリングはありません。

サービスバスは、あなたがしようとしていることに対する合理的な解決策のように思えます。もう少し詳細が必要になる可能性がありますが、一般的なメッセージング アプローチは正しいものです。RabbitMQ の上に何かが必要であり、Rabbit がほとんどのものを処理するように構成するだけであると判断した場合は、他の軽量メッセージング ライブラリがあります。

MassTransit の使用を開始するためのドキュメントがあります: http://readthedocs.org/projects/masstransit/とメーリング リストhttp://groups.google.com/group/masstransit-discuss。将来の質問があり、誰かがあなたを助けようとする場合は、メーリング リストに参加してください。

于 2011-12-29T15:32:21.007 に答える