托管高流量的Facebook应用程序(游戏)

时间:2010-05-22 14:43:23

标签: ruby-on-rails ruby facebook high-load

我们目前正在开发高流量的facebook应用程序。所有流量将在一个月内,其中有500.000到1.000.000预期用户。 在那个月之后,游戏结束了,我们有一个胜利者 - 所以应用程序将被存档。

我们目前正计划使用ruby on rails开发应用程序并搜索可以处理流量的托管选项。问题不在于用户,而在于峰值:我们将在短时间内每天发出大约500,000个请求(假设在最坏的情况下在3分钟内)

我们期待该应用程序的500.000到1.000.000用户,在下午1:00(GMT + 1时区)达到峰值,其中大多数(高达80%的用户)将发送大部分请求。请求是从6月11日到11.july - 之后,应用程序/游戏关闭/结束。

我们目前正在开发一种积极的缓存机制 - 目前我们正在考虑将处理负载的2或3个小型应用程序/ Web服务。

负载分配如下: a)主要应用程序,缓存数据(11个屏幕,每个200k) b)投票:每天直到下午1:00(时区GMT + 1) - 每个用户投票发送大约10k数据,高并发峰值!

的问题:

  • 是否有可推荐的特定应用程序设置?
  • 是否有可以推荐的托管合作伙伴?

谢谢!

2 个答案:

答案 0 :(得分:3)

如果您提供的内容全部被缓存,那么您很好,一些nginx实例可以提供几乎无限的静态页面。

投票听起来不太好,因为它应该同时发生。 高并发负载的新热点似乎是node.js,但我对此没有任何经验。

我确实认为投票实际上不会做太多,所以不要做一个完整的rails堆栈调用,试着写一个小机架方法来完成投票。这样可以避免加载ActionController,ActionView以及如果您在纯SQL中将数据写入数据库,也可以使用ActiveRecord。

答案 1 :(得分:2)

查看一些自动扩展云计算解决方案,例如EC2的AutoScaling http://aws.amazon.com/autoscaling/,您可以设置EC2何时为您启动新实例的参数。

如果您真的要小心,可以构建一个僵尸网络来模拟您网站的流量http://www.talcottsystems.com/articles/build-your-own-botnet-with-ec2-and-capistrano-to-load-test-your-server-cluster-before-launch/