ruby-on-rails – 选择Ruby on Rails作为基于浏览器的在线游戏的平台

对于类似Travian的在线策略游戏,我有一些(我认为)非常棒的想法.我还有一些内容尚未找到,还有一些我还不知道的其他挑战.

这是一个非常大的项目,对于一个不是熟练的Web开发人员的人来说可能太重了.我还是想试一试,但我在选择平台时遇到了麻烦.世界“尺度”最近被抛到了很多位置,我看到Ruby on Rails因为它不能很好地扩展而受到抨击,所以我来这里得到一些答案.

我喜欢Ruby on Rails,Ruby和Rails.我当然不是专家,但我喜欢和它合作.我之前也使用过Python Django以及PHP(我不喜欢它).

理想情况下,游戏将拥有每台服务器7000个玩家,可能每秒要处理大量数据. RoR仍然是一个可行的平台吗?

我很抱歉,如果这个问题含糊不清,我想我正在寻找一个“RoR很好,去吧!”那种答案.你想要添加的任何东西都很好.

谢谢!

解决方法

所以,如果我是你,我会研究像node.js这样的非阻塞服务器,因为它们更适合于长时间保持许多连接打开,这是游戏需要做的事情,与传统的网络相比服务器.

话虽如此

在扩展Web应用程序时,有三个主要问题需要担心;内存,执行速度和io(高清和网络)的顺序.

对于记忆来说,事情比过去好得多. Phusion Passenger在写入时使用copy来分叉其worker,因此rails环境将在给定切片上的所有worker之间共享,这是非常重要的.与“黑暗时代”相比,ruby管理内存的方式也有了很大的改进,如果你使用的是1.8.7,那么你想要使用组成Ruby Enterprise Edition的补丁(区别就像白天和黑夜) . 1.9.x几乎完全重写了运行时,所以如果你正在使用ruby已经解决的内存问题.

对于执行速度,1.8.7通常“足够快”(至少在调整垃圾收集设置之后). 1.9.2实际上与python的速度大致相同,这使得它在解释语言的速度更快.这一点的重要性完全取决于应用程序的性质.

最后一点是IO,这不是rails的关注点,而是更多的持久性策略. Rubyist倾向于喜欢新事物,所以你会发现redis和mongodb之类的一流支持,有很多人在谈论使用它们和他们的胜利/陷阱.如果我是你,我会调查mongo,看看是否可以接受耐久性权衡.

在进入rails之前我在java / .net中,并且在一天结束时你将为基础设施支付更多费用,但是在开发时间节省的金额将完全相形见绌.

相关文章

以下代码导致我的问题: class Foo def initialize(n=0) @n = n end attr_accessor :n d...
这是我的spec文件,当为上下文添加测试“而不是可单独更新用户余额”时,我得到以下错误. require 's...
我有一个拦截器:DevelopmentMailInterceptor和一个启动拦截器的inititializer setup_mail.rb. 但我想将...
例如,如果我有YAML文件 en: questions: new: 'New Question' other: recent: ...
我听说在RSpec中避免它,let,let !,指定,之前和主题是最佳做法. 关于让,让!之前,如果不使用这些,我该如...
我在Rails中使用MongoDB和mongo_mapper gem,项目足够大.有什么办法可以将数据从Mongoid迁移到 Postgres...