2011-11-28 52 views
0

我正在决定如何编写在线拍卖应用程序。我想为网站用户提供实时更新。我的背景是LAMP(尽管在我的情况下,'P'会比Perl更适合Perl)。我考虑过ActiveMQ,但我想知道是否有更好的选择。实时拍卖更新 - 彗星?龙卷风? ActiveMQ的?

我的主要担忧是可扩展性和速度。它可以同时进行多次拍卖,[希望]许多用户参与每次拍卖。无论我决定采取哪种解决方案都不得不适应这种情况。当然,这在理论上是全部的,所以我不知道我可能拥有多少并发用户,但是我希望能够支持数以万计的用户。

另一个问题是易于实施。过去几天我一直在阅读文档和教程,到目前为止,没有什么比后面的任何事情都难以应付,这实际上是我在这里寻求一些建议的原因。

我希望能够使用Web框架,如Codeigniter(PHP)或Catalyst(Perl),因为我打算支付一两个承包商来帮助一些大部分的编码,我喜欢这个想法有一个框架来有点强制设计模式。然而,我越看到这一点,我只是没有看到一个明显的解决方案,1)使用框架,2)提供实时拍卖更新(除了Tornado,我猜 - 也许我正在回答我自己的问题题。 ;))。

因此,尽管如此,缺乏使用轮询(我并不真正感兴趣的做法),有没有一种方法可以使用Perl或PHP等语言为我的服务器完成这些实时更新端代码?我知道ActiveMQ支持STOMP,而且我实际上已经在我的本地机器上工作了(使用Jetty,因为它需要一个servlet来发布/使用来自客户端JavaScript的消息),但是这里有更好的选择吗?

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

回答

1

你的问题的一部分是你将各种概念混合在一起。如果我正确地阅读东西,您有一个问题声明:

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

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

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

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

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