1

Rails で低レイテンシのチェス アプリは可能ですか? Rails フレームワークは、主にステートレスであることを目指しています。

Rails でチェスを実装する 1 つの方法は、動き (「リクエスト」) を与え、データベースから現在の位置を読み取り、その動きが現在の位置で有効であることを確認し、新しい位置を計算し、その新しい位置をデータベースに書き込みます。 、そしてそれを他のプレイヤーに送信します。

これには、リクエスト間でメモリに何も保持されないため、ステートレスであるという利点があります。ただし、毎回データベースから現在の位置を取得する必要があります。そしておそらく、これはレイテンシーに大きな影響を与えるでしょう。

代わりに、ゲームの位置がメモリに保持されているとします。移動は、そのメモリ内の位置を更新し、他のプレイヤーに応答を送信します。その後、データベースが更新されます。ゲームが多くの Unicorn/Thin/Mongrel プロセスに分割されている場合、そのゲームの正しい Unicorn プロセスにリクエストをルーティングするにはどうすればよいでしょうか。Nginx/Lighty/Apache プロセスと Unicorn/Thin/Mongrel プロセスの間に、ゲームを正しい Unicorn シャードにマップするテーブルを持つ何らかのルーティング プロセスが必要ですか?

この種の問題は、他の多くの人が遭遇したに違いないものだと私は思います。Railsでこれを行う慣用的な方法はありますか?

4

1 に答える 1

0

これらすべてを、RabbitMQ や Redis などのメッセージ キューに保存してみませんか? メッセージ キューは永続的でパフォーマンスに優れています。この Railscast では、beanstalkd (別のメッセージ キュー) を使用して、非常によく似たアプリを紹介しています: http://railscasts.com/episodes/243-beanstalkd-and-stalker

于 2013-02-17T09:18:50.317 に答える