我是排队系统的新手。我正在使用当前应用程序的resque,我有三个队列来监控。我想知道什么是运行和管理resque工作的最佳方式。问题的原因是我对开发人员在互联网上建议的这么多选项感到有些困惑。更具体地说,我的困惑在于这两种策略。
如果我能独自管理上帝的工人,为什么我需要resque pool?
答案 0 :(得分:1)
Resque旨在处理后台作业,基本上用于处理在较短时间内保留在队列中的作业。
它成为延迟工作的替代品。当你的后台工作增加时,你应该选择Resque
在讨论监控之前,我会谈谈Resque的工作原理。
Resque拥有将取出作业并执行它们的进程,工作人员完成工作 并分叉一个将执行工作并退出的孩子。通常如此 每个作业一个分支是Resque默认提供的。
现在有各种各样的插件可以增强Resque的功能。 例如:Resque Pool,
为什么我们需要它以及何时:人们的要求就像一个工人每个叉子多个工作。 人们想要这些东西,所以这些插件很有用。
您可以关注给定链接哪些对我有帮助: Redis Persistence:http://redis.io/topics/persistence
Resis如何与Redis配合使用:http://girders.org/blog/2011/10/30/how-queuing-with-resque-works/
Resque-web:https://github.com/resque/resque-web
教程:http://www.sitepoint.com/simple-organized-queueing-with-resque/
多个redis服务器:What's the Point of Multiple Redis Databases?
redis的的数据库
Resque-scheduler:https://github.com/resque/resque-scheduler
用于管理员工的Resque-pool:https://github.com/nevans/resque-pool
Resque-multi-jobs-fork:https://github.com/stulentsev/resque-multi-job-forks
在生产中部署:How to deploy resque workers in production? 部署-resque - 工人 - 在生产?RQ = 1
答案 1 :(得分:-1)
正在运行的作业通常是异步任务。这意味着你不要等他们完成继续你的要求或任何称之为工作的事情。
由于作业性质是异步的,这可能意味着您在某些时候同时请求多个作业。由于CPU限制,这些作业将找到忙碌的CPU并等待或失败。
resque pool是一种让它们保持一致的方法,一次执行一个。如果它们失败,它们有时会进入重试模式等。
上帝是一个守护进程监控工具。它将监视作业' server'允许接受工作,但不一定处理失败,或按照他们进入的顺序处理工作等等。
尝试将所有这些封装成一个的好工具是sidekiq。还有一个关于它的railscast,它解释了如何使用它(即使它可能有点旧):http://railscasts.com/episodes/366-sidekiq