異なるタスク/役割を持つ複数のマシンで実行する必要があるアプリケーションを開発していますが、同期されています (一部のマシンが異なる世界を処理し、1 つのマシンがチャットとインベントリを処理し、他のマシンが着信ネットワークを処理する、ある種の負荷分散 (ゲーム) サーバー)接続...)。
最初に、アプリケーション インスタンスは相互に TCP 接続を作成する必要があります。しかし、これを C# で実装するにはどうすればよいでしょうか。
異なるタスク/役割を持つ複数のマシンで実行する必要があるアプリケーションを開発していますが、同期されています (一部のマシンが異なる世界を処理し、1 つのマシンがチャットとインベントリを処理し、他のマシンが着信ネットワークを処理する、ある種の負荷分散 (ゲーム) サーバー)接続...)。
最初に、アプリケーション インスタンスは相互に TCP 接続を作成する必要があります。しかし、これを C# で実装するにはどうすればよいでしょうか。
まず、正しいゲームサーバーに接続できる負荷分散サーバーが必要です。これがおそらくアーキテクチャの最も弱い点です。DNSラウンドロビンと複数のロードバランサーを使用することで、リスクを制限できます。
すべてのサーバーが同じネットワーク上に配置されている場合は、UDPブロードキャストを使用して、ロードバランサーがすべてのゲームサーバーを自動的に検出できるようにすることができます。パケットは「ねえ、私はインベントリサーバーです、私に接続します」のようになります。負荷分散サーバーは、ゲームサーバーの監視にのみ使用されるTCP接続を作成します(CPU使用率など、サーバーを確認するため)あまり仕事をしません)。