实时拍卖更新 - 彗星?龙卷风? ActiveMQ?

问题描述 投票:0回答:1

我正在决定如何编写在线拍卖应用程序。我想向网站用户提供实时更新。我的背景是 LAMP(尽管就我而言,“P”更多地代表 Perl,而不是 PHP)。我考虑过 ActiveMQ,但我想知道是否有更好的选择。

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

另一个问题是实施的难易程度。在过去的几天里,我一直在阅读文档和教程,到目前为止,没有什么比后面的麻烦更需要处理的了,这实际上是导致我来这里寻求一些建议的原因。

我希望使用 Web 框架,例如 Codeigniter (PHP) 或 Catalyst (Perl),因为我打算付费给一两个承包商来帮助完成部分编码工作,而且我喜欢拥有一个框架在某种程度上强制执行设计模式。然而,我越深入地研究这个问题,我只是没有看到一个明显的解决方案:1)使用框架,2)提供实时拍卖更新(我想除了龙卷风之外 - 也许我正在回答我自己的问题)问题。;)).

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

很抱歉,我没有更直接的问题,但经过几天的查看文档和教程后,我比以往任何时候都更加迷失!

real-time updates
1个回答
1
投票

您的部分问题在于您将各种概念混合在一起。如果我读得正确,你有一个问题陈述:

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

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

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

  • RabbitMQ(AMQP)
  • ZeroMQ
  • Redis 发布/订阅

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

© www.soinside.com 2019 - 2024. All rights reserved.