2010-04-19 66 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和类似的平台。

队列 - 它使您能够通过将最终用户卸载到联机队列中来控制网络过载峰值。

当网站发生高峰流量事件时,在线队列系统将用户发送到用户等待的虚拟候车室环境,并以其可以处理的速率重定向回网站。