用于即时前端反馈操作的队列系统(单个操作)

时间:2016-10-18 17:43:29

标签: design-patterns architecture queue multiprocessing beanstalkd

我已经编写了一个基于pheanstalk(beanstalkd)的队列管理器,我正在决定通过这个系统进行哪些类型的操作。队列管理器可以发送和读取3个不同的优先级管:快速,中速,慢速。

优先级的差异是执行时间。快速队列中的操作将具有最多的工作进程,并且应该在添加到队列后几乎立即执行。中等将减少工人数量,减少甚至更少。

我们的群众行动毫无疑问会在中速或慢速通道中排队。但是我们对单个记录(由一个到几个快速查询组成)也有单一操作,用户需要立即反馈。

初始非队列方法很简单:

  • 点击执行操作,ajax并等待响应,成功的直观表示。

队列的方式是:

  • Ajax操作,发送到队列,刷新可视化表示并希望队列系统在刷新数据之前完成执行操作

我可以增加快速队列的工作人员,以便管中永远不会有任何待处理的操作,但我永远无法保证在刷新数据之前完成操作。

这个问题有哪些常见的解决方案/模式?我宁愿在队列中运行所有内容。

1 个答案:

答案 0 :(得分:0)

使用Beanstalkd这非常简单 - 它有优先权。越接近0,优先级越高。

给定来自多个管/队列之一的两个作业,除非其他条件相同,否则将保留最接近0的优先级,并首先给出。

大多数工作人员都可以观看所有管子,无论如何他们总能获得最重要的工作。一小部分只监视fast管,因此总是有最重要的工作人员可用。如果没有足够的快速'工作,他们会得到中等或慢的工作。

我倾向于将优先级放在快速排队的工作中,例如500,中:1000,慢5000.我喜欢留下大的空白,知道其他东西可以插入如果需要就到位。