实施在线候诊室

时间:2010-04-19 18:36:26

标签: ruby-on-rails web queue

我的组织正在构建我们的售票网站的新版本,并且正在寻找在我们的购买路径中的用户数量超过特定限制时建立在线等候室的最佳方式。此队列的最佳版本将允许新用户在完成购买后完成购买或在输入路径后超过超时限制。

我正在尝试了解其他组织如何实施此功能。有人在那里做过类似的事情或有过这方面的经验吗?我们有一些想法,但我想了解一下已经尝试了哪些解决方案以及这些解决方案遇到了哪些问题。

为了完成,这个网站是用Ruby on Rails构建的,不过我喜欢听听人们如何解决这个问题。

编辑:澄清:对队列的需求主要不是为了减少负载,而是为了限制网络购买门票的速度相对于以其他方式购买的人,例如电话。

2 个答案:

答案 0 :(得分:6)

在我概述一种方法之前,我想指出你想要做的事情没有多大意义。网上的服务不像实体店,在那里我可以走路看到它拥挤并决定留下与否。在您的网站上排队的人会让我感到不安(因为无法或不愿意充分配置资源)给我带来责任(惩罚我试图使用您的网站)。

如果您销售的是演出门票,数量有限以及每个项目都与座位相关联,我认为如果没有及时付款,最好预订项目和超时。 Ticketmaster做到了这一点,我认为这比阻止门口的人更好。

如果您仍然希望沿着这条路走下去,那么我将设计这样的系统:

当客户来到您的网站时,请记录他们的到达时间。当他们与网站互动时,记录“最后一次”的时间。 “上次见过”将用于确定活跃度。您需要经常运行后台作业才能快速过期。

一旦达到限制,您就会有一个被阻止的有序队列。当客户完成交易或超时时,您将标记队列中的下一个人进入购买路径。

对于排队用户,他们的浏览器会定期发出请求,检查您是否已让他们进入。如果是,他们将进入购买路径。如果不是,他们会继续等待。

购买路径需要一种机制来检查是否有人试图绕过您的等候区,然后将其发回。

答案 1 :(得分:2)

您可能会发现Online queuing for ticketing guide很有帮助。检查他们的repository at GitHub

他们与Ruby On RailsPHP.NETiOSAndroid及类似平台进行了整合。

  

队列 - 通过将最终用户卸载到在线队列中,您可以在极端流量高峰期间控制网站过载。

     

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