2011-11-28 30 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。消息代理是一個完整的決策樹,它將基於您可用的內容。