2010-03-06 38 views
12

我们正在开发一个Web应用程序,其中约50%的写请求最终将数据推送到多个数据存储,并在这些数据存储中插入和更新大量记录。为了提高响应时间,我们希望在后台异步处理这些请求。Resque or Gearman - 为后台作业选择正确的工具

我们的Web应用程序正在用Ruby on Rails编写。

我倾向于的两种解决方案是Resque和Gearman。

Resque:更多的信息在这里:http://github.com/blog/542-introducing-resque Resque似乎非常适合Ruby,它专门用于后台作业处理。 “后台作业可以是任何响应执行的Ruby类或模块,您现有的类可以很容易地转换为后台作业,或者可以专门创建新的类来完成工作。” Gearman:它不是专门用于异步处理的后台作业,但这是它绝对可以做到的事情。显然更强大,或者看起来如此。 Gearman的另一个优点是,虽然您的客户端代码可能位于Ruby中,但工作者代码可以位于,比方说PHP中。虽然现在我们完全是Ruby on Rails应用程序,但谁知道在将来我们是否可能想要使用PHP或其他功能取决于手头的工作。

你会推荐什么?你有两种经验吗?在选择两者之间时,我应该记住哪些现实生活中的挑战?我甚至在这里比较苹果和苹果?

+2

我不同意封闭状态。 Q格式良好,并有足够的细节以提供正确的答案。辩论是受欢迎的,应该为解决方案提供更多的观点。 – michaelbn 2013-10-23 06:24:03

回答

2

我在使用Gearman时有一些经验,当时我正在寻找可以为异步提供工作负载分布的分布式分叉机制。在集群环境中处理。

我可以告诉你,在异步处理分派到2台机器(每台机器上2名工人= 4名工人)的“模拟”情况下工作。不是在真实情况下(无论告诉你什么)。当“模拟”提供有用的信息时,将实施真实的案例场景。

您要选择的机制只是工作负载分配中的一个因素,因此确保在并行工作的分布式“工作人员”开始在数据存储区上写入时,不会以损坏或无效数据结束。

我会建议采取我所做的“模拟”方法,并在决定使用哪一个之前进行测试。

问候,

+0

谢谢安德烈亚斯。我同意,我们将在开发/模拟环境中工作一段时间,然后将其部署到生产环境中。 – Nishith 2010-03-06 11:57:54