如何处理有限数量的项目的多个请求?

时间:2015-10-05 10:41:15

标签: algorithm design-patterns scalability

我的网站包含100本可用图书。

但是在同一时刻,我有101个要求保留这本书的请求。如何处理这种情况?

2 个答案:

答案 0 :(得分:1)

Robert Hanmer's book Patterns for Fault Tolerant Software有一种称为资源排队的模式(46)

  

存储无法在队列中立即处理的服务请求[...]。给队列一个有限的长度,以提高请求在到达行首时仍然很重要的可能性。

     

当请求是计算机生成的并且必须按顺序处理时,应使用先进先出(FIFO)队列。当人们生成请求时,队列应该使用后进先出(LIFO,也称为堆栈)策略(如在STALE之前的新工作(55))来管理插入和删除。这将有助于人们获得良好的服务。最后放在队列中的请求会认为他们收到了很好的服务,并且在队列中放置最长请求的人可能已经放弃了。

     

在EQUITABLE RESOURCE ALLOCATION(45)的指导下分配资源应该既识别已排队的请求,又识别新鲜且从未排队的请求。

答案 1 :(得分:0)

您应该有一个等候名单表,其中包含候补名单/预留请求,其中包含订阅者号码,书籍ID和请求的时间。然后,当返回其中一本书籍时 - 触发一个程序,将所释放的书籍分配给最早的候补请求,并通知提出此请求的订阅者。

除了触发器,您还可以拥有每天每天/每天运行两次的预定作业,并检查是否有任何等待登记的书籍现在可用。如果可用,它会将图书分配给对该图书有最旧候补请求的订阅者。

如果您的系统负载不重,请使用触发器,否则使用预定作业并将其计入非高峰时段。