私は 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を超えています。
ありがとう。