2010-04-19 63 views
4

我的組織正在構建新版本的票務網站,並且正在尋找在購物路徑中的用戶數量超過特定限制時建立在線等候室的最佳方式。該隊列的最佳版本會讓新用戶在完成購買後或者在輸入路徑後超出超時限制。實施在線等候室

我想知道這是如何被其他組織實現的。有沒有人在那裏做過類似的事情或者有過這方面的經驗?我們有一些想法,但我想了解已經嘗試過的解決方案以及這些解決方案遇到的問題。

爲了完整起見,這個網站是在Ruby on Rails中構建的,儘管我很想聽聽人們如何解決這個問題,無論平臺如何。

編輯:澄清:隊列的需求主要不是減少負載,而是限制網絡購買門票相對於以其他方式購買的人的速度,如通過電話。

回答

6

在我爲此概述一種方法之前,我想指出你想做的事情沒有多大意義。網絡上的服務不像實體商店,在那裏我可以走路,看到它擁擠並決定留下或不留下。在您的網站上排隊的人讓我感到責備(不能或不願意充分提供資源)給我(懲罰我試圖使用您的網站)。

如果您銷售的是展示門票等數量有限且每件商品都綁在一個座位上的東西,我認爲最好是預訂商品,並在沒有及時支付時間的情況下超時。 Ticketmaster做到了這一點,我認爲這是一個比封鎖人們更好的解決方案。

如果你仍然想走上這條道路,那麼我會設計系統是這樣的:

當客戶來到您的網站,記錄他們的到達時間。當他們與網站互動時,記錄「上次看到」時間。 「最後看到」將用於確定活躍度。您需要非常頻繁地運行後臺作業以快速過期會話。

一旦你的限制被擊中,你有一個有序的隊列被阻止的人。隨着客戶完成交易或超時,您將標記隊列中的下一個人進入購買路徑。

對於排隊的用戶,他們的瀏覽器會定期發出請求,檢查是否讓他們進入。如果是,他們繼續購買路徑。如果否,他們繼續等待。

購買路徑需要一種機制來檢查是否有人試圖繞過您的等待區域並將其發回。

+0

我們有一個與此相關的系統需求(我們的第三方票務應用程序的座位服務器具有難以增加的會話數量限制)以及一項業務需求(爲了防止網絡用戶在第一次購買所有票據5分鐘,以便手機上的人也可以拍攝)。這並不意味着減少服務器負載。 我們有您描述的保留超時功能,這些功能會在購買路徑中啓用。這將是在進入該路徑之前對人排隊。 你對此非常感謝。謝謝,史蒂夫。 – saalon 2010-04-20 20:01:18

+0

我不認爲你需要跟蹤到達時間..你實際上可以跟蹤點擊的時刻來啓動購買過程。像Ticketek這樣的系統會設定一個嚴格的時間限制,從那時起票可以使用......所以一旦你開始,你有X分鐘來完成交易。 – 2010-04-21 01:36:13

2

您可能會感興趣Online queuing for ticketing guide。檢查他們的repository at GitHub

他們已經整合與Ruby On RailsPHP.NETiOSAndroid和類似的平臺。

隊列 - 它使您能夠通過將最終用戶卸載到聯機隊列中來控制網絡過載峯值。

當網站發生高峯流量事件時,在線隊列系統將用戶發送到用戶等待的虛擬候車室環境,並以其可以處理的速率重定向回網站。