Rails で低レイテンシのチェス アプリは可能ですか? Rails フレームワークは、主にステートレスであることを目指しています。
Rails でチェスを実装する 1 つの方法は、動き (「リクエスト」) を与え、データベースから現在の位置を読み取り、その動きが現在の位置で有効であることを確認し、新しい位置を計算し、その新しい位置をデータベースに書き込みます。 、そしてそれを他のプレイヤーに送信します。
これには、リクエスト間でメモリに何も保持されないため、ステートレスであるという利点があります。ただし、毎回データベースから現在の位置を取得する必要があります。そしておそらく、これはレイテンシーに大きな影響を与えるでしょう。
代わりに、ゲームの位置がメモリに保持されているとします。移動は、そのメモリ内の位置を更新し、他のプレイヤーに応答を送信します。その後、データベースが更新されます。ゲームが多くの Unicorn/Thin/Mongrel プロセスに分割されている場合、そのゲームの正しい Unicorn プロセスにリクエストをルーティングするにはどうすればよいでしょうか。Nginx/Lighty/Apache プロセスと Unicorn/Thin/Mongrel プロセスの間に、ゲームを正しい Unicorn シャードにマップするテーブルを持つ何らかのルーティング プロセスが必要ですか?
この種の問題は、他の多くの人が遭遇したに違いないものだと私は思います。Railsでこれを行う慣用的な方法はありますか?