0

我正在决定如何编写在线拍卖应用程序。我想为网站用户提供实时更新。我的背景是 LAMP(尽管在我的例子中,'P' 对于 Perl 来说比 PHP 更适合)。我考虑过 ActiveMQ,但我想知道是否有更好的选择。

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

另一个问题是易于实施。在过去的几天里,我一直在阅读文档和教程,到目前为止,没有什么事情比处理后背有点痛苦,这实际上是导致我在这里寻求一些建议的原因。

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

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

很抱歉我没有更直接的问题,但是在看了几天的文档和教程之后,我比以往任何时候都更加迷茫!

4

1 回答 1

1

您的部分问题是您将各种概念混合在一起。如果我没看错,你有一个问题陈述:

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

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

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

  • RabbitMQ (AMQP)
  • 零MQ
  • Redis 发布/订阅

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

于 2011-11-29T15:54:07.873 回答