队列系统的即时前端反馈行动(单一行动)



我已经编写了一个基于pheanstalk (beanstald)的队列管理器,并且我正在决定将什么类型的操作通过这个系统。队列管理器可以发送和读取3个不同的优先级管道:快、中、慢。

优先级的差异是执行时间。快速队列中的操作将拥有最多的工作进程,并且应该在添加到队列后几乎立即执行。Medium需要更少的工人,slow需要更少的工人。

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

初始的非队列方法很简单:

  • 点击执行动作,ajax并等待响应,成功后显示。

使用queue的方法是:

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

我可以增加快速队列的工人,这样在管道中就不会有任何挂起的操作,但我永远无法保证操作将在数据刷新之前完成。

这个问题有什么常见的解决方案/模式?

对于Beanstalkd,这是非常微不足道的-它有优先级。

给定来自多个管道/队列中的一个的两个作业,在其他条件相同的情况下,最接近0的优先级将被保留,并首先给出。

大多数工人可以观看所有的管道,无论如何他们总是得到最重要的工作。一个小子集只监视fast管,因此总是有最重要的工作线程可用。如果没有足够的"快"的工作,他们会得到一个中等或慢的工作来代替。

我倾向于将放入快速队列的作业的优先级设置为500,中队列为1000,慢队列为5000。我喜欢留出很大的空白,以便在需要的时候可以插入其他东西。

相关内容

  • 没有找到相关文章

最新更新