2013-02-17 181 views
1

Rails是一个低延迟的国际象棋应用吗? Rails框架主要面向无状态afaik。具有低延迟的Chess Rails应用程序可能吗?

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

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

相反,假设游戏的位置保持在内存中。移动会更新内存中的位置并向其他玩家发送响应。之后数据库被更新。如果游戏在许多Unicorn/Thin/Mongrel流程中分裂,那么请求将如何路由到该游戏的正确Unicorn流程。我需要在我的Nginx/Lighty/Apache进程和我的Unicorn/Thin/Mongrel进程之间进行一些路由处理,这些进程有一张将游戏映射到正确的Unicorn碎片的表格?

这种类型的问题让我感到很多其他人必须遇到的问题。有没有一种习惯的方式在Rails中做到这一点?

+1

我不认为在RAM中存储游戏状态是一个好主意 - 没有dbms提供的持久性,您的数据可能会丢失时间......你为什么认为从数据库获取游戏状态会给出低延迟? – 907th 2013-02-17 08:55:50

+0

我的意思是暗示更新RAM中的游戏状态后,数据库也会更新。我编辑我的帖子来添加。 – user782220 2013-02-17 09:03:19

+0

对我来说,似乎db延迟不会成为这种应用程序的问题。如果你想异步数据库操作 - 所以你最好看看[EventMachine](https://github.com/eventmachine/eventmachine)或[node.js](http://nodejs.org/)+ websockets协议 – 907th 2013-02-17 09:25:20

回答