1

Nginxをリバースプロキシとして使用し、複数のRailsバックエンドを備えた三目並べゲームについて考えてみます。各クライアントは、いくつかのRailsバックエンドとのWebSocket接続をセットアップします。ゲームをプレイしている2人のクライアントがそれぞれ異なるRailsバックエンドに接続されている場合、次の図に示すように、一方のバックエンドに送信された移動をもう一方のバックエンドにルーティングして、もう一方のWebSocketにプッシュできるようにする必要があります。

Railsでは、2つのRailsバックエンド間で通信するための慣用的な方法は何ですか?

ここに画像の説明を入力してください

4

1 に答える 1

1

この状況では、個別のWebSocketサーバーをセットアップし、ユーザーとRailsサーバーの両方をそれに接続する必要があります。このようにして、シャーディングを気にすることなく、1つのサーバーからすべてのユーザーを処理できるようになります。

トラフィックが多い場合は、複数のWebSocketサーバーをセットアップし、それらの間に新しいメッセージを伝播するある種のキューまたはメッセージバスを実装することもできます。たとえば、伝播するメッセージのみを処理するマスターサーバーと、それに接続されて送信されるスレーブサーバーです。ユーザーから受信したすべてのメッセージ。このような構成では、マスターサーバーは、スレーブ間のメッセージの伝播のためだけにユーザーとサーバーからの接続を処理するべきではないことに注意してください。

最後に、最後の質問に直接答えると、通常、Railsサーバー間で直接連絡する必要はありません。WebSocketサーバーが要求/応答ベースでサービスを提供するのとは対照的に、ほとんどの場合、データベースを介して情報を交換するだけで十分です。本当にすぐに変更する必要がある場合は、AMQPなどのソリューションが役立つはずです。

于 2013-02-25T08:14:59.940 に答える