RabbitMQ与GAE比较

3

我正在编写一款实时移动游戏,需要进行实时消息交换,但不知道该选择RabbitMQ还是GAE。我知道GAE是一个有效的解决方案,可以让我的编程速度更快,因为几乎所有东西都已经实现了,但从长远来看,我不知道是否愿意支付那些非常高昂的费用——因此我考虑在自己的服务器上实现其他消息交换服务,所以我正在考虑RabbitMQ。

令我担忧的是,RabbitMQ节点可以添加到群集中,但如果GAE使用1000个实例,处理相同负载需要多少个RabbitMQ节点,因为我真的不想在集群中有1000个节点,这意味着我必须租用1000个VPS。

因此,我试图确定需要多少RabbitMQ节点(在群集中)才能处理100万用户。我正在尝试将其与Google Appengine实例进行比较。假设我的GAE应用程序应处理以下内容:

  • -每秒10,000个请求
  • -1000个运行实例

我知道我们不能真正比较这些,但无论如何,让我们做一下吧。我想了解以下问题:

1. 我想处理10,000个请求/秒(每个请求需要一个持久连接,需要至少1-10分钟):

a) 需要多少GAE实例才能做到这一点?

b) 需要多少RabbitMQ群集中的节点才能工作?

2. 我想与1000个GAE实例的RabbitMQ进行比较:

a) 1个GAE实例与1个RabbitMQ群集节点相比能做多少工作?

3. 你会选择哪个:

a) 我知道你们都会说GAE,因为它非常容易使用,已经准备好了等等。

b) 但换个角度,我们愿意支付所有这些费用吗?更不用说Google有一些限制,就像作者在这里讨论的那样:http://www.carlosble.com/2010/11/goodbye-google-app-engine-gae/

感谢您提供的宝贵答案。

2个回答

5
GAE 不可与 RabbitMQ 相比,你的问题几乎毫无意义。RabbitMQ 只是传输消息,你可能需要设置更多基础设施来支持你的使用情况。GAE 是完整的基础设施。也就是说,RabbitMQ 每秒可以处理大量消息。
也许你想为移动游戏制作 API,并提供一些应用逻辑来处理这些消息。你不会让游戏客户端连接到你的 RabbitMQ 服务器并直接与其他客户端通信。
在 GAE 上,通常有请求和即时响应。如果你需要持续更长时间的连接,并允许你向游戏客户端推送消息(不使用 APN 等),你可能需要考虑 XMPP 或 WebSockets,因此你需要其他东西来补充或代替 GAE。也许 Cloud Endpoints 值得一看。
现在已经解决了博客文章中提到的一些限制。
我认为您需要更多地关注需求和架构,这样您将对技术选择有更好的了解。选择像RabbitMQ这样的特定AMQP服务器是在您已经决定使用消息传递、如何使用消息传递、看到AMQP作为消息传递解决方案(ZeroMQ、XMPP是一些替代方案)并需要找到快速高效的AMQP服务器之后做出的决策。

嗨。首先,让我说一下,我们不能真正将GAE与RMQ进行比较,但我仍然想了解有关GAE实例的更详细答案 - 每个实例有多强大,可以处理多少请求与RMQ相比。是的,我已经决定使用消息传递,但现在我必须确保它可以像GAE一样美丽地扩展。 - eleanor
一些毫无用处且不准确的胡言乱语,没有任何实际数据来支持它:一个GAE实例可能会处理1到400个请求每秒,这取决于并行性、IO使用和您对平台的适应程度。单个RMQ实例可能会处理每秒4000到20000条消息,并且您可以设置群集以获取更多。 - tesdal
嗨tesdal,如果你能提供一个真正的答案,用一些数字来回答(也许是CPU / RAM / Disk比较),尽可能准确,我会非常乐意接受你的答案,因为这正是我所问的。顺便说一下:你已经提供的数字确实是我在寻找的。谢谢。 - eleanor

1

嗨,从你的部分来看,答案真的不需要太麻烦。你应该比较一下我提到的这两种技术,而不仅仅是发布某个Twitter消息的链接。 - eleanor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接