实时拍卖更新 - Comet?龙卷风? ActiveMQ的?

时间:2011-11-28 05:37:09

标签: real-time comet activemq tornado updates

我正在决定如何撰写在线拍卖应用程序。我想为网站用户提供实时更新。我的背景是LAMP(虽然在我的情况下,'P'对Perl而言比PHP更多)。我考虑过ActiveMQ,但我想知道是否有更好的选择。

我主要关心的是可扩展性和速度。它可以同时进行几次拍卖,[希望]许多用户参与每次拍卖。无论我决定采用何种解决方案,都必须适应这种情况。当然,这一切都在理论上,所以我不知道我可能有多少并发用户,但我想有办法支持成千上万的用户。

另一个问题是易于实施。过去几天我花了很多时间阅读文档和教程,到目前为止,没有任何事情可以解决,只需要处理后方的一些痛苦,这实际上是让我在这里寻求建议的原因。

我希望使用Web框架,例如Codeigniter(PHP)或Catalyst(Perl),因为我打算向一两个承包商付款以帮助完成大部分编码,我喜欢有一个框架来在某种程度上强制执行设计模式。然而,我对此的看法越多,我就没有看到一个明显的解决方案:1)使用框架,2)提供实时拍卖更新(除了龙卷风,我猜 - 也许我正在回答我自己的问题。;))。

所以,尽管如此,没有使用轮询(我真的不想做),有没有办法可以使用像Perl或PHP这样的语言为我的服务器完成这些实时更新 - 边码?我知道ActiveMQ支持STOMP,我实际上在我的本地机器上工作(使用Jetty,因为它需要servlet来发布/使用来自客户端javascript的消息),但这里有更好的选择吗?

对不起,我没有更直接的问题,但经过几天查看文档和教程后,我比以往更加迷茫!

1 个答案:

答案 0 :(得分:1)

你的部分问题在于你将各种概念混合在一起。如果我正确地读了一些东西,你会有一个问题陈述:

我正在建立一个在线拍卖网站,并希望确保我的访问者能够实时更新他们正在查看的商品的价格。

现在,在浏览器和服务器之间你可能会使用Comet样式请求模式来处理通信,你也可以将socket.io看作备份模式。这个轮询将需要一个能够处理大量同时打开连接的服务器,Tornado是一个很好的候选者(还有其他人,但是考虑到你与龙卷风的关系,这很好)。

现在我们已经从1000多个浏览器转移到少数Tornado服务器,您需要一种在它们之间进行通信的方法。在最后一个发布/订阅消息模式中,您有几个选择:

  • RabbitMQ(AMQP)
  • ZeroMQ
  • Redis Pub / Sub

这三个都是一个很好的选择,有自己的优点/缺点。就我个人而言,我在不同的项目中使用过Redis和Rabbit,并且只是玩弄ZeroMQ。消息代理是一个完整的决策树,它将基于您可用的内容。

相关问题