24

私は ASP.NET MVC と C# を使用しています。リアルタイムでデータを転送するために SignalR を見つけましたが、signalR にはいくつかの制限があります。

この問題によると

バックプレーンを使用すると、最大メッセージ スループットは、クライアントが単一のサーバー ノードと直接通信する場合よりも低くなります。これは、バックプレーンがすべてのメッセージをすべてのノードに転送するため、バックプレーンがボトルネックになる可能性があるためです。この制限が問題になるかどうかは、アプリケーションによって異なります。たとえば、いくつかの典型的な SignalR シナリオを次に示します。

  • サーバー ブロードキャスト (例: 株価情報): サーバーがメッセージの送信速度を制御するため、バックプレーンはこのシナリオに適しています。
  • クライアントからクライアントへ (例: チャット): このシナリオでは、メッセージの数がクライアントの数に比例する場合、バックプレーンがボトルネックになる可能性があります。つまり、より多くのクライアントが参加するのに比例してメッセージのレートが増加する場合です。
  • 高頻度のリアルタイム (リアルタイム ゲームなど): このシナリオでは、バックプレーンは推奨されません。

私のプロジェクトでは、高頻度リアルタイム (例: リアルタイム ゲーム) が必要です。

また、リアルタイムのビデオチャットが必要です

私のシナリオ:

マスターサーバーと複数のスレーブサーバーがあり、クライアントはスレーブサーバーに接続し、スレーブサーバーはマスターサーバーに接続します。

例 : サーバー Slave-1 とサーバー Slave-2 がマスター サーバーに接続され、クライアント A とクライアント B がスレーブ 1 に接続され、クライアント C とクライアント D がスレーブ 2 に接続されます。

client-A はメッセージまたはデータを送信するか、client-D とのライブ チャットで

このシナリオをどのように実装できますか?

【アップデート-1】

その問題にsignalRを使用しない場合、何を使用すればよいですか?

【追記-2】

私のシナリオでは、マスター サーバーはルーターのように機能し、スレーブ サーバーはスイッチのように機能します。クライアントはスイッチに接続され、スイッチはルーターに接続されます。クライアント A がクライアント C にデータ パケットを送信する場合、データ パケットはルーターに送信され、ルーターはデータ パケットを処理する必要があります。2000 以上の可能なスレーブ サーバーの数と各サーバーのユーザー数それは10,000を超えています。

ありがとう。

4

1 に答える 1