この質問の一部は、正確に何を尋ねる必要があるのかさえわからないということです。そこで、状況から始めて、そこから解決していきます。
私が取り組んでいるプロジェクトの1つは、aspCometライブラリを介したCOMETの使用です。プログラムのユースケースは、いくぶん共同のスライドショーです。1人がその大部分を実行し、1人以上の参加者が特定のアクションを実行できます。画面上でアクションが実行されるまでの待ち時間が短い
以前は、1台のサーバーで実行されていました。今、パフォーマンス上の理由よりも信頼性のために、少しスケールアウトしたいと考えています。つまり、Rackspaceのクラウドにはいくつかのボックスがあり、楽しいものがすべてあります。
同じ「ショー」の異なる人々が異なるサーバー上にいる可能性があるため、COMETのものの動作にいくつかの変更を加える必要があることを最初から知っていました。また、「ショー」が何であるかを知る方法がありません。彼らはすでにサイトに到着するまで所属しています。
私は当初、WCFメッシュプロバイダーを使用してこれに取り組みましたが、最初は十分に文書化されていませんでしたが、メッセージのディスパッチが失われたり、遅延したりする問題が発生しています(何が起こっているのか100%わかりません)そこに)、しかしそれはCOMETの長いポーリングを台無しにし、かなり奇妙な方法で物事を壊します(ボタンをクリックするとイベントがトリガーされるか、10秒間ハングします{長いポーリング期間}、実際には何もしません)。
より多くの調査により、.Netサービスバスプロバイダーの1つが私が必要とすることを行う可能性があると私は信じています。ただし、必要なものをカバーする例が見つかりません。
- 単一障害点なし(データベース外)
- ピアのハードコーディングはありません。
- ほぼリアルタイム(ポーリングなし、イベントベースが最適)
私の理想的な解決策は、サーバーが起動したときに、他のサーバーにその存在を知らせ(テーブルのどこかの行であっても)、各サーバーが両方である状態で、相互にブロードキャストメッセージの送信を開始できるようにすることです。パブリッシャーとサブスクライバー。これは私がWCFメッシュプロバイダーにいくらか持っていたものですが、私はそのコードに過度に自信がありません。
誰かがこれで私を正しい方向に向けることができますか?この時点では、サービスバスプロバイダーのドキュメントで探すべき適切な用語でさえも良いでしょう。それとも、サービスバスは私が欲しいものではありませんか?この時点で、各WebサーバーにJabberサーバーをセットアップすることに決め、制約内に収まる場合はそれを使用します。