2013-02-17 179 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

回答