1

Rails 是否可以实现低延迟的国际象棋应用程序?Rails 框架主要面向无状态的 afaik。

在 Rails 中实现国际象棋的一种方法是给出一个移动(“请求”),从数据库中读取当前位置,检查移动在当前位置是否有效并计算新位置,将该新位置写入数据库,并将其发送给其他玩家。

这具有无状态的优点,因为请求之间的内存中没有任何内容。但它涉及每次都从数据库中获取当前位置。大概这将对延迟产生重大影响。

假设相反,游戏的位置保留在内存中。移动会更新内存中的位置并向其他玩家发送响应。之后更新数据库。如果游戏在许多 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 回答